本卡屬 FR-167(母卡 CM-3241),卡 P1-3a,階段 P1 升級變安全、批 1。只改 jedi-python-package。依賴:無。
主系統與 Agent 之間的心跳要多三件事:主系統可以說「暫停派新任務」(升級前排空)、可以告訴 Agent「你該升到哪一版、包多大」、Agent 可以回「我升成功或失敗」。套件改完直接發 beta 版給主系統用。
Agent 與主系統的對外約定,一次定完;第一期(停派)與第四期(升級)都靠它
extend:RemoteAgentAdapters 加 dispatch_gate(None=照常)與 update_extra;心跳收 upgrade_result 照 heartbeat_console.py 白名單收法;不動任務邏輯
repo:~/Projects/Jedicogy/module/jedi-python-package
改既有:jedi_remote_agent/app/service/agent_enrollment_service.py(心跳回應組裝、收欄位)
改既有:jedi_remote_agent/plugin/adapters.py(兩個 port)
細節在 design.md §5 對應段(~/Projects/Billows/Audit-Manager/compliance-manager-be/docs/features/FR-167-2610-online-update-channel/design.md,開 design.html 看導覽);本段只列本卡要做到的點:
plugin/adapters.py RemoteAgentAdapters 加 dispatch_gate: Callable[[], bool] | None = None(None=照常派)與 update_extra: Callable[[agent], dict | None] | None = None。agent_enrollment_service.py 心跳回應組裝:dispatch_gate() 回 False 時 pending_tasks=[] 但結果照收;回應多 update 欄(update_extra(agent) 的回傳或 null)。upgrade_result: {version, status: succeeded|failed, error, at} 照 heartbeat_console.py 白名單收法,寫 remote_agents.last_upgrade_version/last_upgrade_status/last_upgrade_at(套件自己的 migration 加三欄)。1.9.0b1,poetry publish -r nexus;回寫寫版號。dispatch_gate 回 False 時心跳不帶 pending 任務但照收結果(test);回應含 update: {target_version, bundle_sha256, size} 或 null;收到 upgrade_result 寫 remote_agents.last_upgrade_*;既有 tests 綠;版號 bump 到 1.9.0b1 並 poetry publish -r nexus(決策者授權發 beta),回寫寫明版號
對照雛形:~/Projects/Billows/Audit-Manager/compliance-manager-be/docs/features/FR-167-2610-online-update-channel/prototype/index.html(上方「跟著走」)。