記錄 Market Intel 正式端只讀複核

This commit is contained in:
OoO
2026-05-13 12:23:46 +08:00
parent ab612cb33d
commit c78bb1d453
2 changed files with 16 additions and 0 deletions

3
.gitignore vendored
View File

@@ -105,6 +105,9 @@ docker-compose.frontend.yml
docs/design/
docs/design_audit_frontend/
# 本機觀測台 macro prototype未被任何模板 import 前不入庫)
templates/components/_observability_macros.html
# 測試與覆蓋率報告
.pytest_cache/
.coverage

View File

@@ -62,6 +62,18 @@
- Phase 19 migration blueprint新增 `/api/market_intel/migration_blueprint` 與 UI「Schema migration 草案」,產生 `migrations/032_market_intel_core_schema.sql` 建議內容、migration apply command shape 與 seed writer command design預設 `file_created=false`、`migration_executed=false`、`database_commit_executed=false`,且 forward SQL 只允許 additive DDL版本同步至 V10.89。
- Phase 20 migration file draft新增本地草稿檔 `migrations/032_market_intel_core_schema.sql`blueprint API 會檢查檔案存在且內容與 blueprint 相符;仍然 `migration_executed=false`、`database_session_created=false`、`database_commit_executed=false`;版本同步至 V10.90。
- Phase 21 seed writer CLI skeleton新增 `scripts/market_intel_seed_writer.py`、`services/market_intel/seed_writer_cli.py` 與 `/api/market_intel/seed_writer_cli_status`CLI 可輸出 seed writer blocked plan但即使帶 `--execute` 與 approval token 也會拒絕真寫入,維持 `database_session_created=false`、`database_commit_executed=false`;版本同步至 V10.94。
- Phase 22 app-only release gate`/api/market_intel/deployment_readiness` 改為區分「安全檢查已可進 app-only 推版」與「API 不執行部署動作」;新增 `mode=app_only_release_gate`、`execution_boundary`,維持 `api_runs_migration=false`、`api_writes_database=false`、`production_deployed=false`;版本同步至 V10.95。
- 正式環境 V10.95 已白名單部署:備份 `/tmp/codex_market_intel_v1095_predeploy_20260512_194041.tgz` 與 compose 備份 `/tmp/docker-compose.market-intel-v1095-mount-20260512_194827.yml`,同步 market_intel runtime 檔案並補 app-only `scripts/`、`migrations/` mount 後僅 recreate `momo-app`,未碰 `momo-db`、未使用 `--remove-orphans``https://mo.wooo.work/health` 回報 V10.95market_intel schema/writer/readiness/migration/seed execute-block smoke 通過。
- Phase 23 seed transaction preview`/api/market_intel/seed_writer_cli_status` 內新增 `transaction_preview`,輸出 `market_platforms` idempotent upsert SQL template、parameter hash、diff 狀態與 runtime orderUI 新增「Seed CLI 交易預覽」panel仍維持 `database_session_created=false`、`transaction_opened=false`、`database_commit_executed=false`;版本同步至 V10.96。
- 正式環境 V10.96 已白名單部署:備份 `/tmp/codex_market_intel_v1096_predeploy_20260512_211619.tgz`,僅同步 market_intel runtime/docs/test 檔案並 recreate `momo-app`,未碰 `momo-db`、未使用 `--remove-orphans``https://mo.wooo.work/health` 回報 V10.96`seed_writer_cli_status` dry-run/execute-block、deployment readiness 與正式頁 UI smoke 均通過。
- Phase 24 read-only DB schema probe新增 `/api/market_intel/schema_db_probe` 與 UI「正式 DB Schema 探針」panel預設 `execute=false` 只回 planned、不連 DB人工 smoke 才可用 `execute=true` 查正式 DB catalog不使用 `DatabaseManager()`、不呼叫 `create_all()`、不建立 ORM session、不寫入、不 commit版本同步至 V10.97。
- 正式環境 V10.97 已白名單部署:備份 `/tmp/codex_market_intel_v1097_predeploy_20260512_214226.tgz`,僅同步 market_intel runtime/docs/test 檔案並 recreate `momo-app`,未碰 `momo-db`、未使用 `--remove-orphans``https://mo.wooo.work/health` 回報 V10.97`schema_db_probe` planned/read-only execute、seed execute-block、deployment readiness 與正式頁 UI smoke 均通過。
- Phase 25 platform seed DB diff probe新增 `/api/market_intel/platform_seed_db_diff` 與 UI「平台 Seed DB 差異探針」panel預設 `execute=false` 只回 planned、不連 DB人工 smoke 才可用明確只讀參數比對 adapter seed 與 `market_platforms` 既有 rows不使用 `DatabaseManager()`、不建立 ORM session、不寫入、不 commit版本同步至 V10.98。
- 正式環境 V10.98 已白名單部署:備份 `/tmp/codex_market_intel_v1098_predeploy_20260512_220309.tgz`,僅同步 market_intel runtime/docs/test 檔案並 recreate `momo-app`,未碰 `momo-db`、未使用 `--remove-orphans``https://mo.wooo.work/health` 回報 V10.98`platform_seed_db_diff` planned/read-only execute、seed execute-block、deployment readiness 與正式頁 UI smoke 均通過;正式 DB 只讀 diff 顯示 `market_platforms` 目前 0 筆,四平台 seed 仍 missing符合未正式寫入狀態。
- Phase 26 platform seed CLI writer`scripts/market_intel_seed_writer.py` 支援 CLI-only 受控寫入,必須同時帶 `--execute`、`--apply-real-write` 與確認 token 才會以 SQLAlchemy Core 短 transaction upsert `market_platforms`API 仍不執行寫入,不建立 ORM session、不連外、不掛 schedulerV10.101 補強 insert 顯式寫入 `created_at` / `updated_at`,避免正式 schema 無 default 時觸發 not-null rollback。
- 正式環境 V10.101 已白名單部署:備份 `/tmp/codex_market_intel_v10100_predeploy_20260513_103809.tgz`、`/tmp/codex_market_intel_v10101_predeploy_20260513_104053.tgz` 與 seed 前快照 `/tmp/codex_market_platforms_v10100_before_20260513_103809.json`;僅 recreate `momo-app`,未碰 `momo-db`、未使用 `--remove-orphans`。CLI seed 首次因 timestamp not-null rollbackV10.101 修正後成功 insert `momo/pchome/coupang/shopee` 四筆 seedread-only diff 顯示 existing=4、missing=0、matching=4正式頁 console error 0。
- 2026-05-13 Codex 只讀複核:`https://mo.wooo.work/health` 回報 V10.111`/api/market_intel/status` 仍為 `enabled=false`、`crawler_enabled=false`、`write_enabled=false`、`dry_run_only=true`、phase 26`/api/market_intel/platform_seed_db_diff?execute=true&platform=all` 只讀確認 `market_platforms` 已有 `momo/pchome/coupang/shopee` 四筆,`existing_seed_count=4`、`missing_codes=[]`、`database_write_executed=false`。
- 注意:正式端 `/api/market_intel/seed_writer_cli_status?execute=true&platform=all` 仍回傳舊版 `approval_token_hint=APPROVED_MARKET_INTEL_SEED_WRITE_V1` 與固定 token gate 文案,與 main 已入庫的一次性環境 token hardening 不一致;下次正式白名單部署需優先同步 `services/market_intel/seed_writer_cli.py`、`services/market_intel/service.py`、`scripts/market_intel_seed_writer.py`,並 smoke 確認不再回吐 `approval_token_hint`。
- Schema smoke`tests/test_market_intel_skeleton.py` 檢查 `Base.metadata` 內含 ADR-035 七張 `market_*` tables。
- Desktop UI QA本機只註冊 `market_intel_bp` 的 Flask harness 載入 `/market_intel`,確認 Phase 15、候選預覽、writer preview、安全 flags、點陣暖紙視覺正常console error 0。
- API QA`/api/market_intel/schema_smoke` 通過 7 張表與 `market_platforms` 必要欄位檢查;`/api/market_intel/platform_seed_writer_plan` 回傳 4 筆 dry-run upsert preview`writes_executed=false`,四平台皆 `blocked_dry_run_only`。
@@ -70,6 +82,7 @@
【下次待辦】
- 補 UI preview panel 真 390px 截圖 QA本輪 in-app browser 不支援直接設定 viewport且 data URL iframe QA 被瀏覽器安全策略阻擋,不做繞過。
- 正式端 seed writer token-hardening drift優先白名單同步 main 的一次性環境 token 版本,避免 API 暴露固定 approval token hint。
- 正式推版前需實際執行 worktree scope review、`python backup_system.py`、commit/push 目標變更、讀 deployment SOP 與 ADR-011且只跑 `/health` 與市場情報頁 smoke。
- 下一步才可在明確批准後設計 seed writer 的真寫入 implementation gate預設環境不得寫 DB也不得執行 migration。
- 市場情報 UI 後續頁面必須沿用 V2 暖紙、暖墨、等寬數字與點陣風格,禁止複製巨型分析頁 template 模式。