# 模板迁移指南 ## 📋 迁移文件概览 已为每个模板创建了单独的migration文件,方便管理和维护: ### 🗃️ 迁移文件列表 | 时间戳 | 文件名 | 模板类型 | 模板名称 | 积分消耗 | 说明 | |--------|---------|----------|----------|----------|------| | 1725434673000 | CreateN8nTemplatesTable.ts | 基础表 | - | - | 创建n8n_templates表结构 | | 1725434680000 | AddPhotoRestoreTemplate.ts | image | 老照片修复上色 | 12 | 黑白照片修复和上色 | | 1725434690000 | AddCharacterFigurineTemplate.ts | video | 人物手办 | 28 | 人物手办制作和视频 | | 1725434700000 | AddPetFigurineTemplate.ts | video | 宠物手办 | 30 | 宠物手办制作和视频 | | 1725434710000 | AddCosplayRealPersonTemplate.ts | video | cos真人 | 25 | Cosplay真人照片生成 | | 1725434720000 | AddGarageOpeningTemplate.ts | video | 车库开门 | 35 | 豪宅车库开门场景 | | 1725434730000 | AddJapaneseMagazineTemplate.ts | video | 日本杂志 | 32 | 日本杂志风格海报 | | 1725434740000 | AddNuclearExplosionTemplate.ts | video | 原子弹爆炸 | 20 | 核爆炸特效视频 | | 1725434750000 | AddOpenEyesTemplate.ts | image | 闭眼照片修复 | 10 | 修复照片闭眼问题 | ## 🚀 执行迁移 ### 1. 运行所有迁移 ```bash npm run migration:run ``` ### 2. 检查迁移状态 ```bash npm run typeorm migration:show ``` ### 3. 回滚最后一个迁移 ```bash npm run migration:revert ``` ## 📊 迁移顺序说明 迁移会按照时间戳顺序执行: 1. **CreateN8nTemplatesTable** - 创建基础表结构和索引 2. **AddPhotoRestoreTemplate** - 添加老照片修复模板 3. **AddCharacterFigurineTemplate** - 添加人物手办模板 4. **AddPetFigurineTemplate** - 添加宠物手办模板 5. **AddCosplayRealPersonTemplate** - 添加cos真人模板 6. **AddGarageOpeningTemplate** - 添加车库开门模板 7. **AddJapaneseMagazineTemplate** - 添加日本杂志模板 8. **AddNuclearExplosionTemplate** - 添加原子弹爆炸模板 9. **AddOpenEyesTemplate** - 添加闭眼照片修复模板 ## 🔍 验证迁移结果 ### 查看所有模板 ```sql SELECT id, code, name, template_type, credit_cost, is_active FROM n8n_templates ORDER BY sort_order DESC, created_at ASC; ``` ### 按类型分组统计 ```sql SELECT template_type, COUNT(*) as count, AVG(credit_cost) as avg_cost, MIN(credit_cost) as min_cost, MAX(credit_cost) as max_cost FROM n8n_templates WHERE is_active = true GROUP BY template_type; ``` ### 验证数据完整性 ```sql -- 检查必填字段 SELECT COUNT(*) as total_templates FROM n8n_templates; SELECT COUNT(*) as templates_with_code FROM n8n_templates WHERE code IS NOT NULL; SELECT COUNT(*) as active_templates FROM n8n_templates WHERE is_active = true; -- 检查重复代码 SELECT code, COUNT(*) as count FROM n8n_templates GROUP BY code HAVING count > 1; ``` ## 🛠️ 单独管理模板 ### 添加新模板 创建新的migration文件: ```bash npm run migration:generate -- -n AddNewTemplate ``` ### 修改现有模板 可以创建新的migration来更新现有模板: ```typescript // 示例:更新模板积分消耗 await queryRunner.query(` UPDATE n8n_templates SET credit_cost = 15 WHERE code = 'photo_restore_v1' `); ``` ### 禁用模板 ```typescript await queryRunner.query(` UPDATE n8n_templates SET is_active = false WHERE code = 'template_code_here' `); ``` ## 📈 模板分类统计 ### 按类型分布 - **Image模板**: 2个 (PhotoRestore, OpenEyes) - **Video模板**: 6个 (CharacterFigurine, PetFigurine, CosplayRealPerson, GarageOpening, JapaneseMagazine, NuclearExplosion) ### 积分消耗分布 - **低成本** (10-15积分): OpenEyes(10), PhotoRestore(12) - **中等成本** (20-30积分): NuclearExplosion(20), CosplayRealPerson(25), CharacterFigurine(28), PetFigurine(30) - **高成本** (30+积分): JapaneseMagazine(32), GarageOpening(35) ## 🎯 使用建议 ### 开发环境 ```bash # 清空数据库并重新运行所有迁移 npm run schema:drop npm run migration:run ``` ### 生产环境 ```bash # 只运行新的迁移 npm run migration:run ``` ### 回滚策略 每个migration都包含完整的`up`和`down`方法,支持安全回滚: ```bash # 回滚最后一个迁移 npm run migration:revert # 回滚多个迁移(需要多次执行) npm run migration:revert # 回滚最新的 npm run migration:revert # 回滚倒数第二个 ``` ## 🔒 注意事项 1. **生产环境执行前备份数据库** 2. **按顺序执行迁移,不要跳过** 3. **每个模板的代码(code)必须唯一** 4. **修改模板时使用UPDATE而不是重新INSERT** 5. **测试环境先验证迁移无问题** ## 📝 日志输出 每个迁移执行时都会输出日志: ``` ✅ N8n Templates table created successfully ✅ PhotoRestoreTemplate migration completed ✅ CharacterFigurineTemplate migration completed ... ``` 回滚时的日志: ``` ⏭️ OpenEyesTemplate migration reverted ⏭️ NuclearExplosionTemplate migration reverted ... ``` --- **完成迁移后,所有现有的代码模板配置将可以通过数据库动态管理!**