From 42ce3d54bee62fa3134a7c9846e7abb86f99c4ea Mon Sep 17 00:00:00 2001 From: ogt Date: Fri, 10 Jul 2026 10:06:24 +0800 Subject: [PATCH] fix(work-items): close completed mainline ledger items --- .../awoooi_priority_work_order_readback.py | 26 +++++++++---------- ...awoooi_priority_work_order_readback_api.py | 19 +++++++++----- .../app/[locale]/awooop/work-items/page.tsx | 12 ++++----- 3 files changed, 32 insertions(+), 25 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 4900a4b84..bbdf3deb7 100644 --- a/apps/api/src/services/awoooi_priority_work_order_readback.py +++ b/apps/api/src/services/awoooi_priority_work_order_readback.py @@ -89,26 +89,26 @@ _COMMANDER_INSERTED_REQUIREMENT_WORK_ITEMS: list[dict[str, Any]] = [ "id": "CIR-P0-001", "priority": "P0", "order": 1, - "status": "in_progress", + "status": "done", "lane": "mainline_order", "request": "不要偏離 / 只推進目前唯一目標 / 照順序推進", "normalized_work_item": "所有插入需求先歸入正式工作項,再依 P0/P1/P2/P3 排序。", - "current_state": "台帳已建立;本 readback 將其產品化到 API 與前台。", + "current_state": "priority work-order API 與 Work Items 第一屏已在 production 讀回完整排序與完成度。", "acceptance": "priority work-order API 與 work-items 前台可讀回完整排序。", - "next_action": "每次推進固定回報 current P0 / action / evidence / next action。", + "next_action": "維持 current P0 / action / evidence / next action 回報格式,並轉往下一個 P0。", "mapped_workplan_id": "P0-006", }, { "id": "CIR-P0-002", "priority": "P0", "order": 2, - "status": "in_progress", + "status": "done", "lane": "production_visible_result", "request": "我要看到實作結果,不能只有文件或長文字。", "normalized_work_item": "每個主線工作必須產出 commit、Gitea CD、production readback 或 verifier output。", - "current_state": "Gitea/CD/readback 已有基準;本輪補前台可見的插入需求面板。", + "current_state": "Gitea commit、deploy marker、production API readback 與 desktop/mobile smoke 已完成。", "acceptance": "正式環境 /zh-TW/awooop/work-items 可看到排序後工作項與 readback 計數。", - "next_action": "正常 commit、push Gitea main,追 CD 與 production UI/API readback。", + "next_action": "後續 production-visible 變更沿用 commit -> Gitea CD -> production readback -> smoke。", "mapped_workplan_id": "P0-006", }, { @@ -219,13 +219,13 @@ _COMMANDER_INSERTED_REQUIREMENT_WORK_ITEMS: list[dict[str, Any]] = [ "id": "CIR-P0-011", "priority": "P0", "order": 11, - "status": "in_progress", + "status": "done", "lane": "work_state_visibility", "request": "所有已開始、進行中、已完成工作全部看清楚。", "normalized_work_item": "工作狀態拆成 Done / In Progress / Blocked / Deferred,不再用單句完成度帶過。", - "current_state": "本 readback 補完整 status 與 priority counts。", + "current_state": "Work Items 第一屏已顯示完成、進行中、未開始、阻塞、延後與下一步。", "acceptance": "API/UI 同時顯示總數、P0/P1/P2/P3、各工作狀態與 next action。", - "next_action": "後續 LOGBOOK 與 UI 都沿用 status/evidence/next-action 結構。", + "next_action": "後續 LOGBOOK 與 UI 繼續沿用 status/evidence/next-action 結構。", "mapped_workplan_id": "P0-010", }, { @@ -2984,14 +2984,14 @@ def _enrich_from_current_readbacks( apply_gitea_repo_bundle_backup_readback, load_latest_reboot_auto_recovery_slo_scorecard, ) - from src.services.windows99_vmx_source_locator_readback import ( - build_windows99_vmx_source_locator_readback, + from src.services.windows99_vmware_autostart_check_mode_package import ( + build_windows99_vmware_autostart_check_mode_package, ) from src.services.windows99_vmx_source_backup_search_package import ( build_windows99_vmx_source_backup_search_package, ) - from src.services.windows99_vmware_autostart_check_mode_package import ( - build_windows99_vmware_autostart_check_mode_package, + from src.services.windows99_vmx_source_locator_readback import ( + build_windows99_vmx_source_locator_readback, ) from src.services.windows99_vmx_source_repair_package import ( build_windows99_vmx_source_repair_package, 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 095082e78..72f4e46a7 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 @@ -456,9 +456,14 @@ def test_awoooi_priority_work_order_readback_surfaces_gitea_bundle_truth(): assert payload["summary"]["commander_inserted_requirement_p1_count"] == 14 assert payload["summary"]["commander_inserted_requirement_p2_count"] == 5 assert payload["summary"]["commander_inserted_requirement_p3_count"] == 2 - assert payload["summary"]["commander_inserted_requirement_next_id"] == "CIR-P0-001" + assert payload["summary"]["commander_inserted_requirement_done_count"] == 9 + assert payload["summary"]["commander_inserted_requirement_in_progress_count"] == 27 + assert payload["summary"]["commander_inserted_requirement_next_id"] == "CIR-P0-004" 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-P0-001"]["status"] == "done" + assert inserted_by_id["CIR-P0-002"]["status"] == "done" + assert inserted_by_id["CIR-P0-011"]["status"] == "done" assert inserted_by_id["CIR-P0-AILOOP-001"]["lane"] == ( "ai_loop_agent_mainline" ) @@ -1377,7 +1382,9 @@ def test_awoooi_priority_work_order_readback_endpoint_returns_snapshot( ) assert "do not reopen Harbor 502" in data["next_execution_order"][0] assert data["summary"]["commander_inserted_requirement_work_item_count"] == 55 - assert data["summary"]["commander_inserted_requirement_next_id"] == "CIR-P0-001" + assert data["summary"]["commander_inserted_requirement_done_count"] == 9 + assert data["summary"]["commander_inserted_requirement_in_progress_count"] == 27 + assert data["summary"]["commander_inserted_requirement_next_id"] == "CIR-P0-004" assert data["commander_inserted_requirement_work_items"][1]["id"] == ( "CIR-P0-002" ) @@ -2219,18 +2226,18 @@ def test_awoooi_priority_work_order_readback_allows_parallel_mainline_on_stockpl "external_stockplatform_data_retry_wait" ) assert parallel["retry_readback_at"] - assert parallel["parallel_work_item"]["id"] == "CIR-P0-001" + assert parallel["parallel_work_item"]["id"] == "CIR-P0-004" assert parallel["parallel_work_item"]["priority"] == "P0" assert parallel["report_contract"]["current_p0"] == "P0-006" assert "fake_stockplatform_freshness_marker" in parallel["forbidden_actions"] assert "db_write_or_restore_from_this_wait_lane" in parallel["forbidden_actions"] assert state["parallel_mainline_execution_enabled"] is True - assert state["parallel_mainline_work_item_id"] == "CIR-P0-001" + assert state["parallel_mainline_work_item_id"] == "CIR-P0-004" assert payload["summary"]["parallel_mainline_execution_enabled"] is True - assert payload["summary"]["parallel_mainline_work_item_id"] == "CIR-P0-001" + assert payload["summary"]["parallel_mainline_work_item_id"] == "CIR-P0-004" assert payload["summary"]["parallel_mainline_work_item_priority"] == "P0" assert payload["rollups"]["parallel_mainline_execution_enabled"] is True - assert payload["rollups"]["parallel_mainline_work_item_id"] == "CIR-P0-001" + assert payload["rollups"]["parallel_mainline_work_item_id"] == "CIR-P0-004" def test_awoooi_priority_work_order_readback_routes_stockplatform_ai_recommendations(): diff --git a/apps/web/src/app/[locale]/awooop/work-items/page.tsx b/apps/web/src/app/[locale]/awooop/work-items/page.tsx index 59b2273fb..6e3d73b66 100644 --- a/apps/web/src/app/[locale]/awooop/work-items/page.tsx +++ b/apps/web/src/app/[locale]/awooop/work-items/page.tsx @@ -1609,15 +1609,15 @@ const COMMANDER_INSERTED_REQUIREMENT_FALLBACK: PriorityWorkOrderResponse = { commander_inserted_requirement_p1_count: 14, commander_inserted_requirement_p2_count: 5, commander_inserted_requirement_p3_count: 2, - commander_inserted_requirement_done_count: 5, - commander_inserted_requirement_in_progress_count: 31, + commander_inserted_requirement_done_count: 9, + commander_inserted_requirement_in_progress_count: 27, commander_inserted_requirement_pending_count: 14, commander_inserted_requirement_blocked_count: 1, commander_inserted_requirement_deferred_count: 4, - commander_inserted_requirement_next_id: "CIR-P0-001", + commander_inserted_requirement_next_id: "CIR-P0-004", commander_inserted_requirement_next_priority: "P0", commander_inserted_requirement_next_action: - "每次推進固定回報 current P0 / action / evidence / next action。", + "把全產品 source truth 接到 product governance matrix。", commander_inserted_requirement_source: "docs/workplans/2026-07-02-commander-inserted-requirements-priority-ledger.md", }, @@ -1770,10 +1770,10 @@ const COMMANDER_INSERTED_REQUIREMENT_FALLBACK: PriorityWorkOrderResponse = { id: "CIR-P0-001", priority: "P0", order: 1, - status: "in_progress", + status: "done", lane: "mainline_order", normalized_work_item: "所有插入需求先歸入正式工作項,再依 P0/P1/P2/P3 排序。", - next_action: "每次推進固定回報 current P0 / action / evidence / next action。", + next_action: "維持 current P0 / action / evidence / next action 回報格式,並轉往下一個 P0。", source: "docs/workplans/2026-07-02-commander-inserted-requirements-priority-ledger.md", }, {