Files
ewoooc/docs/memory/frontend_v3_handoff_20260512.md
2026-05-13 18:57:14 +08:00

176 lines
9.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Frontend V3 Handoff 2026-05-12
## 目的
這份 handoff 給下一個 Codex session 接續「前端 V3 全站 UI/UX 與響應式修正」使用。
## 已完成
- 已閱讀並遵守專案入口規則:`AGENTS.md``CONSTITUTION.md`、ADR-011 部署紅線、部署 SOP。
- 已評估 Claude Code 的「立刻 Flask → FastAPI」建議結論改為
- FastAPI 可作為 strangler migration 中期方向。
- 不作為前端 V3 落地前置條件。
- 不做大爆炸式後端重寫。
- 已新增 `docs/adr/ADR-036-fastapi-strangler-not-frontend-prerequisite.md`,並更新 `docs/adr/README.md`
- 已把 V3 shell/tokens/page assets 落到 Flask runtime
- `templates/ewoooc_base.html`
- `templates/components/_ewoooc_shell.html`
- `web/static/css/ewoooc-tokens.css`
- `web/static/css/ewoooc-shell.css`
- `web/static/css/ewoooc-dotmatrix.css`
- `web/static/css/ewoooc-tokens-v2-alias.css`
- 多個 `web/static/css/page-*.css`
- 多個 `web/static/js/page-*.js`
- 已保留真實功能頁,拒絕直接用 `production_v3 3/templates/dashboard.html` 與 observability prototype 覆蓋正式頁,因為會移除 PChome、AI 挑品、歷史價格、觀測台真實資料。
- 已修 `/sales_analysis` 首次進頁錯誤:
- `routes/sales_routes.py``category_data=cat_data`
- `templates/sales_analysis.html` 對 chart JSON payload 補 default fallback避免 Jinja `Undefined``tojson`
- 已同步版本:
- `app.py` `SYSTEM_VERSION = "V10.91"`
- `config.py` `SYSTEM_VERSION = "V10.91"`
- 已更新 `TODO_NEXT_STEPS.txt`,記錄 V3 守門落地、正式推版與後續 FastAPI inventory。
## 已部署到正式環境
- 正式 URL`https://mo.wooo.work`
- 部署方式:白名單 tarball 同步 55 個 V3 runtime 檔案,再單獨同步 `config.py`
- 正式端只 recreate `momo-app`
- `docker compose up -d --no-deps --force-recreate momo-app`
- 未碰 `momo-db`
- 未使用 `--remove-orphans`
- 正式回滾備份:
- runtime files`/tmp/codex_v3_predeploy_20260512_144835.tgz`
- config`/tmp/config.py.pre_v3_20260512_145111`
## 已通過驗證
- 本機 focused pytest`75 passed, 1 warning`
- `git diff --check` 通過。
- `./scripts/quick_review.sh --check-observability-css` 通過。
- `./scripts/quick_review.sh --observability-ui` 通過。
- `./scripts/quick_review.sh --observability-qa --skip-production` 通過。
- 正式:
- `https://mo.wooo.work/health` 回報 `V10.91`
- `momo-pro-system``momo-scheduler``momo-telegram-bot``momo-db` 全部 healthy。
- `./scripts/quick_review.sh --observability-qa --base-url https://mo.wooo.work` 通過。
- V3 smoke 200`/sales_analysis``/daily_sales``/monthly_summary_analysis``/ai_recommend``/auto_import``/vendor-stockout/*``/growth_analysis``/settings``/logs``/`
## 2026-05-12 V10.92 追更
- 已完成 `/daily_sales` 本機 route 驗證與 responsive 修正。
- 已完成 `/edm` 桌機外溢與 mobile responsive containment 修正。
- 已將 V3 內容最大寬度調整為 `1600px`,改善寬螢幕活動頁與資料表使用空間。
- 已移除 V3 主要頁面 CSS 中殘留的負字距。
- 已新增全頁 responsive overflow 自動化:
- `scripts/check_v3_responsive_ui.js`
- 本機全頁 responsive audit 已通過,覆蓋 23 個主要 routedesktop 1440 與 mobile 390 共 46 項皆 PASS。
- 本機 observability QA 已通過:
- focused pytest `75 passed, 1 warning`
- `git diff --check`
- `scripts/check_v3_responsive_ui.js`
- 已白名單部署到正式環境 `https://mo.wooo.work`,版本升至 `V10.92`
- 正式端只 recreate `momo-app`
- `docker compose up -d --no-deps --force-recreate momo-app`
- 未碰 `momo-db`,未使用 `--remove-orphans`
- 正式回滾備份:
- `/tmp/codex_v3_1092_predeploy_20260512_164549.tgz`
- 正式驗證已通過:
- `/health` 回報 `V10.92`
- `momo-pro-system``momo-scheduler``momo-telegram-bot``momo-db` 全部 healthy。
- `scripts/check_v3_responsive_ui.js``https://mo.wooo.work` 通過23 route × desktop/mobile = 46/46 PASS。
- `./scripts/quick_review.sh --observability-qa --base-url https://mo.wooo.work` 通過。
## 2026-05-13 V10.115 main 追更
- main 已補 AI 觀測台 V3 responsive / overflow 守門:
- `scripts/check_responsive_overflow.js` 會把 visual overflow offenders 視為失敗。
- 表格與圖表允許在 `.obs-table-shell``.obs-chart-frame` 等局部容器內滾動,避免整頁水平外溢。
- `observability-system.css` 與 Flask mirror `web/static/css/observability-system.css` 已同步補強:
- bounded table/chart/mobile containment。
- badge / pill / nested surface 對比規範。
- hero / panel 密度收斂,避免 inline legacy template 保留裝飾空白。
- 本機 QA 已通過:
- `python3 scripts/sync_observability_css.py --check`
- `./scripts/quick_review.sh --observability-ui`
- `./scripts/quick_review.sh --observability-qa --skip-production`
- focused frontend / Phase 3f pytest。
- 本段只記錄 main repo 推版與本機 QA未在本段宣稱正式環境已完成 V10.115 部署驗證。
## 2026-05-13 V10.116 main 追更
- main 已補 AI 觀測台 rendered visual contract
- `scripts/check_observability_visual_contract.js`
- `scripts/check_observability_visual_contract.sh`
- `./scripts/quick_review.sh --observability-visual`
- `scripts/check_observability_suite.sh` 在 production smoke 後有第 4 步;`--skip-production` 時會明確 skip rendered visual contract。
- 觀測台手機密度與商業情報頁 title/chip 對比已補強,`templates/admin/business_intel.html` 的 H1 已有 `biz-title` classV10.116 main 版的 local rendered contract 已覆蓋 10 頁 × desktop/tablet/mobile 30 項 PASS。
- 本機 SQLite visual QA 曾因 `/observability/host_health` GET 頁嘗試寫 `host_health_probes` 而噴 BIGINT autoincrement warningmain 已改為 SQLite session 下略過 probe persistence正式 Postgres 路徑仍保留寫入。
- 本段只記錄 main repo 推版與本機 QA未在本段宣稱正式環境已完成 V10.116 部署驗證。
## 2026-05-13 V10.117 main 追更
- AI 觀測台已改成 tokenized dot-matrix 背景語彙,`scripts/check_observability_visual_contract.js` 會檢查 hero/signal/panel surface 的 rendered `background-image` 必須是 `radial-gradient`,並防止 legacy `linear-gradient``background-image: none` 回流。
- `static/css/observability-system.css` 檔尾保留 terminal dot-matrix layer不要把它移回 v3.4/v3.5 neutralizer 之前,否則 computed style 會被後段 `background-image: none !important` 覆蓋。
- 本機 `http://127.0.0.1:5017` 已重跑 rendered visual contract10 頁 × desktop/tablet/mobile 共 30 項 PASS。
## 重要使用提醒
- 不要用 `file://.../templates/*.html` 預覽 Jinja 模板。它需要 Flask route 注入 `url_for()`、context 與 session。
- 正確本機預覽方式:
- 啟動 Flask`LOGIN_PASSWORD=codex-local-password SECRET_KEY=codex-local-secret USE_POSTGRESQL=false .venv/bin/flask --app app:app run --host 127.0.0.1 --port 5003`
- 用瀏覽器開:`http://127.0.0.1:5003/daily_sales``http://127.0.0.1:5003/edm` 等 route。
- 使用 Browser plugin 時,應導到 localhost route不要開 template 檔。
## 未完成
- 使用者指出「很多頁面排版都有問題,且必須全部確認手機版」。
- `/daily_sales``/edm`、全頁 responsive overflow 自動化與 V10.92 正式部署已完成。
- 尚未完成所有頁面的人工 desktop/mobile 視覺逐頁設計審查;目前完成的是自動化 overflow guard 與重點頁抽看。
- 若下一輪繼續 UI/UX建議從「自動化已過但人工視覺仍需精修」的頁面開始例如長表格密度、空狀態、文案層級與 mobile 互動細節。
## 下一個 session 建議順序
1. 啟動本機 Flask server導 in-app browser 到目標 route。
2. 用 desktop 與 mobile 寬度檢查:
- 1365/1440 desktop
- 390 mobile
- 不得有 body horizontal overflow。
- text 不得重疊或被裁切。
- 表格/日曆若需要橫向滾動,必須有明確容器與提示,不能讓整頁外溢。
3. 每輪 UI 變更後跑全頁 responsive overflow guard`scripts/check_v3_responsive_ui.js`,至少覆蓋:
- `/`
- `/edm`
- `/sales_analysis`
- `/daily_sales`
- `/monthly_summary_analysis`
- `/growth_analysis`
- `/ai_recommend`
- `/auto_import`
- `/vendor-stockout/`
- `/vendor-stockout/import`
- `/vendor-stockout/list`
- `/settings`
- `/logs`
- `/observability/*` 10 頁
4. 全頁本機 QA 通過後,才按部署 SOP 白名單同步正式。
## 當前工作樹注意事項
- 工作樹很髒,混有多批未提交變更與大量 untracked 原型/文件/前端資料夾。
- 不要整包 rsync 或整包 commit。
- 不要 revert 使用者或其他 session 的變更。
- 部署只能用白名單。
- 特別避免同步:
- `.claude/`
- `production_v3*/`
- `frontend/`
- `MOMO Pro/uploads/`
- `data/dashboard_full_cache.pkl`
- 未確認的 docs/design dump
## 已知本機/正式 warning
- 本機 Python 3.9 / LibreSSL 會有 urllib3 warning。
- 本機 SQLite 缺 `embedding_retry_queue` 時 OCLearn worker 會 warning。
- 正式 compose 會警告 `momo-db` orphan這是 ADR-011 已知狀態,禁止 `--remove-orphans`