For agentic workers: REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development or superpowers:executing-plans. Steps use checkbox (
- [ ]) syntax.
Goal: 将 sx 库 crm_product_category 迁入 shanxia2.0,产出 ID 映射表,并完整留痕供二次移植。
Architecture: 独立 Python 脚本;主键原样保留(bigint→同值字符串);拓扑序保证 parent_id 有效。
Tech Stack: Python 3.9 · SQLAlchemy raw SQL · legacy_id_to_str · CSV mapping
全局 ID 策略:05-id-preservation-policy.md
设计文档:docs/superpowers/specs/2026-07-12-crm-product-category-data-migration-design.md
操作手册:docs/data-migration/phase-1-crm/step-01-product-category.md
| 文件 | 职责 |
|---|---|
backend/scripts/migrate_crm_product_category.py |
迁移主脚本 |
docs/data-migration/mappings/crm_product_category_id_mapping.csv |
恒等映射 source_id=new_id |
docs/data-migration/mappings/crm_id_mapping.csv |
汇总映射(本步追加 category 段) |
docs/data-migration/phase-1-crm/logs/*.md |
执行批次日志 |
Files:
Create: backend/scripts/migrate_crm_product_category.py
[ ] 1.1 解析 CLI:--dry-run、--source-url、--user-mapping、--mapping-out、--update
[ ] 1.2 连接源/目标库;统计源 del_flag=0 行数
[ ] 1.3 加载 user_mapping_result.csv:crm_user_id → new_user_id;1 → admin
[ ] 1.4 dry-run 打印 5 条字段映射预览,不写库
验证:
cd backend && source venv/bin/activate
ENV_FILE=.env.production python scripts/migrate_crm_product_category.py --dry-run
Files:
Modify: backend/scripts/migrate_crm_product_category.py
[ ] 2.1 实现 topo_sort_categories(rows):父 id 先于子 id
[ ] 2.2 逐行转换字段;id/parent_id 用 str(bigint) 原样保留
[ ] 2.3 INSERT 目标表;事务提交
[ ] 2.4 写出 crm_product_category_id_mapping.csv
验证:
SELECT category_name, parent_id, status, order_num, level
FROM crm_product_category WHERE tenant_no='shanxia2.0' AND del_flag=0
ORDER BY order_num;
-- 预期 5 行,名称与 sx 一致
source_id 且目标行存在 → skip(默认)--update:更新 category_name、order_num、status、parent_id、levelFiles:
docs/data-migration/phase-1-crm/logs/YYYY-MM-DD-HHMM-product-category.mdModify: docs/data-migration/README.md 状态表
[ ] 4.1 按 03-process-logging.md 模板追加日志
[ ] 4.2 更新 README「P1-1 产品分类」为「已执行 / 待执行」
[ ] 4.3 将 category mapping 合并进 crm_id_mapping.csv(列:entity,source_id,new_id,remark)
crm_product + category_id 外键(依赖本步 mapping)docs/superpowers/plans/2026-05-30-crm-iteration1-product.md(代码移植;数据同步另写 step-02)P0 用户 ✅ → P1-1 产品分类(本计划)→ P1-1b 产品 → P1-2 客户 → …
字典 P0-1:无需导入(见 phase-0-foundation/step-01-dict.md)。