Files
gyxx-flow/plan.md
T

127 lines
8.7 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.
# GYXX Flow 执行计划与验收清单
规则:只有完成对应验证并保存证据后才把 `[ ]` 改为 `[x]`。每次更新复核
`python -m pytest``gyxx acceptance status` 和本文件。
## P0 设计与迁移基线
- [x] P0.1 固化模块化单体、数据分层、影子运行和逐任务回滚设计。
- 文件:`design.md`
- 验证:设计包含目标、边界、模块、数据、安全、迁移和验收。
- [x] P0.2 建立项目骨架、依赖文件和忽略规则。
- 文件:`pyproject.toml``.gitignore``README.md``src/``tests/`
- 验证:干净环境可安装,CLI 能显示帮助。
- [x] P0.3 生成四个旧项目的代码、任务、数据基线清单。
- 文件:`var/baseline/<timestamp>/`
- 验证:包含 21 个实际任务、代码哈希、数据汇总;不包含密钥值。
- [x] P0.4 建立敏感信息扫描并记录轮换门禁。
- 文件:`src/gyxx_flow/security/``config/secrets.example.env`
- 验证:仓库扫描无明文凭据;生产切换要求凭据轮换确认。
## P1 核心运行与数据基础设施
- [x] P1.1 TDD 实现可移植路径配置,不允许业务代码硬编码旧盘符。
- [x] P1.2 TDD 实现 `RunContext`、稳定 `run_id` 和业务日期校验。
- [x] P1.3 TDD 实现原子 JSON 写入、SHA-256 和 artifact manifest。
- [x] P1.4 TDD 实现 raw/normalized/curated/export/evidence/state/log/tmp 目录解析。
- [x] P1.5 TDD 实现结构化运行及步骤状态记录。
- [x] P1.6 TDD 实现文件锁、工作流锁和命名资源锁。
## P2 工作流引擎与 CLI
- [x] P2.1 TDD 实现工作流、步骤、依赖、超时和重试模型。
- [x] P2.2 TDD 实现命令步骤及无副作用 dry-run。
- [x] P2.3 TDD 实现 shadow 模式,禁止生产 Sink 和正式通知。
- [x] P2.4 TDD 实现 `gyxx list``gyxx run``gyxx backfill`
- [x] P2.5 TDD 实现失败恢复、步骤级重跑和最终退出码。
- [x] P2.6 建立 `ops` 运行记录和 outbox 接口。
## P3 工作流目录与调度
- [x] P3.1 建立四个模块及模块依赖约束测试。
- [x] P3.2 映射 21 个实际计划任务到稳定 workflow ID。
- [x] P3.3 登记未调度/手工工作流,保持原触发语义。
- [x] P3.4 建立声明式 schedule 配置及 schema 校验。
- [x] P3.5 生成 Windows Task Scheduler XML/PowerShell 安装计划,但默认不应用。
- [x] P3.6 实现 `gyxx schedule plan`,检测系统任务漂移。
## P4 迁移和验收工具
- [x] P4.1 实现旧命令适配器,所有旧根目录均通过配置注入。
- [x] P4.2 实现历史数据只复制、不删除的迁移计划及校验清单。
- [x] P4.3 实现文件数量、字节数、SHA-256 对账。
- [x] P4.4 实现 shadow 结果主键、行数、指标和错误对比。
- [x] P4.5 实现 `gyxx doctor` 环境、解释器、CLI、路径和权限预检。
- [x] P4.6 实现 `gyxx acceptance status` 和机器可读验收报告。
- [x] P4.7 生成四个旧项目的源码迁移清单;每个文件记录来源哈希、目标路径和处置类型。
## P5 分模块源码迁移
- [x] P5.1 将 `shop_intelligence` 全部业务源码、资源和入口复制并改造到新模块;两个周任务可独立运行。
- [x] P5.2 将 `supply_chain` 全部业务源码、资源和入口复制并改造到新模块;三个定时和全部手工入口可独立运行。
- [x] P5.3 将 `content_marketing` 全部业务源码、资源和入口复制并改造到新模块;全部定时和手工入口可独立运行。
- [x] P5.4 将 `product_commerce` 全部业务源码、资源、内置 vendors 和入口复制并改造到新模块;全部定时和手工入口可独立运行。
- [x] P5.5 消除营销二维码写入商品项目、商品配置回退到 Auto Flow,以及任何跨业务模块内部导入。
- [x] P5.6 将重复的飞书、PostgreSQL、Hermes、浏览器能力收敛为适配器,业务行为保持可回放对账。
- 证据:`src/gyxx_flow/adapters/integration.py``browser.py``bootstrap.py``runtime_exec.py`;原飞书后端不变,数据库只允许云端,Hermes 只允许本机。
- [x] P5.7 删除最终工作流中的 `DeferredLegacyCommandStep`,运行时不再要求 `GYXX_LEGACY_*_ROOT`
- [x] P5.8 全量入口分类完成:scheduled、manual、library、intentionally-excluded 均有证据,不遗漏脚本。
## P6 自动化工程验收
- [x] P6.1 21 个计划任务逐项有且只有一个新项目本地入口映射,没有意外新增。
- [x] P6.2 源码、配置、启动命令和动态导入中均不存在四个旧项目的运行时依赖。
- [x] P6.3 临时隐藏四个旧项目路径并更换项目根、数据根后,入口导入和 dry-run 全部通过。
- [ ] P6.4 每个迁移后的业务运行可从 run_id 追溯输入、输出、日志和外部写入。
- [ ] P6.5 迁移后的业务代码重跑不会重复写数据库、飞书或正式通知。
- [x] P6.6 旧数据复制前后数量、大小和 SHA-256 一致。
- [x] P6.7 迁移后的浏览器 Profile 和共享资源全部进入新数据根,且并发锁验证通过。
- [x] P6.8 源码仓库敏感信息扫描通过。
- [x] P6.9 全量测试、静态检查、源码覆盖清单和代码评审无阻断项。
## P7 生产切换门禁
- [ ] P7.1 用户确认迁移基线、密钥轮换和第一个切换任务。
- [ ] P7.2 单次只切一个任务;旧任务只禁用、不删除。
- [ ] P7.3 回滚演练证明能关闭新任务并重新启用旧任务。
- [ ] P7.4 日任务真实连续成功 7 天。
- [ ] P7.5 周任务真实连续成功 2 个周期。
- [ ] P7.6 月任务指定历史月份回放通过。
- [ ] P7.7 生产通知无重复,数据库/飞书对账通过。
- [ ] P7.8 旧项目只读保留期满并取得退役确认。
## P8 完成
- [ ] P8.1 所有上述检查项均有证据且已勾选。
- [x] P8.2 按源码完整迁移的新口径重新生成 `review.md``final_report.md`
- [x] P8.3 按独立运行的新口径更新部署、迁移、回滚和日常运维手册。
## P9 每脚本运行时隔离与外部系统统一边界
- [x] P9.1 为 131 个可执行脚本建立显式、稳定、唯一的 `22000..22999` CDP 端口分配。
- [x] P9.2 每脚本独立 Profile、Cookie、storage state,全部位于 `GYXX_DATA_ROOT/state/browser`
- [x] P9.3 顶层 workflow、手工脚本和嵌套 Python/PowerShell 子脚本均按真实 script ID 重新绑定。
- [x] P9.4 Cookie/storage state 支持首次为空、原子保存和后续运行复用,内容不进入日志或源码。
- [x] P9.5 飞书保持原 lark-cli profile、身份和 OpenAPI 应用,不切换后端或凭据来源。
- [x] P9.6 `PG_*``DB_*``AUTOFLOW_PG_*` 统一映射现有云端 PostgreSQL,拒绝本地回环数据库。
- [x] P9.7 Hermes 保持本机 HTTP/CLI,非回环 Hermes URL 在业务调用前失败。
- [x] P9.8 移除生产代码固定 9222/18801/18802/18803 和源码目录/临时 Profile,刷新迁移哈希。
- [x] P9.9 Python 3.12 全量 `294 passed`,compileall、敏感信息、端口和旧根依赖扫描通过;历史 Ruff 证据保留。
## P10 采集数据统一分层与目录收口
- [x] P10.1 四个模块的新产物统一使用 `<GYXX_DATA_ROOT>/data/{raw,normalized,curated,exports,evidence}/<module>`,运行状态、日志和临时文件分别使用 `state/``logs/``tmp/`
- [x] P10.2 JSON、Markdown、CSV、XLS/XLSX、浏览器下载和截图均由模块路径边界定位,不写入源码目录、模块目录或当前工作目录。
- [x] P10.3 `var/data/raw/<module>/legacy` 历史数据不移动、不删除、不改写,迁移前后文件数和总字节数一致。
- [x] P10.4 四模块保留原业务脚本公开路径常量,统一改接共享 `ModuleDataPaths`,新增模块只需声明模块名即可扩展。
- [x] P10.5 更换 `GYXX_DATA_ROOT` 后所有产物路径整体迁移,路径解析不创建目录、不访问四个旧项目。
- [x] P10.6 路径红测、静态旁路扫描、全量测试、Ruff、compileall、敏感信息和旧根依赖扫描全部通过,清单与验收报告已刷新。
## P11 四源项目增量 Bug 修复重新对齐(2026-07-28
- [x] P11.1 以四份来源清单 SHA-256 为基线,识别源端变更、新增、删除和目标端二次改造。
- [x] P11.2 合并内容营销模块发布链接非空触发、星图普通失败不熔断和精确续跑修复。
- [x] P11.3 合并商品模块“ERP 编码只读取天猫分组”的权威来源修复,并迁入波塞冬历史销量回填工具。
- [x] P11.4 刷新来源/目标哈希、两份动态业务映射、迁移清单和新增回归测试,不纳入运行数据、临时文件或敏感状态。
- [x] P11.5 定向测试、全量测试、compileall、敏感信息、旧根依赖和 doctor 通过;acceptance 正确保留 P6/P7 生产门禁为 incomplete,Ruff 因当前虚拟环境未安装而未执行。