スカイプランナーのデータ構造 #
タイムログに入る前に、Skyplannerのデータ構造とその仕組みについて少し説明しましょう。これらはすべて後ほど説明します。
Skyplannerに注文/作業指示/仕事のデータを統合している場合、少なくともこれらのAPIエンドポイントを使用している可能性が高いです:
- フェーザー・オーダー
- フェザー順序列
- フェイザー・ジョブズ
事実上、これらのエンドポイントに挿入されたデータは、スカイプランナーのUIでこのように表現されます:
Skyplannerにオーダーを挿入した後、それらをProduction Schedulingモジュールにエクスポートします(これはUIまたは/phaser-orders/export-endpointから行うことができます):
オーダーをエクスポートする際、Skyplannerはオーダーデータを1つのデータベーステーブルから別のテーブルへ効果的にコピーします。そのため、例えば/phaser-orders-endpointで何かを変更した場合、Production Schedulingで更新するためにデータを再度エクスポートする必要があります。これは、プロダクションスケジューリングウィンドウに表示されるオーダーにアクセスするために、異なるAPIエンドポイントを使用しなければならないことも意味します!
変更された」エンドポイントは次のようになる:
なぜなら、/timelogs -エンドポイントを使ってプロダクション・イベントなどを記録する場合、Production Scheduling -エンドポイントにある関連エンティティを使用しなければならないからです!
例えば、新しいタイムログをPOSTするには、production_planning_job_idが 必要です(もう一度言いますが、production_planning_jobsは/jobs -endpointからアクセスされるエンティティです):
必要なproduction_planning_job_idは、/phaser-jobs -endpointから見つけることができます:
または/job -endpointから:
REST-APIを使ったタイムログの作成 #
APIを通してSkyplannerにタイムログを作成する場合、UIと同じルールとシステムを使用します。そのため、APIで使用する前に、UIでシステムがどのように機能するのかを理解しておくとよいでしょう。
タイムログの基本 #
Skyplannerには4つのタイムログイベントタイプがあります:
- シフト開始
- 休止中
- 続き
- シフト・エンド
Shift_begin-eventは、ジョブが初めて開始されたときに送られる。 各ジョブに対して1つ以上のshift_beginイベントを送信しないでください!
Paused-eventはジョブを一時停止する。
Continued-eventは一時中断していた仕事を再開する。
Shift_endで終了。 各ジョブに1つ以上のshift_endイベントを送信しないこと!
タイムログに必要なデータ:
- パーソンID
- people-endpointから見つけることができる。
- user_idとは異なる!
- 計画ワークステーションID
- 作業を行うワークステーション
- workstations-endpointから見つけることができる。
- 日時
- イベントが行われた時点
- フォーマット2024-01-01 10:30:11
Skyplannerのタイムログと、使用している外部システムのタイムログを紐付けるには、external_id フィールドを使用します。例えば、Skyplannerから特定のタイムログを見つけるために、このidを使ってGETリクエストを行うことができます。
仕事を始める #
APIにこのようなPOSTリクエストを送ることで、ジョブを開始することができる:
タイムログのPOSTデータを設定する際、workshift_idを 0、timelog_finalizedを trueに設定する。
ジョブの一時停止 #
以下のようなPOSTリクエストを送信して、ジョブを一時停止する:
一時停止タイプのタイムログでは、金額と faulty_amountを設定することができる。また、タイムログのタイプと date_timeにも注意してください。
仕事の継続 #
ここでは、一時停止したタイムログを継続する方法を説明します:
shift_endイベントによって終了したジョブを継続しようとすると、エラーが発生することに注意してください。
仕事の終了 #
以下は、shift_end timelogによるジョブの終了方法である:
shift_end-eventsでは、paused-eventsと同様にamountと faulty_amountの 値を指定することができます。実行されていないジョブに対してshift_end-eventを実行しようとすると、エラーが発生することに注意してください。
タイムログの更新 #
以下のように、/timelogs-endpointにPUTリクエストを送ることで、タイムログデータを更新することができます:
更新を行うには、beginTimelogと endTimelogの 両方のデータがセットされている必要があります。Skyplannerのタイムログはこのように保存されます:それぞれの “full”(開始と終了の両方を持つタイムログ)(例:shift_begin/continued & paused/shift_end)タイムログは、開始と終了のために別々のエンティティを持っています。
endTimelogのbegin_idと endTimelogのbegin_idは 対になっている。上の例では、beginTimelogのid値は1なので、endTimelogのbegin_id 値は1になります。
また、person_idと endTimelogの 値は、変更しない場合でも、更新リクエストのたびに指定する必要があります。
タイムログの代替方法 #
APIを使用して求人にログインする別の方法をいくつか紹介します。
ログフル #
タイムログの開始と終了の両方を1回のリクエストで送信したい場合は、/timelogs/log-full-endpointを次のように使用します:
最初の “amount “値は故障金額を表し、2番目の “amount “値は金額を表す。このリクエストは、beginlogとendlogエンティティを1つのリクエストで作成する。
クイックログ #
「クイックログ “は1回のリクエストでジョブを完了させ、完了した商品の量を注文アイテムに設定された値と一致させます。クイックログは/timelogs/quick-log-endpointを使って行われます:
ここでは、production_planning_job_id、planned_workstation_id 、person_idのみを指定すればよいことに注意してください。時間と金額の値は自動的に入力されます。また、quicklogされたジョブは常にshift_end-eventで完了するため、quicklog後にそれ以上のログを記録することはできないことに注意してください!