From c6c18f1c48617e46591f74e958850f79bf2f8a88 Mon Sep 17 00:00:00 2001 From: ogt Date: Fri, 26 Jun 2026 18:25:12 +0800 Subject: [PATCH] fix: hide raw import errors in UI --- config.py | 2 +- docs/AI_INTELLIGENCE_MODULE_SOT.md | 3 ++- docs/guides/pchome_growth_ui_ux_guardrails.md | 1 + templates/auto_import_index.html | 2 +- templates/system_settings.html | 2 +- tests/test_frontend_v2_assets.py | 10 ++++++++++ 6 files changed, 16 insertions(+), 4 deletions(-) diff --git a/config.py b/config.py index 618686a..82055fb 100644 --- a/config.py +++ b/config.py @@ -402,7 +402,7 @@ YOUTUBE_API_KEY = os.getenv('YOUTUBE_API_KEY', '') # ========================================== # 系統版本與路徑 # ========================================== -SYSTEM_VERSION = "V10.711" +SYSTEM_VERSION = "V10.712" LOG_FILE_PATH = os.path.join(BASE_DIR, 'logs/system.log') public_url = PUBLIC_URL # 用於模板顯示 diff --git a/docs/AI_INTELLIGENCE_MODULE_SOT.md b/docs/AI_INTELLIGENCE_MODULE_SOT.md index 1c9ebf5..4f71176 100644 --- a/docs/AI_INTELLIGENCE_MODULE_SOT.md +++ b/docs/AI_INTELLIGENCE_MODULE_SOT.md @@ -2,7 +2,7 @@ > **最後更新**: 2026-06-26 (台北時間) > **狀態**: 🟢 四 AI Agent 自動化閉環已落地;LLM 路由紅線升級為 Ollama-first 三主機級聯;PChome 後台業績匯入韌性已補強;產品定位正名為「PChome 業績成長自動化作戰系統」;外部市場來源正規化層、自動同步、作戰清單與價格參考表優先讀取、CSV 備援預檢、前台操作入口、高可見頁面繁中化守門、比價/作戰 UI 工作台化、跨平台來源治理與商品身份 UI 契約已建立,GCP embedding 熔斷延後處理、110 proxy rescue 與 direct host health skip 已建立 -> **適用版本**: V10.711 +> **適用版本**: V10.712 --- @@ -796,3 +796,4 @@ POSTGRES_HOST=momo-db | 2026-06-26 | 部署前備份入口必須備到專案根目錄 | V10.709 起根目錄 `backup_system.py` 與 `scripts/tools/backup_system.py` 共用同一套備份流程,預設打包專案根目錄並排除 `.env`、Google token、`.git`、runtime volume 與既有 backups,避免只備到 `scripts/tools` 或把敏感 runtime 檔案包入備份。 | | 2026-06-26 | 低頻頁也不得藏工程 scaffold 或 raw fallback | V10.710 起市場情報停用頁移除舊 preview scaffold 註解,只保留營運可讀狀態與下一步;PChome 爬蟲匯出操作改為下載商品清單;AI 建議頁若外部訊號未整理成結構,不再直接顯示 raw content,而是提示重新整理或補商品線索。 | | 2026-06-26 | 前台不得用爬蟲當使用者主語 | V10.711 起 PChome、設定、舊入口、market intel 與任務確認文字統一使用「商品監控 / 資料擷取 / 監控來源」,不再把「爬蟲」當頁首、導覽、CTA 或提示主語;內部 route/key 可保留以降低部署風險。 | +| 2026-06-26 | 匯入與設定頁不得回吐 raw 後端錯誤 | V10.712 起自動匯入與系統設定頁的未知錯誤 fallback 只顯示使用者可執行的下一步;Google Drive、格式、同步與資料處理異常可分類成營運文案,但不得把 SQL、snapshot、資料表欄位、driver error 或原始 exception 直接顯示在前台。 | diff --git a/docs/guides/pchome_growth_ui_ux_guardrails.md b/docs/guides/pchome_growth_ui_ux_guardrails.md index 7efd205..daece85 100644 --- a/docs/guides/pchome_growth_ui_ux_guardrails.md +++ b/docs/guides/pchome_growth_ui_ux_guardrails.md @@ -15,6 +15,7 @@ 7. 商品型頁面必須把商品身份放在主要視覺區:商品圖、平台商品 ID、商品名稱、售價、賣場連結、可信度與下一步不得分散到難以掃描的位置。 8. 外部主流平台來源治理不得只看 PChome / MOMO;Shopee、Lazada、Amazon、Google Merchant / Shopping、TikTok Shop、LINE 購物、Rakuten、Yahoo 購物、露天、品牌官網 / Shopify、Meta Commerce、Coupang 等來源至少要有待接入契約。未接合法穩定來源前只能標示待接入,不得假裝已監控。 9. 前台頁首、導覽、CTA 與提示不得把「爬蟲」當使用者主語;應使用「商品監控、資料擷取、監控來源、價格來源」等營運語言。內部 route / key 可維持相容,但不得外露成主要文案。 +10. 前台錯誤 fallback 不得直接回傳後端 raw message;未知錯誤也必須轉成「下一步怎麼處理」的營運語言,原始 exception、資料庫表名、欄位名、driver error、runtime error 只可留在內部 log 或維護介面。 ## 每次 UI/UX 修改的驗收 diff --git a/templates/auto_import_index.html b/templates/auto_import_index.html index 5d95090..fd36db9 100644 --- a/templates/auto_import_index.html +++ b/templates/auto_import_index.html @@ -329,7 +329,7 @@ } return '檢查檔案後重新匯入;若重複失敗,請通知維護人員。'; } - return raw || '等待系統更新任務狀態。'; + return '等待系統更新任務狀態;若重複停在異常,請通知維護人員。'; } // ───── 工具 ───── diff --git a/templates/system_settings.html b/templates/system_settings.html index 67e5476..088d23d 100644 --- a/templates/system_settings.html +++ b/templates/system_settings.html @@ -219,7 +219,7 @@ function toImportActionMessage(message) { ) { return '業績資料處理未完整完成,請重新匯入最新檔案;若重複失敗請通知維護人員。'; } - return raw; + return '系統操作暫時沒有完成,請稍後重試;若重複失敗請通知維護人員。'; } function uploadSalesReport() { diff --git a/tests/test_frontend_v2_assets.py b/tests/test_frontend_v2_assets.py index 28407ad..52b4b13 100644 --- a/tests/test_frontend_v2_assets.py +++ b/tests/test_frontend_v2_assets.py @@ -734,6 +734,8 @@ def test_utility_pages_keep_operator_copy_professional(): assert "簡報線上預覽" in ppt_preview assert "下載簡報檔" in ppt_history assert "送出後更新日報、成長分析與今日作戰清單" in auto_import + assert "等待系統更新任務狀態;若重複停在異常" in auto_import + assert "return raw ||" not in auto_import assert "缺少必要資料時,會先停止匯入" in stockout_import assert "先選擇供應商缺貨 Excel 檔。" in vendor_import_js assert "使用情境" in ai_calls @@ -750,6 +752,9 @@ def test_utility_pages_keep_operator_copy_professional(): assert "健康檢查服務" in ai_automation assert "上線證據" in code_review assert "資料服務" in login + system_settings = (ROOT / "templates/system_settings.html").read_text(encoding="utf-8") + assert "系統操作暫時沒有完成,請稍後重試" in system_settings + assert "return raw;" not in system_settings forbidden = [ "工作視窗", @@ -791,6 +796,11 @@ def test_utility_pages_keep_operator_copy_professional(): "Commit:", "變更檔案:", "查看系統日誌", + "could not locate runnable browser", + "daily_sales_snapshot", + "realtime_sales_monthly", + "snapshot_date", + "psycopg2", ] for marker in forbidden: assert marker not in combined