feat: consolidate legacy workflows into gyxx-flow
This commit is contained in:
@@ -0,0 +1,90 @@
|
||||
# 工程复核报告
|
||||
|
||||
## 结论
|
||||
|
||||
四个旧项目的工作流、定时入口及纳入范围的业务源码已实体复制到新项目,并完成路径、
|
||||
配置、数据目录和启动方式改造。运行时入口只解析
|
||||
`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`,不允许一次
|
||||
批量切换。
|
||||
|
||||
## 自动化验证
|
||||
|
||||
- 全量 pytest:221 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`,不影响本次目录验收。
|
||||
Reference in New Issue
Block a user