5.9 KiB
5.9 KiB
工程复核报告
结论
四个旧项目的工作流、定时入口及纳入范围的业务源码已实体复制到新项目,并完成路径、
配置、数据目录和启动方式改造。运行时入口只解析
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,不影响本次目录验收。