Files
gyxx-flow/review.md
T

91 lines
5.9 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.
# 工程复核报告
## 结论
四个旧项目的工作流、定时入口及纳入范围的业务源码已实体复制到新项目,并完成路径、
配置、数据目录和启动方式改造。运行时入口只解析
`src/gyxx_flow/modules/<module>/runtime`,不再导入或启动四个旧目录中的代码。
新项目已经具备统一手工运行和生成 21 个 Windows 定时任务定义的工程能力;本轮没有
注册新任务,也没有禁用、删除或修改旧任务。生产安全切换仍受 P6.4、P6.5 和
P7 门禁约束,不能把“可生成/可 dry-run”表述为“已经生产投运”。
## 源码接管证据
| 模块 | 来源清单文件 | 迁移文件 | 可执行脚本 |
|---|---:|---:|---:|
| content_marketing | 90 | 90 + 1 个新路径模块 | 56 |
| product_commerce | 101 | 101 + 1 个新路径模块 | 49 |
| shop_intelligence | 22 | 22 | 8 |
| supply_chain | 37 | 37 | 18 |
| 合计 | 250 | 256(含 2 个路径模块和 4 个运行时 bootstrap | 131 |
- 四份 `config/source-manifests/*.json` 逐文件记录来源相对路径、来源 SHA-256、目标
相对路径、目标 SHA-256、分类和是否改造。
- 对四个旧目录做只读复核并同步两份动态业务映射后,250/250 个纳入文件来源哈希与
当前迁移清单一致;旧项目没有被本次迁移写入。
- 源码、配置、启动器及动态入口扫描中,四个旧根目录、`GYXX_LEGACY_*_ROOT`
`DeferredLegacyCommandStep``AUTO_FLOW_CONFIG` 的运行时命中均为 0。
- 项目和数据根整体迁移到临时目录后,目录发现、131 个脚本发现及四模块代表工作流
dry-run 均通过。
## 入口与调度证据
- 29 个目录项:21 个 scheduled、7 个 manual、1 个有证据的 unavailable。
- `gyxx scripts list` 发现 131 个新项目本地 Python/BAT/PowerShell 入口。
- `gyxx run``gyxx backfill``gyxx scripts run` 默认 dry-run`--execute` 才启动
迁入后的本地副本。
- 最终候选调度包包含 21 个 XML,动作统一为
`D:\gyxx-flow\.venv\Scripts\python.exe -m gyxx_flow run <id> --scheduled`
- 安装器默认只展示计划;即使显式 `-Apply` 也必须提供一个 `-WorkflowId`,不允许一次
批量切换。
## 自动化验证
- 全量 pytest221 passed;仅有复制脚本内嵌 JavaScript 正则产生的非阻断
`SyntaxWarning`
- 新框架与测试 Ruff:通过。
- 所有可执行 runtime 的 fatal Ruff 规则 `E9/F63/F7/F82`:通过;一个不独立执行的
上游源码摘录已在 manifest 中标记 `source_resource`
- Python compileall、PowerShell AST、来源清单哈希、旧路径扫描和敏感信息扫描:通过。
- 历史数据:48,964 个文件、1,091,997,415 字节,复制前后聚合 SHA-256 一致。
## 适配器状态与尚未通过的门禁
- P5.6 已通过:131 个脚本统一绑定唯一 CDP、独立 Profile/Cookie/storage state;飞书
保持原身份/后端,PostgreSQL 只允许现有云端,Hermes 只允许本机。
- P6.4/P6.5:编排层已有 run journal、effect ledger 和 outbox,但尚未证明每个旧业务
脚本的所有内部外部写入都可追踪且全量幂等。
- P7:需要用户授权、凭据轮换、逐任务切换、真实 7 天/2 周观察和数据/通知对账。
因此工程“源码归属和独立入口”已通过,生产“全量安全执行和切换”尚未通过。
## 四源项目增量对齐复核(2026-07-28)
- 内容营销已合并“发布链接非空即进入采集”、星图普通达人失败不触发全局熔断、按款式和记录精确续跑。
- 商品商业已合并“ERP 编码只认天猫分组”,并把源端新增的波塞冬历史销量回填脚本完整迁入;脚本不引用旧项目。
- 波塞冬回填按 `raw → normalized → curated → exports` 分层,数据库继续使用云端配置,飞书仍使用原身份和项目内写入器。
- 新脚本登记独立 CDP 端口 `22130`Profile/Cookie/storage state 继续由统一绑定派生并可迁移复用。
- 本轮全量 `294 passed`,修复定向测试 18 项通过,compileall、doctor、敏感信息与来源/目标哈希验证通过;当前虚拟环境未安装 Ruff,生产门禁仍保持 incomplete。
## 采集数据统一目录复核(2026-07-27)
- 四模块路径层统一改接共享 `DataLayout.for_module()` / `ModuleDataPaths`;新采集产物固定进入
`data/{raw,normalized,curated,exports,evidence}/<module>`,状态、日志和临时文件分别进入
`state/<module>``logs/<module>``tmp/<module>`
- 内容模块的动态 mapping 和 V2 结果进入 normalized,跨平台 run_all 报告进入 curated
checkpoint 进入 state;商品模块的 checkpoint、失败日志、调试文件和 vendor 下载已收口;
店铺调试输出进入 tmp;供应链缓存/锁/status 进入 state,原始下载、临时处理和最终报表分别
进入 raw、tmp 和 exports。
- 所有审计到的任意 `--output``--data-root` 和 vendor 环境输出均限制在
`GYXX_DATA_ROOT` 内;绝对外部路径或 `..` 逃逸会在写入前失败。
- `var/data/raw/<module>/legacy` 前后均为 48,961 个文件、1,091,967,729 字节;四模块分项
文件数和字节数完全一致,且不存在旁路 `var/raw``var/exports`。证据见
`var/evidence/unified-data-layout-20260727.json`
- 供应链 raw 产物按 `run_id=<id>` 追加保存,编排器只读取本次运行目录且不会清理 raw;
采购更新触发任务放在 state,脚本结束只关闭浏览器进程并保留 Profile/Cookie 供复用。
- 空字符串或纯空白 `GYXX_DATA_ROOT` 会安全回退项目 `var`,不会把 cwd 当数据根。
- 全量回归为 294 passed;新代码 Ruff、compileall、PowerShell AST、四份来源清单目标哈希、
敏感信息和旧根依赖扫描全部通过。5 条 warning 是迁入脚本内嵌 JavaScript 正则的既有
`SyntaxWarning`,不影响本次目录验收。