From 5d3fc425f5fd3b74bb821b233dc29d396596be04 Mon Sep 17 00:00:00 2001 From: Your Name Date: Thu, 2 Jul 2026 13:43:28 +0800 Subject: [PATCH] feat(awooop): complete commander inserted work ledger --- .../awoooi_priority_work_order_readback.py | 26 +++++++++++++++++++ ...awoooi_priority_work_order_readback_api.py | 21 ++++++++++----- docs/LOGBOOK.md | 11 ++++++++ ...r-inserted-requirements-priority-ledger.md | 14 +++++++--- 4 files changed, 62 insertions(+), 10 deletions(-) diff --git a/apps/api/src/services/awoooi_priority_work_order_readback.py b/apps/api/src/services/awoooi_priority_work_order_readback.py index 07d5a6bd..e413336b 100644 --- a/apps/api/src/services/awoooi_priority_work_order_readback.py +++ b/apps/api/src/services/awoooi_priority_work_order_readback.py @@ -568,6 +568,19 @@ _COMMANDER_INSERTED_REQUIREMENT_WORK_ITEMS: list[dict[str, Any]] = [ "next_action": "更新工作狀態盤點並納入本節新 P0。", "mapped_workplan_id": "P0-010", }, + { + "id": "CIR-P1-OPENCLAW-001", + "priority": "P1", + "order": 42, + "status": "in_progress", + "lane": "openclaw_live_ops_space", + "request": "OpenClaw 要有像 Gather Town 的工作畫面,而且是持續動畫。", + "normalized_work_item": "OpenClaw Live Ops Space:animated room、agent avatars、flow packets、work tokens、scene-state API、desktop/mobile smoke。", + "current_state": "/zh-TW/openclaw/live-ops-space route 已存在;仍需 production desktop/mobile animation smoke 與 AwoooP 導流。", + "acceptance": "production smoke 證明動畫持續更新、scene API 可讀、desktop/mobile 無重疊;AwoooP 工作台可導向此視覺面。", + "next_action": "跑 OpenClaw live-ops desktop/mobile smoke,補 AwoooP 導流與截圖證據。", + "mapped_workplan_id": "P1-006", + }, { "id": "CIR-P2-OBS-001", "priority": "P2", @@ -594,6 +607,19 @@ _COMMANDER_INSERTED_REQUIREMENT_WORK_ITEMS: list[dict[str, Any]] = [ "next_action": "先出 no-write design / rollback / smoke verifier。", "mapped_workplan_id": "P0-006", }, + { + "id": "CIR-P2-UX-002", + "priority": "P2", + "order": 44, + "status": "in_progress", + "lane": "ai_professional_workbench_ux", + "request": "不要又是一大堆文字頁 / 文字牆,要像主流網站與專業 AI 產品。", + "normalized_work_item": "AI professional UI:first-viewport cockpit、metrics/cards/flow rows、expandable technical detail、desktop/mobile screenshot smoke。", + "current_state": "AwoooP 已有插入需求工作項面板;仍需把長文區塊持續收斂成可掃描 cockpit。", + "acceptance": "desktop/mobile 第一視窗看得到狀態、優先序、下一步與證據;細節可展開但不形成文字牆。", + "next_action": "針對 AwoooP / governance / OpenClaw live ops 做 visual smoke 與長文字區塊收斂。", + "mapped_workplan_id": "P2-UX", + }, { "id": "CIR-P3-001", "priority": "P3", diff --git a/apps/api/tests/test_awoooi_priority_work_order_readback_api.py b/apps/api/tests/test_awoooi_priority_work_order_readback_api.py index a8db1f17..3e2db4da 100644 --- a/apps/api/tests/test_awoooi_priority_work_order_readback_api.py +++ b/apps/api/tests/test_awoooi_priority_work_order_readback_api.py @@ -94,18 +94,27 @@ def test_awoooi_priority_work_order_readback_loader_returns_mainline_order(): assert payload["operation_boundaries"]["workflow_dispatch_performed"] is False assert payload["operation_boundaries"]["host_write_performed"] is False inserted_items = payload["commander_inserted_requirement_work_items"] - assert len(inserted_items) == 43 + assert len(inserted_items) == 45 assert inserted_items[0]["id"] == "CIR-P0-001" assert inserted_items[-1]["id"] == "CIR-P3-001" - assert [item["order"] for item in inserted_items] == list(range(1, 44)) + assert [item["order"] for item in inserted_items] == list(range(1, 46)) assert all(item["acceptance"] for item in inserted_items) - assert payload["summary"]["commander_inserted_requirement_work_item_count"] == 43 + assert payload["summary"]["commander_inserted_requirement_work_item_count"] == 45 assert payload["summary"]["commander_inserted_requirement_p0_count"] == 28 - assert payload["summary"]["commander_inserted_requirement_p1_count"] == 10 - assert payload["summary"]["commander_inserted_requirement_p2_count"] == 4 + assert payload["summary"]["commander_inserted_requirement_p1_count"] == 11 + assert payload["summary"]["commander_inserted_requirement_p2_count"] == 5 assert payload["summary"]["commander_inserted_requirement_p3_count"] == 1 assert payload["summary"]["commander_inserted_requirement_next_id"] == "CIR-P0-001" assert payload["rollups"]["commander_inserted_requirement_blocked_count"] == 1 + inserted_by_id = {item["id"]: item for item in inserted_items} + assert inserted_by_id["CIR-P1-OPENCLAW-001"]["lane"] == ( + "openclaw_live_ops_space" + ) + assert "Gather Town" in inserted_by_id["CIR-P1-OPENCLAW-001"]["request"] + assert inserted_by_id["CIR-P2-UX-002"]["lane"] == ( + "ai_professional_workbench_ux" + ) + assert "文字牆" in inserted_by_id["CIR-P2-UX-002"]["request"] def test_awoooi_priority_work_order_readback_endpoint_returns_snapshot( @@ -178,7 +187,7 @@ def test_awoooi_priority_work_order_readback_endpoint_returns_snapshot( "P0-006-AI-LOOP-CURRENT-BLOCKER-EXECUTION-QUEUE" ) assert "do not reopen Harbor 502" in data["next_execution_order"][0] - assert data["summary"]["commander_inserted_requirement_work_item_count"] == 43 + assert data["summary"]["commander_inserted_requirement_work_item_count"] == 45 assert data["summary"]["commander_inserted_requirement_next_id"] == "CIR-P0-001" assert data["commander_inserted_requirement_work_items"][1]["id"] == ( "CIR-P0-002" diff --git a/docs/LOGBOOK.md b/docs/LOGBOOK.md index aa046b23..e7248527 100644 --- a/docs/LOGBOOK.md +++ b/docs/LOGBOOK.md @@ -48,6 +48,17 @@ **下一步**: - commit / push Gitea `main` 後讀回 CD;接續目前 active P0:110 Stock/Postgres hot pressure 的 read-only evidence / source freshness / query attribution。 +## 2026-07-02 — 13:34 統帥插入需求升級為 API/UI 工作項讀回 + +**完成內容**: +- `apps/api/src/services/awoooi_priority_work_order_readback.py` 的 `commander_inserted_requirement_work_items` 追加 `CIR-P1-OPENCLAW-001` 與 `CIR-P2-UX-002`,把 OpenClaw / Gather-style 持續動畫工作室與 AI 專業 UI / 非文字牆 cockpit 明確列入正式優先序。 +- `docs/workplans/2026-07-02-commander-inserted-requirements-priority-ledger.md` 同步補上上述兩項,避免 API readback 與 source ledger 分裂。 +- `apps/api/tests/test_awoooi_priority_work_order_readback_api.py` 調整為 45 項,並驗證 OpenClaw/Gather 與文字牆 UX 需求必須存在。 + +**仍維持**: +- P0-006 仍是 active mainline anchor;P1/P2 可並行但不得擠掉 P0 或越過 critical hard blockers。 +- 未使用 GitHub / `gh` / GitHub API;未讀 secret / token / `.env` / raw sessions / SQLite / auth;未觸發 workflow;未重啟主機 / Docker / Nginx / K3s / DB / firewall。 + ## 2026-07-02 — 13:10 Telegram 告警 receipt 與 AI controlled readback 補強 **完成內容**: diff --git a/docs/workplans/2026-07-02-commander-inserted-requirements-priority-ledger.md b/docs/workplans/2026-07-02-commander-inserted-requirements-priority-ledger.md index b0ccfdaa..2806ca03 100644 --- a/docs/workplans/2026-07-02-commander-inserted-requirements-priority-ledger.md +++ b/docs/workplans/2026-07-02-commander-inserted-requirements-priority-ledger.md @@ -73,8 +73,10 @@ | 14 | CIR-P1-AI-001 | P1 | 「AI 專業在哪?要能主動發現、主動修復」 | AI controlled repair loop:detect → classify → candidate → check-mode → controlled apply → post verifier → KM / PlayBook trust | CPU / Gitea / Telegram receipt 已部分落地;全域 AI loop 未全部接上 | 將每個 P0 runbook 補 `candidate_action`、`controlled_apply_allowed`、`post_verifier`、`trust_writeback` | | 15 | CIR-P1-KM-001 | P1 | 「修復過程、經驗完整沉澱進 SOP,整合到目前版本」 | 所有 P0 修復必須同步 LOGBOOK、SOP、PlayBook、workplan ledger;不能只留在對話 | 本台帳、LOGBOOK、SOP 已開始補;仍需 API/UI read model | 把本台帳轉成 read-only API / governance UI row,並建立 `last_updated` / `evidence_count` | | 16 | CIR-P1-WORK-001 | P1 | 「所有已開始、進行中、已完成工作全部看清楚」 | 工作狀態盤點:Done / In Progress / Blocked / Deferred / Next Action + evidence | 本台帳已有初版 Done/In Progress/Blocked;需納入本節新 P0 | 更新下方 Done/In Progress/Blocked,把 reboot/backup/VMware/maintenance/CPU 全列入 | -| 17 | CIR-P2-OBS-001 | P2 | 「其他還有哪些告警也要完整思考」 | Observability coverage expansion:SignOz/Sentry/Langfuse/Harbor/Registry/K3s/DB/backup/freshness/route/TLS 告警 | 多數 rule 分散存在;coverage matrix 不完整 | 建立 alert coverage matrix,區分 P0 actionable 與 P2 observability debt | -| 18 | CIR-P2-UX-001 | P2 | 「維護頁外部雲端或其他專業做法評估」 | Maintenance UX 可先做設計 / decision record;實際 DNS/edge cutover 需 controlled apply | 尚未開始 | 先出 no-write design / rollback / smoke verifier,不直接切 DNS | +| 17 | CIR-P1-OPENCLAW-001 | P1 | 「OpenClaw 要有像 Gather Town 的工作畫面,而且是持續動畫」 | OpenClaw Live Ops Space:animated room、agent avatars、flow packets、work tokens、scene-state API、desktop/mobile smoke | `/zh-TW/openclaw/live-ops-space` route 已存在;仍需 production desktop/mobile animation smoke 與 AwoooP 導流 | 跑 OpenClaw live-ops desktop/mobile smoke,補 AwoooP 導流與截圖證據 | +| 18 | CIR-P2-OBS-001 | P2 | 「其他還有哪些告警也要完整思考」 | Observability coverage expansion:SignOz/Sentry/Langfuse/Harbor/Registry/K3s/DB/backup/freshness/route/TLS 告警 | 多數 rule 分散存在;coverage matrix 不完整 | 建立 alert coverage matrix,區分 P0 actionable 與 P2 observability debt | +| 19 | CIR-P2-UX-001 | P2 | 「維護頁外部雲端或其他專業做法評估」 | Maintenance UX 可先做設計 / decision record;實際 DNS/edge cutover 需 controlled apply | 尚未開始 | 先出 no-write design / rollback / smoke verifier,不直接切 DNS | +| 20 | CIR-P2-UX-002 | P2 | 「不要又是一大堆文字頁 / 文字牆,要像主流網站與專業 AI 產品」 | AI professional UI:first-viewport cockpit、metrics/cards/flow rows、expandable technical detail、desktop/mobile screenshot smoke | AwoooP 已有插入需求工作項面板;仍需把長文區塊持續收斂成可掃描 cockpit | 針對 AwoooP / governance / OpenClaw live ops 做 visual smoke 與長文字區塊收斂 | ## 目前 Done / In Progress / Blocked @@ -99,6 +101,8 @@ | 110 controlled drain lane | live verifier 仍不能宣稱 ready,需 staging artifacts / registration metadata / service guardrails 全綠 | 補 staging artifacts 後只跑 readiness verifier | | 全產品 source-control governance | 9 expected Gitea repos OK,但跨產品 dev/prod CI baseline 尚未全綠 | 以 Gitea / Gitea SSH / backup health 為 source truth | | KM / PlayBook / RAG / MCP 整合 | 已被列為 P1,不再遺漏 | 建立 work item schema 與 trust writeback 欄位 | +| OpenClaw / Gather-style 持續動畫工作室 | route 已存在,已列為 P1 工作項 | 補 production desktop/mobile smoke、AwoooP 導流與截圖證據 | +| AI 專業 UI / 非文字牆 cockpit | 已列為 P2 UX 驗收 | 將長文字區塊收斂成 first-viewport cockpit、cards、flow rows 與 expandable details | | 10 分鐘 reboot auto-recovery SLA | SLO exporter / alerts 部分存在,但缺 fresh all-host reboot/drill proof | 補最新 scorecard readback,缺事件則明確標等待下一次 reboot 或 approved drill | | 99 Windows / VMware autostart | 尚未完成 99 host + VM 111/188/120/121/112 autostart verifier | 建立 non-secret VMware/Windows verifier,不讀密碼 | | 502 maintenance fallback | 尚未完成外部維護頁 / edge fallback 決策與實作 | 先做 no-write decision record + smoke verifier | @@ -127,5 +131,7 @@ 8. 繼續補 110 controlled drain lane 的 staging / verifier,不恢復 generic runner。 9. 把全產品 repo identity / backup health / private visibility / dev-prod CI baseline 接到 product governance matrix。 10. 把本台帳的 P0/P1 工作項映射進 KM / PlayBook / RAG / MCP / LOG,不讓需求只留在聊天。 -11. SignOz degraded 分流到 Observability P2,不阻擋 Gitea/CD 主線。 -12. GitHub appeal 前不做任何 GitHub 操作;appeal 後若使用者明確要求,先做風險評估。 +11. 補 OpenClaw Live Ops Space 的 production desktop/mobile animation smoke 與 AwoooP 導流。 +12. 補 AI professional UI / 非文字牆 cockpit 驗收,避免只剩長文字頁。 +13. SignOz degraded 分流到 Observability P2,不阻擋 Gitea/CD 主線。 +14. GitHub appeal 前不做任何 GitHub 操作;appeal 後若使用者明確要求,先做風險評估。