feat(awooop): complete commander inserted work ledger
Some checks failed
CD Pipeline / workflow-shape (push) Successful in 0s
CD Pipeline / cancel-stale-cd (push) Has been skipped
CD Pipeline / tests (push) Successful in 52s
CD Pipeline / post-deploy-checks (push) Has been cancelled
CD Pipeline / build-and-deploy (push) Has been cancelled

This commit is contained in:
Your Name
2026-07-02 13:43:28 +08:00
parent a551d51d82
commit 5d3fc425f5
4 changed files with 62 additions and 10 deletions

View File

@@ -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 Spaceanimated 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 UIfirst-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",

View File

@@ -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"

View File

@@ -48,6 +48,17 @@
**下一步**
- commit / push Gitea `main` 後讀回 CD接續目前 active P0110 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 anchorP1/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 補強
**完成內容**

View File

@@ -73,8 +73,10 @@
| 14 | CIR-P1-AI-001 | P1 | 「AI 專業在哪?要能主動發現、主動修復」 | AI controlled repair loopdetect → 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 expansionSignOz/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 Spaceanimated 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 expansionSignOz/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 UIfirst-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 後若使用者明確要求,先做風險評估。