robot snapshot Log 紀錄

目前共有 6 種 robot_snapshot operation,涵蓋 API 與背景任務。

OperationPhase觸發來源記錄時機
create_task_requestselected一般建立、工程師建立、returnHome、autoCharge、RobotKeeperRobot 選定後、TaskHistory 建立前
create_task_by_libraryselectedby-library APIRobot assignment 驗證後、TaskHistory 建立前
task_cancelbefore_reset取消任務 API、院內返藥局流程清除 robot task 資訊前
task_continuebefore_queue藥車 continue APIRobot 驗證完成、下一段 queue 建立前
hospital_return_to_pharmacyevaluatingHospital ReturnToErPharmacy逐台判斷返回或等待前
rmf_dispatchbefore_dispatchTaskQueue 背景派送通過 RMF readiness 檢查、呼叫 RMF 前

對應 API

create_task_request

  • POST /api/v1/tasks
  • POST /api/v1/tasks/create-by-engineer
  • POST /api/v1/tasks/returnHome
  • POST /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
  • ReturnToErPharmacy action
  • 每台找到的 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:任務建立、取消、continue
  • source: 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 狀態」,不代表後續操作一定成功。