# 标签层级迁移一键包 ## Before 用户连续提出:把图片移动到图片下面、上团购链接移动到如何上架、两个旧类合并为商品修改、未命中目标范围改名为其他、人工领域也按同一套层级重构。 执行方式依赖临时脚本和人工记忆,容易出现文件名是新版本但源数据仍取旧版本的问题,例如 v27/v28 产物里残留 v26 旧标签。 ## After 先写规则: ```yaml migration_id: 商品域_v26_to_v28 source_version: v26 target_version: v28 invariants: row_count: 9335 session_count: 9335 rules: - type: merge from_path: - 价格/库存/购买规则调整 - 商品信息与素材维护 to_path: 商品修改 child_label_source: 目标对象表 old_bucket_expected_remaining: 0 - type: rename from_path: 未命中目标范围 to_path: 其他 - type: move from_path: 定邀/报白/白名单准入 to_path: 商品类目/定邀/报白/白名单准入 expected_count: 101 ``` 再跑一键包: ```bash python data-analysis-workspace/scripts/taxonomy_migration_audit_pack.py \ --input output/v26/session_detail.csv \ --rules data-analysis-workspace/config/taxonomy_migrations/商品域_v26_to_v28.yaml \ --out output/taxonomy_migration/商品域_v28 ``` 产物必须包含: | 产物 | 用途 | |---|---| | `detail_v28.csv` | 迁移后逐行明细 | | `summary_v28.xlsx` | 一级/二级/子类汇总 | | `review_v28.html` | 可人工复核页面 | | `migration_audit_v28.xlsx` | 每条规则命中数、旧类剩余、新类增量 | | `manifest.json` | 输入、规则、输出、断言结果 | 成功信号:`row_count=9335`、`session_count=9335`、旧类剩余为 `0`、所有规则都有命中统计、HTML/CSV/XLSX/manifest 版本一致。 失败信号:源文件版本与规则版本不一致、旧类未清零、规则未命中、迁移后总行数变化、未命中项超过阈值。失败时脚本不写最终版文件,只写 `failed_audit/` 供复查。