robot snapshot Log 紀錄
目前共有 6 種 robot_snapshot operation,涵蓋 API 與背景任務。
| Operation | Phase | 觸發來源 | 記錄時機 |
|---|---|---|---|
create_task_request | selected | 一般建立、工程師建立、returnHome、autoCharge、RobotKeeper | Robot 選定後、TaskHistory 建立前 |
create_task_by_library | selected | by-library API | Robot assignment 驗證後、TaskHistory 建立前 |
task_cancel | before_reset | 取消任務 API、院內返藥局流程 | 清除 robot task 資訊前 |
task_continue | before_queue | 藥車 continue API | Robot 驗證完成、下一段 queue 建立前 |
hospital_return_to_pharmacy | evaluating | Hospital ReturnToErPharmacy | 逐台判斷返回或等待前 |
rmf_dispatch | before_dispatch | TaskQueue 背景派送 | 通過 RMF readiness 檢查、呼叫 RMF 前 |
對應 API
create_task_request:
POST /api/v1/tasksPOST /api/v1/tasks/create-by-engineerPOST /api/v1/tasks/returnHomePOST /api/v1/tasks/autoCharge
此外,RobotKeeper 自動充電也會觸發,但不是 HTTP API。
create_task_by_library:
POST /api/v1/tasks/by-library
task_cancel:
PATCH /api/v1/tasks/:taskId/cancel- Hospital 流程內部取消原任務時也會觸發
task_continue:
POST /api/v1/tasks/:taskId/continue- ReturnToErPharmacy 特殊 continue 會提前轉入 hospital 流程,因此不會產生
task_continue,但會在取消原任務時產生task_cancel
hospital_return_to_pharmacy:
POST /api/v1/cmp/messages/hospital- 僅
ReturnToErPharmacyaction - 每台找到的 active-task robot 各一筆
MissionContinues目前不記錄 snapshot
rmf_dispatch:
- 沒有直接對應 API
- TaskQueue 背景 worker 真正派送任務到 RMF 時觸發
- 一般任務、continue、returnHome、autoCharge、院內返藥局任務都可能觸發
每筆 snapshot 欄位
event: robot_snapshot
operation
phase
capturedAt
source
taskId
bookingId
triggerSource
taskLibraryId
destinationStation
action
robot.id
robot.name
robot.batteryPercent
robot.location.levelName
robot.location.x
robot.location.y
robot.location.heading
robot.destination
robot.destinationLocation
資料來源:
source: mongo:任務建立、取消、continuesource: mongo+redis:Hospital 與 RMF dispatch 有取得 Redis robot state 時- Redis 電量及位置優先於 Mongo
robot.destination是 Mongo station 名稱robot.destinationLocation是 Redis/RMF path endpoint 座標
常見事件序列
一般建立並派送:
create_task_request:selected
→ rmf_dispatch:before_dispatch
Continue:
task_continue:before_queue
→ rmf_dispatch:before_dispatch
Hospital 移動中 robot 返回藥局:
hospital_return_to_pharmacy:evaluating
→ task_cancel:before_reset
→ create return task
→ rmf_dispatch:before_dispatch
目前所有記錄點都在操作完成前,因此表示「當時準備執行的 robot 狀態」,不代表後續操作一定成功。