feat(governance): 顯示任務批准邊界與進度彙總
All checks were successful
CD Pipeline / tests (push) Successful in 1m31s
Code Review / ai-code-review (push) Successful in 14s
CD Pipeline / build-and-deploy (push) Successful in 5m12s
CD Pipeline / post-deploy-checks (push) Successful in 2m21s

This commit is contained in:
Your Name
2026-06-05 09:23:41 +08:00
parent b133f76af5
commit 4f0787f869
17 changed files with 2368 additions and 105 deletions

View File

@@ -1,34 +1,34 @@
{
"schema_version": "ai_agent_automation_backlog_v1",
"generated_at": "2026-06-05T08:40:00+08:00",
"generated_at": "2026-06-05T09:05:41+08:00",
"source_inventory_snapshot_ref": "docs/evaluations/ai_agent_automation_inventory_snapshot_2026-06-04_static_seed.json",
"program_status": {
"overall_completion_percent": 100,
"overall_completion_percent": 70,
"current_priority": "P1",
"current_task_id": "P1-106",
"next_task_id": "P1-305",
"current_task_id": "P1-306",
"next_task_id": "P1-001",
"read_only_mode": true
},
"rollups": {
"total_items": 21,
"total_items": 23,
"by_priority": {
"P1": 19,
"P1": 21,
"P2": 1,
"P3": 1
},
"by_status": {
"planned": 7,
"done": 14
"done": 16,
"planned": 7
},
"by_gate_status": {
"read_only_allowed": 18,
"read_only_allowed": 20,
"production_change_blocked": 1,
"cost_approval_required": 1,
"blocked_by_evidence": 1
},
"by_owner_agent": {
"hermes": 11,
"openclaw": 9,
"hermes": 12,
"openclaw": 10,
"nemotron": 1
}
},
@@ -56,7 +56,28 @@
"approval_boundaries 全部維持 false",
"pytest 覆蓋 service loader 與 API endpoint"
],
"next_review": "P1-303"
"next_review": "P1-303",
"approval_boundary": {
"mode": "read_only_allowed",
"display_summary": "只允許只讀盤點、顯示與批准包準備;不得直接執行寫入、部署、通知或外部呼叫。",
"allowed_actions": [
"讀取 committed snapshot",
"整理只讀證據",
"顯示治理 UI"
],
"blocked_actions": [
"production_write",
"runtime_execution",
"destructive_operation",
"secret_plaintext_collection",
"unapproved_deploy",
"unapproved_external_call"
],
"requires_operator_approval_for": [
"任何非只讀操作",
"任何部署、排程、通知或外部呼叫變更"
]
}
},
{
"item_id": "AUTO-P1-304",
@@ -81,7 +102,123 @@
"desktop 與 390px mobile 無橫向溢出",
"顯示 rollup 與分組 item"
],
"next_review": "P1-304"
"next_review": "P1-304",
"approval_boundary": {
"mode": "read_only_allowed",
"display_summary": "只允許只讀盤點、顯示與批准包準備;不得直接執行寫入、部署、通知或外部呼叫。",
"allowed_actions": [
"讀取 committed snapshot",
"整理只讀證據",
"顯示治理 UI"
],
"blocked_actions": [
"production_write",
"runtime_execution",
"destructive_operation",
"secret_plaintext_collection",
"unapproved_deploy",
"unapproved_external_call"
],
"requires_operator_approval_for": [
"任何非只讀操作",
"任何部署、排程、通知或外部呼叫變更"
]
}
},
{
"item_id": "AUTO-P1-305",
"priority": "P1",
"status": "done",
"workstream_id": "WS8",
"source_asset_id": "awoooi_web",
"source_signal_kind": "approval_boundary",
"title": "顯示每個任務的批准邊界",
"owner_agent": "openclaw",
"recommended_action": "在 backlog snapshot 與治理頁顯示每個任務的 mode、允許只讀動作、阻擋操作與需要人工批准的範圍。",
"action_class": "execute_read_only",
"gate_status": "read_only_allowed",
"risk_level": "high",
"evidence_refs": [
"docs/schemas/ai_agent_automation_backlog_v1.schema.json",
"docs/evaluations/ai_agent_automation_backlog_2026-06-04.json",
"apps/web/src/app/[locale]/governance/tabs/automation-inventory-tab.tsx"
],
"acceptance_criteria": [
"每個 backlog item 都有 approval_boundary.mode 與 gate_status 一致",
"UI 顯示允許只讀動作、阻擋操作與需人工批准範圍",
"不新增批准、執行、部署或通知按鈕",
"service loader 會驗證 item_approval_boundary_rollup 一致性"
],
"next_review": "P1-305",
"approval_boundary": {
"mode": "read_only_allowed",
"display_summary": "只允許只讀盤點、顯示與批准包準備;不得直接執行寫入、部署、通知或外部呼叫。",
"allowed_actions": [
"讀取 committed snapshot",
"整理只讀證據",
"顯示治理 UI"
],
"blocked_actions": [
"production_write",
"runtime_execution",
"destructive_operation",
"secret_plaintext_collection",
"unapproved_deploy",
"unapproved_external_call"
],
"requires_operator_approval_for": [
"任何非只讀操作",
"任何部署、排程、通知或外部呼叫變更"
]
}
},
{
"item_id": "AUTO-P1-306",
"priority": "P1",
"status": "done",
"workstream_id": "WS2",
"source_asset_id": "automation_backlog_progress_summary",
"source_signal_kind": "ui_visibility_gap",
"title": "顯示進度百分比彙總",
"owner_agent": "hermes",
"recommended_action": "在 backlog snapshot 與治理頁顯示整體、優先級與工作流進度,百分比全部由 status=done / total_items 重算。",
"action_class": "execute_read_only",
"gate_status": "read_only_allowed",
"risk_level": "medium",
"evidence_refs": [
"docs/schemas/ai_agent_automation_backlog_v1.schema.json",
"docs/evaluations/ai_agent_automation_backlog_2026-06-04.json",
"GET /api/v1/agents/automation-backlog-snapshot",
"apps/web/src/app/[locale]/governance/tabs/automation-inventory-tab.tsx"
],
"acceptance_criteria": [
"progress_summary.overall_percent 使用 deterministic formula",
"by_priority 與 by_workstream 的 done_items / total_items 可由 backlog_items 重算",
"planned、blocked、deferred、rejected 不得計入完成",
"UI 顯示百分比時同步顯示公式邊界,不代表 runtime gate 提升"
],
"next_review": "P1-306",
"approval_boundary": {
"mode": "read_only_allowed",
"display_summary": "只允許只讀盤點、顯示與批准包準備;不得直接執行寫入、部署、通知或外部呼叫。",
"allowed_actions": [
"讀取 committed snapshot",
"整理只讀證據",
"顯示治理 UI"
],
"blocked_actions": [
"production_write",
"runtime_execution",
"destructive_operation",
"secret_plaintext_collection",
"unapproved_deploy",
"unapproved_external_call"
],
"requires_operator_approval_for": [
"任何非只讀操作",
"任何部署、排程、通知或外部呼叫變更"
]
}
},
{
"item_id": "AUTO-P1-001",
@@ -105,7 +242,28 @@
"每個 runtime surface 都有來源檔或只讀檢查證據",
"缺口列為 action-required不直接修復"
],
"next_review": "P1-001"
"next_review": "P1-001",
"approval_boundary": {
"mode": "read_only_allowed",
"display_summary": "只允許只讀盤點、顯示與批准包準備;不得直接執行寫入、部署、通知或外部呼叫。",
"allowed_actions": [
"讀取 committed snapshot",
"整理只讀證據",
"顯示治理 UI"
],
"blocked_actions": [
"production_write",
"runtime_execution",
"destructive_operation",
"secret_plaintext_collection",
"unapproved_deploy",
"unapproved_external_call"
],
"requires_operator_approval_for": [
"任何非只讀操作",
"任何部署、排程、通知或外部呼叫變更"
]
}
},
{
"item_id": "AUTO-P1-002",
@@ -129,7 +287,28 @@
"列出 runner health contract",
"成功不通知、失敗才通知的政策被保留"
],
"next_review": "P1-002"
"next_review": "P1-002",
"approval_boundary": {
"mode": "read_only_allowed",
"display_summary": "只允許只讀盤點、顯示與批准包準備;不得直接執行寫入、部署、通知或外部呼叫。",
"allowed_actions": [
"讀取 committed snapshot",
"整理只讀證據",
"顯示治理 UI"
],
"blocked_actions": [
"production_write",
"runtime_execution",
"destructive_operation",
"secret_plaintext_collection",
"unapproved_deploy",
"unapproved_external_call"
],
"requires_operator_approval_for": [
"任何非只讀操作",
"任何部署、排程、通知或外部呼叫變更"
]
}
},
{
"item_id": "AUTO-P1-003",
@@ -153,7 +332,28 @@
"降噪只產生 proposal",
"標出 stale、缺 evidence、過度通知與 classification gap"
],
"next_review": "P1-003"
"next_review": "P1-003",
"approval_boundary": {
"mode": "read_only_allowed",
"display_summary": "只允許只讀盤點、顯示與批准包準備;不得直接執行寫入、部署、通知或外部呼叫。",
"allowed_actions": [
"讀取 committed snapshot",
"整理只讀證據",
"顯示治理 UI"
],
"blocked_actions": [
"production_write",
"runtime_execution",
"destructive_operation",
"secret_plaintext_collection",
"unapproved_deploy",
"unapproved_external_call"
],
"requires_operator_approval_for": [
"任何非只讀操作",
"任何部署、排程、通知或外部呼叫變更"
]
}
},
{
"item_id": "AUTO-P1-004",
@@ -178,7 +378,32 @@
"所有候選仍維持 replay/shadow/canary gate",
"OpenClaw 保持目前生產決策核心"
],
"next_review": "P1-004"
"next_review": "P1-004",
"approval_boundary": {
"mode": "production_change_blocked",
"display_summary": "生產路由或 provider 變更被阻擋;需 replay、shadow/canary 證據與獨立人工批准。",
"allowed_actions": [
"盤點 provider route",
"整理 replay 前置證據",
"準備變更批准包"
],
"blocked_actions": [
"production_write",
"runtime_execution",
"destructive_operation",
"secret_plaintext_collection",
"provider_switch",
"production_routing_change",
"shadow_or_canary_entry",
"paid_api_call"
],
"requires_operator_approval_for": [
"provider 切換",
"生產路由變更",
"shadow / canary 進入",
"付費 API 呼叫"
]
}
},
{
"item_id": "AUTO-P1-007",
@@ -202,7 +427,28 @@
"成功不通知的預設政策被保留",
"action-required 必須可追蹤 incident / approval / evidence"
],
"next_review": "P1-007"
"next_review": "P1-007",
"approval_boundary": {
"mode": "read_only_allowed",
"display_summary": "只允許只讀盤點、顯示與批准包準備;不得直接執行寫入、部署、通知或外部呼叫。",
"allowed_actions": [
"讀取 committed snapshot",
"整理只讀證據",
"顯示治理 UI"
],
"blocked_actions": [
"production_write",
"runtime_execution",
"destructive_operation",
"secret_plaintext_collection",
"unapproved_deploy",
"unapproved_external_call"
],
"requires_operator_approval_for": [
"任何非只讀操作",
"任何部署、排程、通知或外部呼叫變更"
]
}
},
{
"item_id": "AUTO-P1-101",
@@ -228,7 +474,28 @@
"每個備份目標至少有 freshness / integrity / owner 欄位",
"成功不通知、失敗才進 action-required"
],
"next_review": "P1-101"
"next_review": "P1-101",
"approval_boundary": {
"mode": "read_only_allowed",
"display_summary": "只允許只讀盤點、顯示與批准包準備;不得直接執行寫入、部署、通知或外部呼叫。",
"allowed_actions": [
"讀取 committed snapshot",
"整理只讀證據",
"顯示治理 UI"
],
"blocked_actions": [
"production_write",
"runtime_execution",
"destructive_operation",
"secret_plaintext_collection",
"unapproved_deploy",
"unapproved_external_call"
],
"requires_operator_approval_for": [
"任何非只讀操作",
"任何部署、排程、通知或外部呼叫變更"
]
}
},
{
"item_id": "AUTO-P1-102",
@@ -252,7 +519,28 @@
"不輸出 secret 或 credential",
"readiness 需區分 freshness、integrity、offsite、escrow"
],
"next_review": "P1-102"
"next_review": "P1-102",
"approval_boundary": {
"mode": "read_only_allowed",
"display_summary": "只允許只讀盤點、顯示與批准包準備;不得直接執行寫入、部署、通知或外部呼叫。",
"allowed_actions": [
"讀取 committed snapshot",
"整理只讀證據",
"顯示治理 UI"
],
"blocked_actions": [
"production_write",
"runtime_execution",
"destructive_operation",
"secret_plaintext_collection",
"unapproved_deploy",
"unapproved_external_call"
],
"requires_operator_approval_for": [
"任何非只讀操作",
"任何部署、排程、通知或外部呼叫變更"
]
}
},
{
"item_id": "AUTO-P1-103",
@@ -278,7 +566,28 @@
"API 不送通知、不執行 backup / restore / offsite sync、不寫 marker、不改排程或 workflow",
"daily summary 保留每日 06:05 台北時間成功狀態承載"
],
"next_review": "P1-103"
"next_review": "P1-103",
"approval_boundary": {
"mode": "read_only_allowed",
"display_summary": "只允許只讀盤點、顯示與批准包準備;不得直接執行寫入、部署、通知或外部呼叫。",
"allowed_actions": [
"讀取 committed snapshot",
"整理只讀證據",
"顯示治理 UI"
],
"blocked_actions": [
"production_write",
"runtime_execution",
"destructive_operation",
"secret_plaintext_collection",
"unapproved_deploy",
"unapproved_external_call"
],
"requires_operator_approval_for": [
"任何非只讀操作",
"任何部署、排程、通知或外部呼叫變更"
]
}
},
{
"item_id": "AUTO-P1-104",
@@ -305,7 +614,28 @@
"desktop 與 390px mobile 無橫向溢出",
"成功備份仍不得即時送 Telegram / AwoooP 洗版"
],
"next_review": "P1-104"
"next_review": "P1-104",
"approval_boundary": {
"mode": "read_only_allowed",
"display_summary": "只允許只讀盤點、顯示與批准包準備;不得直接執行寫入、部署、通知或外部呼叫。",
"allowed_actions": [
"讀取 committed snapshot",
"整理只讀證據",
"顯示治理 UI"
],
"blocked_actions": [
"production_write",
"runtime_execution",
"destructive_operation",
"secret_plaintext_collection",
"unapproved_deploy",
"unapproved_external_call"
],
"requires_operator_approval_for": [
"任何非只讀操作",
"任何部署、排程、通知或外部呼叫變更"
]
}
},
{
"item_id": "AUTO-P1-105",
@@ -332,7 +662,28 @@
"6 類批准包模板全部要求 OpenClaw 仲裁與 HITL",
"blocked / action-required 目標必須維持 blocked 或 action-required不得被 UI 解讀為 ready"
],
"next_review": "P1-105"
"next_review": "P1-105",
"approval_boundary": {
"mode": "read_only_allowed",
"display_summary": "只允許只讀盤點、顯示與批准包準備;不得直接執行寫入、部署、通知或外部呼叫。",
"allowed_actions": [
"讀取 committed snapshot",
"整理只讀證據",
"顯示治理 UI"
],
"blocked_actions": [
"production_write",
"runtime_execution",
"destructive_operation",
"secret_plaintext_collection",
"unapproved_deploy",
"unapproved_external_call"
],
"requires_operator_approval_for": [
"任何非只讀操作",
"任何部署、排程、通知或外部呼叫變更"
]
}
},
{
"item_id": "AUTO-P1-106",
@@ -360,7 +711,28 @@
"成功 offsite evidence 不即時送 Telegram / AwoooP 洗版",
"desktop 與 390px mobile 無橫向溢出"
],
"next_review": "P1-106"
"next_review": "P1-106",
"approval_boundary": {
"mode": "read_only_allowed",
"display_summary": "只允許只讀盤點、顯示與批准包準備;不得直接執行寫入、部署、通知或外部呼叫。",
"allowed_actions": [
"讀取 committed snapshot",
"整理只讀證據",
"顯示治理 UI"
],
"blocked_actions": [
"production_write",
"runtime_execution",
"destructive_operation",
"secret_plaintext_collection",
"unapproved_deploy",
"unapproved_external_call"
],
"requires_operator_approval_for": [
"任何非只讀操作",
"任何部署、排程、通知或外部呼叫變更"
]
}
},
{
"item_id": "AUTO-P1-201",
@@ -387,7 +759,28 @@
"CVE / license / drift 以 read-only report 呈現",
"API pyproject / requirements manifest drift 已標為 action_required"
],
"next_review": "P1-201"
"next_review": "P1-201",
"approval_boundary": {
"mode": "read_only_allowed",
"display_summary": "只允許只讀盤點、顯示與批准包準備;不得直接執行寫入、部署、通知或外部呼叫。",
"allowed_actions": [
"讀取 committed snapshot",
"整理只讀證據",
"顯示治理 UI"
],
"blocked_actions": [
"production_write",
"runtime_execution",
"destructive_operation",
"secret_plaintext_collection",
"unapproved_deploy",
"unapproved_external_call"
],
"requires_operator_approval_for": [
"任何非只讀操作",
"任何部署、排程、通知或外部呼叫變更"
]
}
},
{
"item_id": "AUTO-P1-202",
@@ -414,7 +807,28 @@
"只輸出 drift report 與批准包需求",
"manifest 與 pnpm-lock.yaml importer specifier 已確認同步"
],
"next_review": "P1-202"
"next_review": "P1-202",
"approval_boundary": {
"mode": "read_only_allowed",
"display_summary": "只允許只讀盤點、顯示與批准包準備;不得直接執行寫入、部署、通知或外部呼叫。",
"allowed_actions": [
"讀取 committed snapshot",
"整理只讀證據",
"顯示治理 UI"
],
"blocked_actions": [
"production_write",
"runtime_execution",
"destructive_operation",
"secret_plaintext_collection",
"unapproved_deploy",
"unapproved_external_call"
],
"requires_operator_approval_for": [
"任何非只讀操作",
"任何部署、排程、通知或外部呼叫變更"
]
}
},
{
"item_id": "AUTO-P1-203",
@@ -441,7 +855,28 @@
"只產生 image risk snapshot 與後續批准包",
"base image digest pin、binary source、network fetch 風險已標成 action_required"
],
"next_review": "P1-203"
"next_review": "P1-203",
"approval_boundary": {
"mode": "read_only_allowed",
"display_summary": "只允許只讀盤點、顯示與批准包準備;不得直接執行寫入、部署、通知或外部呼叫。",
"allowed_actions": [
"讀取 committed snapshot",
"整理只讀證據",
"顯示治理 UI"
],
"blocked_actions": [
"production_write",
"runtime_execution",
"destructive_operation",
"secret_plaintext_collection",
"unapproved_deploy",
"unapproved_external_call"
],
"requires_operator_approval_for": [
"任何非只讀操作",
"任何部署、排程、通知或外部呼叫變更"
]
}
},
{
"item_id": "AUTO-P1-204",
@@ -468,7 +903,28 @@
"不執行 docker build / image pull / registry push",
"12 條嚴重度規則與 rollup 一致,並明確標示 OpenClaw / Hermes / NemoTron 角色"
],
"next_review": "P1-204"
"next_review": "P1-204",
"approval_boundary": {
"mode": "read_only_allowed",
"display_summary": "只允許只讀盤點、顯示與批准包準備;不得直接執行寫入、部署、通知或外部呼叫。",
"allowed_actions": [
"讀取 committed snapshot",
"整理只讀證據",
"顯示治理 UI"
],
"blocked_actions": [
"production_write",
"runtime_execution",
"destructive_operation",
"secret_plaintext_collection",
"unapproved_deploy",
"unapproved_external_call"
],
"requires_operator_approval_for": [
"任何非只讀操作",
"任何部署、排程、通知或外部呼叫變更"
]
}
},
{
"item_id": "AUTO-P1-205",
@@ -495,7 +951,28 @@
"不安裝 SDK、不呼叫付費 API",
"列出 5 個 local checks、10 個外部來源候選與 failure-only notification policy"
],
"next_review": "P1-205"
"next_review": "P1-205",
"approval_boundary": {
"mode": "read_only_allowed",
"display_summary": "只允許只讀盤點、顯示與批准包準備;不得直接執行寫入、部署、通知或外部呼叫。",
"allowed_actions": [
"讀取 committed snapshot",
"整理只讀證據",
"顯示治理 UI"
],
"blocked_actions": [
"production_write",
"runtime_execution",
"destructive_operation",
"secret_plaintext_collection",
"unapproved_deploy",
"unapproved_external_call"
],
"requires_operator_approval_for": [
"任何非只讀操作",
"任何部署、排程、通知或外部呼叫變更"
]
}
},
{
"item_id": "AUTO-P1-206",
@@ -522,7 +999,28 @@
"不 publish package",
"8 類批准包模板全部要求 HITL"
],
"next_review": "P1-206"
"next_review": "P1-206",
"approval_boundary": {
"mode": "read_only_allowed",
"display_summary": "只允許只讀盤點、顯示與批准包準備;不得直接執行寫入、部署、通知或外部呼叫。",
"allowed_actions": [
"讀取 committed snapshot",
"整理只讀證據",
"顯示治理 UI"
],
"blocked_actions": [
"production_write",
"runtime_execution",
"destructive_operation",
"secret_plaintext_collection",
"unapproved_deploy",
"unapproved_external_call"
],
"requires_operator_approval_for": [
"任何非只讀操作",
"任何部署、排程、通知或外部呼叫變更"
]
}
},
{
"item_id": "AUTO-P2-004",
@@ -546,7 +1044,30 @@
"不得在本項目內切換 provider",
"輸出需包含成本、fallback、latency、資料邊界"
],
"next_review": "P2-004"
"next_review": "P2-004",
"approval_boundary": {
"mode": "cost_approval_required",
"display_summary": "涉及付費 API 或成本變更;費用批准前只能產生只讀估算與替代方案。",
"allowed_actions": [
"估算成本",
"整理替代方案",
"準備費用批准包"
],
"blocked_actions": [
"production_write",
"runtime_execution",
"destructive_operation",
"secret_plaintext_collection",
"paid_api_call",
"call_frequency_increase",
"provider_switch"
],
"requires_operator_approval_for": [
"付費 API 呼叫",
"呼叫頻率增加",
"新 provider 或 SDK 導入"
]
}
},
{
"item_id": "AUTO-P3-001",
@@ -571,7 +1092,30 @@
"只更新 primary source evidence",
"5 筆 smoke 仍需通過現有 approval gate"
],
"next_review": "P3-001"
"next_review": "P3-001",
"approval_boundary": {
"mode": "blocked_by_evidence",
"display_summary": "來源證據不足;補齊 primary source 與 smoke 前不得進入執行、shadow 或 canary。",
"allowed_actions": [
"刷新 primary source evidence",
"整理離線 smoke 前置資料",
"列出證據缺口"
],
"blocked_actions": [
"production_write",
"runtime_execution",
"destructive_operation",
"secret_plaintext_collection",
"shadow_or_canary_entry",
"provider_replacement",
"paid_api_call"
],
"requires_operator_approval_for": [
"證據採納",
"smoke 啟動",
"shadow / canary 進入"
]
}
}
],
"approval_boundaries": {
@@ -580,5 +1124,129 @@
"shadow_or_canary_allowed": false,
"production_routing_allowed": false,
"destructive_operation_allowed": false
},
"item_approval_boundary_rollup": {
"total_items": 23,
"by_mode": {
"read_only_allowed": 20,
"production_change_blocked": 1,
"cost_approval_required": 1,
"blocked_by_evidence": 1
},
"items_requiring_explicit_approval": [
"AUTO-P1-004",
"AUTO-P2-004",
"AUTO-P3-001"
],
"items_with_blocked_operations": [
"AUTO-P1-001",
"AUTO-P1-002",
"AUTO-P1-003",
"AUTO-P1-004",
"AUTO-P1-007",
"AUTO-P1-101",
"AUTO-P1-102",
"AUTO-P1-103",
"AUTO-P1-104",
"AUTO-P1-105",
"AUTO-P1-106",
"AUTO-P1-201",
"AUTO-P1-202",
"AUTO-P1-203",
"AUTO-P1-204",
"AUTO-P1-205",
"AUTO-P1-206",
"AUTO-P1-303",
"AUTO-P1-304",
"AUTO-P1-305",
"AUTO-P1-306",
"AUTO-P2-004",
"AUTO-P3-001"
]
},
"progress_summary": {
"overall_percent": 70,
"done_items": 16,
"planned_items": 7,
"total_items": 23,
"formula": "round(done_items / total_items * 100),只有 status=done 計入完成planned/in_progress/blocked/deferred/rejected 不計入。",
"by_priority": [
{
"priority": "P1",
"completion_percent": 76,
"done_items": 16,
"total_items": 21
},
{
"priority": "P2",
"completion_percent": 0,
"done_items": 0,
"total_items": 1
},
{
"priority": "P3",
"completion_percent": 0,
"done_items": 0,
"total_items": 1
}
],
"by_workstream": [
{
"workstream_id": "WS2",
"display_name": "自動化待辦",
"completion_percent": 67,
"done_items": 2,
"total_items": 3,
"next_task_id": "P1-001"
},
{
"workstream_id": "WS3",
"display_name": "監控自動化",
"completion_percent": 0,
"done_items": 0,
"total_items": 4,
"next_task_id": "P1-001"
},
{
"workstream_id": "WS4",
"display_name": "備份與 DR 自動化",
"completion_percent": 100,
"done_items": 6,
"total_items": 6,
"next_task_id": "complete"
},
{
"workstream_id": "WS5",
"display_name": "套件與供應鏈自動化",
"completion_percent": 100,
"done_items": 6,
"total_items": 6,
"next_task_id": "complete"
},
{
"workstream_id": "WS6",
"display_name": "配置優化",
"completion_percent": 0,
"done_items": 0,
"total_items": 1,
"next_task_id": "P2-001"
},
{
"workstream_id": "WS7",
"display_name": "安全執行關卡",
"completion_percent": 0,
"done_items": 0,
"total_items": 1,
"next_task_id": "P2-101"
},
{
"workstream_id": "WS8",
"display_name": "產品 UI",
"completion_percent": 100,
"done_items": 2,
"total_items": 2,
"next_task_id": "P1-001"
}
]
}
}