From 90ea734f739a085a7f9c1dfbccd891a521d39e3c Mon Sep 17 00:00:00 2001 From: ogt Date: Fri, 3 Jul 2026 00:18:56 +0800 Subject: [PATCH] style(obs): compact ppt visual qa workbench --- docs/AI_INTELLIGENCE_MODULE_SOT.md | 1 + .../guides/external_professional_benchmark.md | 2 + .../pchome_ai_automation_priority_backlog.md | 7 +- routes/admin_observability_routes.py | 6 +- services/ppt_auto_generation_service.py | 2 +- templates/admin/ppt_audit_history.html | 38 ++++++----- tests/test_admin_observability_routes.py | 33 ++++----- .../test_ppt_audit_text_density_guardrails.py | 67 +++++++++++++++++++ web/static/css/page-ppt-audit-history.css | 29 ++++++++ 9 files changed, 150 insertions(+), 35 deletions(-) create mode 100644 tests/test_ppt_audit_text_density_guardrails.py diff --git a/docs/AI_INTELLIGENCE_MODULE_SOT.md b/docs/AI_INTELLIGENCE_MODULE_SOT.md index b3053ba..735a91d 100644 --- a/docs/AI_INTELLIGENCE_MODULE_SOT.md +++ b/docs/AI_INTELLIGENCE_MODULE_SOT.md @@ -106,6 +106,7 @@ - 2026-07-02 起 `/observability/host_health` 必須採密集 AI runtime 工作台:首屏使用 `data-density-guardrail="compact-runtime-workbench"`,以「主機級聯、自癒閉環、成本節流」短標籤承接 AI runtime 狀態;hero 說明、KPI 小註與頁尾重複標題不得佔用第一層視覺,畫面先保留建議服務離線、AIOps 未解、自癒成功率、節流供應商、AI 建議服務主機、健康趨勢、自癒閉環、工具層與事件紀錄。 - 2026-07-02 起 `/observability/rag_queries` 必須採密集 AI 知識工作台:首屏使用 `data-density-guardrail="compact-knowledge-workbench"`,以「知識命中、省模閉環、回饋學習」短標籤承接 RAG 召回狀態;hero 說明、KPI 小註與頁尾重複標題不得佔用第一層視覺,畫面先保留查詢數、命中率、省模型、回饋分、查詢串流、使用情境品質與命中內容查閱。 - 2026-07-03 起 `/observability/promotion_review` 必須採密集 AI 晉升例外工作台:首屏使用 `data-density-guardrail="compact-promotion-workbench"`,以「AI 例外、去重守門、防污染」短標籤承接知識晉升例外狀態;hero 說明、KPI 小註與頁尾重複標題不得佔用第一層視覺,畫面先保留待決策、知識庫、30 日採用、污染攔截、例外佇列、策略權重與最近知識;不得把人工審核呈現為 primary flow。 +- 2026-07-03 起 `/observability/ppt_audit_history` 必須採密集 AI 視覺 QA 工作台:首屏使用 `data-density-guardrail="compact-ppt-workbench"`,以「預覽就緒、視覺審核、修復閉環」短標籤承接 PPT 產線狀態;hero 說明、KPI 小註、runtime/env var、DB/table wording 與頁尾重複標題不得佔用第一層視覺,畫面先保留最新簡報、產線健康度、最近可預覽簡報、工作隊列、視覺問題追蹤、產出紀錄與修復流程。 - 2026-07-02 起 `/ai_intelligence` 商品明細與單品作戰詳情的四格價格證據必須可測:PChome 價格、MOMO 參考價、差距、可信度需以 `data-evidence` 固定,並以 `aria-label="價格證據"` 對應可掃描區塊;候選待確認或缺資料只能顯示「候選待確認 / 待補」,不得捏造價格或讓使用者打開 raw payload 才知道判斷依據。 - 2026-07-02 起 `/ai_intelligence` 必須是密集 AI 工作台,不得退回大段文字說明頁:首屏與明細可見內容只保留短狀態、數字、四格證據與下一步按鈕;KPI note、benchmark detail、alert 副句、策略說明、decision copy、來源長句與單品 reason list 不得佔用第一層視覺。`tests/test_ai_intelligence_text_density_guardrails.py` 必須鎖住 `data-density-guardrail="compact-ai-workbench"`、短任務文案、detail meta 與 hidden explanatory copy。 - 2026-07-02 起 `/observability/overview` 也必須採密集 AI 觀測工作台:首屏以 `data-density-guardrail="compact-observability-workbench"`、`AI 觀測 / 風險優先 / 下一步` 與 golden signals 先呈現狀態、數字與操作入口;hero lede、signal note、route desc、host meta 與資料來源長句不得佔用第一層視覺。`tests/test_observability_text_density_guardrails.py` 必須鎖住 compact marker 與 hidden explanatory copy。 diff --git a/docs/guides/external_professional_benchmark.md b/docs/guides/external_professional_benchmark.md index bafdb35..4c65361 100644 --- a/docs/guides/external_professional_benchmark.md +++ b/docs/guides/external_professional_benchmark.md @@ -80,6 +80,7 @@ Baymard 的商品頁與比較 UX 研究強調:使用者需要清楚的 product - AI runtime surface rollout: `/observability/host_health` 已套用 compact AI runtime workbench guardrails;`tests/test_host_health_text_density_guardrails.py` 鎖住首屏短標籤、主機級聯/自癒/節流核心訊號與 hidden explanatory copy。 - AI knowledge surface rollout: `/observability/rag_queries` 已套用 compact AI knowledge workbench guardrails;`tests/test_rag_queries_text_density_guardrails.py` 鎖住首屏短標籤、知識命中/省模閉環/回饋學習核心訊號與 hidden explanatory copy。 - AI promotion exception surface rollout: `/observability/promotion_review` 已套用 compact AI promotion workbench guardrails;`tests/test_promotion_review_text_density_guardrails.py` 鎖住首屏短標籤、AI 例外/去重守門/防污染核心訊號與 non-manual wording。 +- AI visual QA surface rollout: `/observability/ppt_audit_history` 已套用 compact AI visual QA workbench guardrails;`tests/test_ppt_audit_text_density_guardrails.py` 鎖住首屏短標籤、預覽/審核/修復核心訊號與 non-raw env/table wording。 ## 下一步 TODO 候選 @@ -98,6 +99,7 @@ Baymard 的商品頁與比較 UX 研究強調:使用者需要清楚的 product - 已完成: `/observability/host_health` 首屏以「主機級聯 / 自癒閉環 / 成本節流」短標籤與四個核心數字呈現 AI runtime 健康狀態。 - 已完成: `/observability/rag_queries` 首屏以「知識命中 / 省模閉環 / 回饋學習」短標籤與四個核心數字呈現 AI 知識召回狀態。 - 已完成: `/observability/promotion_review` 首屏以「AI 例外 / 去重守門 / 防污染」短標籤與四個核心數字呈現 AI 晉升例外狀態。 + - 已完成: `/observability/ppt_audit_history` 首屏以「預覽就緒 / 視覺審核 / 修復閉環」短標籤呈現 AI 視覺 QA 產線狀態。 ## 參考來源 diff --git a/docs/guides/pchome_ai_automation_priority_backlog.md b/docs/guides/pchome_ai_automation_priority_backlog.md index 9bd5272..ddc0fcd 100644 --- a/docs/guides/pchome_ai_automation_priority_backlog.md +++ b/docs/guides/pchome_ai_automation_priority_backlog.md @@ -101,7 +101,7 @@ ## P1 - Product Visibility And Professional Website Experience -狀態: 進行中,本輪已完成 `/ai_intelligence`、`/observability/overview`、`/ai_automation_smoke`、`/observability/agent_orchestration`、`/observability/ai_calls`、`/observability/quality_trend`、`/observability/budget`、`/observability/business_intel`、`/observability/host_health`、`/observability/rag_queries` 與 `/observability/promotion_review` 密集 AI 工作台文字密度守門。 +狀態: 進行中,本輪已完成 `/ai_intelligence`、`/observability/overview`、`/ai_automation_smoke`、`/observability/agent_orchestration`、`/observability/ai_calls`、`/observability/quality_trend`、`/observability/budget`、`/observability/business_intel`、`/observability/host_health`、`/observability/rag_queries`、`/observability/promotion_review` 與 `/observability/ppt_audit_history` 密集 AI 工作台文字密度守門。 目的: 讓 AI 自動化在產品裡可見,成為專業營運工作流,而不是只藏在後端。 @@ -164,6 +164,10 @@ - 首屏改成 `data-density-guardrail="compact-promotion-workbench"`,以「AI 例外 / 去重守門 / 防污染」短標籤承接知識晉升例外狀態。 - hero 說明、KPI 小註與頁尾重複標題從可見 UI 退場,保留待決策、知識庫、30 日採用、污染攔截、例外佇列、策略權重與最近知識。 - `tests/test_promotion_review_text_density_guardrails.py` 已鎖住 compact marker、第一層晉升例外訊號與 non-manual wording。 +- `/observability/ppt_audit_history` 密集 AI 視覺 QA 工作台文字密度 guard 已完成: + - 首屏改成 `data-density-guardrail="compact-ppt-workbench"`,以「預覽就緒 / 視覺審核 / 修復閉環」短標籤承接 PPT 產線狀態。 + - hero 說明、KPI 小註、runtime/env var、DB/table wording 與頁尾重複標題從可見 UI 退場,保留最新簡報、產線健康度、最近可預覽簡報、工作隊列、視覺問題追蹤與修復流程。 + - `tests/test_ppt_audit_text_density_guardrails.py` 已鎖住 compact marker、第一層視覺 QA 訊號、non-raw wording 與產出紀錄語言。 已完成 / 下一步,必須照順序: @@ -290,6 +294,7 @@ | P1.8 | AI calls compact workbench text-density guardrails | 已完成 | `/observability/ai_calls` first viewport hides explanatory copy; focused density guard test | Apply density guard to remaining high-visibility AI surfaces | | P1.9 | Quality trend compact workbench text-density guardrails | 已完成 | `/observability/quality_trend` first viewport hides explanatory copy; focused density guard test | Apply density guard to remaining high-visibility AI surfaces | | P1.10 | Promotion review compact AI exception workbench guardrails | 已完成 | `/observability/promotion_review` first viewport hides explanatory copy and avoids manual-primary wording; focused density guard test | Apply density guard to PPT audit surface | +| P1.11 | PPT audit compact AI visual QA workbench guardrails | 已完成 | `/observability/ppt_audit_history` first viewport hides explanatory copy and avoids env/table wording; focused density guard test | Continue P1 surface sweep and P3 automation expansion | | P2.1 | External benchmark encoded into requirements | 已完成 | benchmark guide + focused guard test + first-viewport status | P3.1 safe lane expansion | | P3.1 | Extend receipt / replay / drift pattern to more lanes | 已完成 | direct mapping candidate decision lane closeout route + focused tests | P3.2 scheduled automation health summaries | | P3.2 | Scheduled automation health summaries | 已完成 | `/api/ai-automation/scheduled-health-summary` + smoke service focused tests | P3.3 rollback evidence packages | diff --git a/routes/admin_observability_routes.py b/routes/admin_observability_routes.py index 420fe26..cbf1cfe 100644 --- a/routes/admin_observability_routes.py +++ b/routes/admin_observability_routes.py @@ -3139,11 +3139,11 @@ def _enrich_ppt_coverage_items(auto_generation_items, files, generation_runs, au run_status = latest_run.get('status') or '' if latest_run and run_status == 'error': - db_status, db_label = 'error', 'DB 寫入失敗' + db_status, db_label = 'error', '產出紀錄失敗' elif db_backed: - db_status, db_label = 'ready', 'DB 已寫入' + db_status, db_label = 'ready', '紀錄已保留' else: - db_status, db_label = 'planned', '待 DB 寫入' + db_status, db_label = 'planned', '待保留紀錄' if valid_ppt and preview_cached: preview_status, preview_label = 'ready', 'PDF 快取' diff --git a/services/ppt_auto_generation_service.py b/services/ppt_auto_generation_service.py index e30e73c..62a023f 100644 --- a/services/ppt_auto_generation_service.py +++ b/services/ppt_auto_generation_service.py @@ -649,7 +649,7 @@ def get_defined_report_coverage( else: status = "missing" status_label = "待排程補齊" - status_hint = "尚未找到符合定義的檔案或 DB 紀錄。" + status_hint = "尚未找到符合定義的檔案或產出紀錄。" items.append({ "key": job.report_type, "label": job.label, diff --git a/templates/admin/ppt_audit_history.html b/templates/admin/ppt_audit_history.html index ba9c9b9..f249f50 100644 --- a/templates/admin/ppt_audit_history.html +++ b/templates/admin/ppt_audit_history.html @@ -10,11 +10,12 @@ {% import "admin/_observability_labels.html" as obs_label %}
-
+
PPT 視覺 QA 產線 · {{ report_month }} · {{ selected_report_type.label }}

{{ operator_summary.headline }}

+
預覽就緒視覺審核修復閉環

先確認簡報可預覽、可審核,再把問題交給修復流程。

{% if operator_summary.blocker_text %}

{{ operator_summary.blocker_text }}

@@ -39,7 +40,7 @@