523 lines
21 KiB
Markdown
523 lines
21 KiB
Markdown
# Implementation Plan: Database Migration
|
||
|
||
## Overview
|
||
|
||
本任务清单将 MySQL 5.7 到 SQL Server 2022 的数据库迁移分解为可执行的编码任务。每个任务都是增量式的,确保迁移过程可控、可验证。
|
||
|
||
## 当前状态
|
||
|
||
- **SQL Server 数据库**: honey_box 已创建,38个表结构已完成
|
||
- **MySQL 源数据库**: youdas,包含 82 个表,核心业务数据完整
|
||
- **数据迁移进度**: 部分完成,详见下方任务状态
|
||
|
||
### 迁移进度摘要
|
||
|
||
| 表名 | MySQL记录数 | SQL Server记录数 | 状态 |
|
||
|-----|------------|-----------------|------|
|
||
| users | 2,202 | 2,202 | ✅ 完成 |
|
||
| user_accounts | 3,452 | 3,452 | ✅ 完成 |
|
||
| user_login_logs | 11,584 | 11,584 | ✅ 完成 |
|
||
| user_addresses | 51 | 51 | ✅ 完成 |
|
||
| goods | 503 | 0 | 未迁移 |
|
||
| goods_items | 1,852 | 1,852 | ✅ 完成 |
|
||
| goods_types | 13 | 0 | 未迁移 |
|
||
| goods_extensions | 34 | 0 | 未迁移 |
|
||
| prize_levels | 106 | 106 | ✅ 完成 |
|
||
| orders | 15 | 15 | ✅ 完成 |
|
||
| order_items | 67 | 67 | ✅ 完成 |
|
||
| order_items_recovery | 8 | 8 | ✅ 完成 |
|
||
| order_items_send | 0 | 0 | ✅ 完成 |
|
||
| profit_money | 26,061 | 1,150 | 部分迁移 |
|
||
| profit_integral | 33,487 | 0 | 未迁移 |
|
||
| profit_money2 | 19,491 | 0 | 未迁移 |
|
||
| profit_pay | 3,310 | 0 | 未迁移 |
|
||
| profit_score | 0 | 0 | ✅ 完成 |
|
||
| profit_ou_qi | 8,355 | 0 | 未迁移 |
|
||
| coupons | 19 | 0 | 未迁移 |
|
||
| coupon_receives | 7,799 | 7,799 | ✅ 完成 |
|
||
| user_coupons | 0 | 0 | ✅ 完成 |
|
||
| diamond_products | 5 | 0 | 未迁移 |
|
||
| diamond_orders | 398 | 0 | 未迁移 |
|
||
| tasks | 9 | 0 | 未迁移 |
|
||
| user_tasks | 4,899 | 0 | 未迁移 |
|
||
| sign_configs | 35 | 0 | 未迁移 |
|
||
| user_signs | 702 | 0 | 未迁移 |
|
||
| vip_levels | 75 | 0 | 未迁移 |
|
||
| vip_level_rewards | 225 | 0 | 未迁移 |
|
||
| user_vip_rewards | 1,393 | 0 | 未迁移 |
|
||
| configs | 25 | 0 | 未迁移 |
|
||
| deliveries | 11 | 0 | 未迁移 |
|
||
| pictures | 1,175 | 0 | 未迁移 |
|
||
| adverts | 16 | 0 | 未迁移 |
|
||
| admins | 3 | 0 | 未迁移 |
|
||
|
||
## Tasks
|
||
|
||
- [x] 1. SQL Server 环境搭建和数据库创建
|
||
- honey_box 数据库已创建
|
||
- 需要配置数据库参数(恢复模式、统计信息、排序规则)
|
||
- 需要创建应用程序用户和权限
|
||
- _Requirements: 阶段2环境搭建_
|
||
|
||
- [x] 2. 用户系统表结构创建
|
||
- [x] 2.1 创建 users 表
|
||
- 包含所有用户字段(24个字段),使用 snake_case 命名
|
||
- 创建主键、唯一约束(open_id, uid)、索引
|
||
- 源表: user (2,201条记录)
|
||
- _Requirements: 1.1_
|
||
- [x] 2.2 创建 user_accounts 表
|
||
- 存储用户账户令牌信息(12个字段)
|
||
- 创建索引(user_id, account_token)
|
||
- 源表: user_account (3,452条记录)
|
||
- _Requirements: 1.2_
|
||
- [x] 2.3 创建 user_login_logs 表
|
||
- 记录用户登录日志(7个字段)
|
||
- 创建索引(user_id, login_time, platform)
|
||
- 源表: user_login_log (11,407条记录)
|
||
- _Requirements: 1.3_
|
||
- [x] 2.4 创建 user_addresses 表
|
||
- 存储用户收货地址
|
||
- 源表: user_address (51条记录)
|
||
- _Requirements: 1.4_
|
||
- [x] 2.5 编写用户表结构验证脚本
|
||
- **Property 1: 表结构完整性**
|
||
- **Validates: Requirements 1.1, 1.2, 1.3, 1.4**
|
||
|
||
- [x] 3. 商品系统表结构创建
|
||
- [x] 3.1 创建 goods 表
|
||
- 包含完整 54 个字段
|
||
- 包含福利屋、限购、特殊功能字段
|
||
- 源表: goods (503条记录)
|
||
- _Requirements: 2.1_
|
||
- [x] 3.2 创建 goods_items 表
|
||
- 存储商品奖品列表
|
||
- 源表: goods_list (1,844条记录)
|
||
- _Requirements: 2.2_
|
||
- [x] 3.3 创建 goods_types 表
|
||
- 存储商品类型配置
|
||
- 源表: goods_type (13条记录)
|
||
- _Requirements: 2.3_
|
||
- [x] 3.4 创建 goods_extensions 表
|
||
- 存储商品扩展配置
|
||
- 源表: goods_extend (34条记录)
|
||
- _Requirements: 2.4_
|
||
- [x] 3.5 创建 prize_levels 表
|
||
- 存储奖品等级配置
|
||
- 源表: shang (106条记录)
|
||
- _Requirements: 2.5_
|
||
- [x] 3.6 编写商品表结构验证脚本
|
||
- **Property 1: 表结构完整性**
|
||
- **Validates: Requirements 2.1, 2.2, 2.3, 2.4, 2.5**
|
||
|
||
- [x] 4. 订单系统表结构创建
|
||
- [x] 4.1 创建 orders 表
|
||
- 包含完整 33 个字段
|
||
- 包含支付方式组合字段
|
||
- 源表: order (15条记录)
|
||
- _Requirements: 3.1_
|
||
- [x] 4.2 创建 order_items 表
|
||
- 存储订单详情/抽奖结果
|
||
- 源表: order_list (67条记录)
|
||
- _Requirements: 3.2_
|
||
- [x] 4.3 创建 order_items_recovery 表
|
||
- 存储回收的奖品记录
|
||
- 源表: order_list_recovery (8条记录)
|
||
- _Requirements: 3.3_
|
||
- [x] 4.4 创建 order_items_send 表
|
||
- 存储发货记录
|
||
- 源表: order_list_send (0条记录)
|
||
- _Requirements: 3.4_
|
||
- [x] 4.5 编写订单表结构验证脚本
|
||
- **Property 1: 表结构完整性**
|
||
- **Validates: Requirements 3.1, 3.2, 3.3, 3.4**
|
||
|
||
- [x] 5. 财务系统表结构创建
|
||
- [x] 5.1 创建 profit_money 表
|
||
- 记录余额变动明细
|
||
- 源表: profit_money (26,061条记录)
|
||
- _Requirements: 4.1_
|
||
- [x] 5.2 创建 profit_integral 表
|
||
- 记录积分变动明细
|
||
- 源表: profit_integral (33,487条记录)
|
||
- _Requirements: 4.2_
|
||
- [x] 5.3 创建 profit_money2 表
|
||
- 记录积分2变动明细
|
||
- 源表: profit_money2 (19,491条记录)
|
||
- _Requirements: 4.3_
|
||
- [x] 5.4 创建 profit_pay 表
|
||
- 记录支付流水
|
||
- 源表: profit_pay (3,310条记录)
|
||
- _Requirements: 4.4_
|
||
- [x] 5.5 创建 profit_score 和 profit_ou_qi 表
|
||
- 记录评分和欧气值变动
|
||
- 源表: profit_score (0条), profit_ou_qi (8,355条)
|
||
- _Requirements: 4.5, 4.6_
|
||
|
||
- [x] 6. 优惠券和钻石系统表结构创建
|
||
- [x] 6.1 创建 coupons 表
|
||
- 存储优惠券模板
|
||
- 源表: coupon (19条记录)
|
||
- _Requirements: 5.1_
|
||
- [x] 6.2 创建 coupon_receives 表
|
||
- 存储用户领取的优惠券
|
||
- 源表: coupon_receive (7,846条记录)
|
||
- _Requirements: 5.2_
|
||
- [x] 6.3 创建 user_coupons 表
|
||
- 存储欧气券
|
||
- 源表: user_coupon (0条记录)
|
||
- _Requirements: 5.3_
|
||
- [x] 6.4 创建 diamond_products 表
|
||
- 存储钻石商品配置
|
||
- 源表: diamond_products (5条记录)
|
||
- _Requirements: 6.1_
|
||
- [x] 6.5 创建 diamond_orders 表
|
||
- 存储钻石订单记录
|
||
- 源表: diamond_orders (398条记录)
|
||
- _Requirements: 6.2_
|
||
|
||
- [x] 7. 任务、签到和VIP系统表结构创建
|
||
- [x] 7.1 创建 tasks 和 user_tasks 表
|
||
- 存储任务配置和用户任务记录
|
||
- 源表: task_list (9条), user_task_list (4,899条)
|
||
- _Requirements: 7.1, 7.2_
|
||
- [x] 7.2 创建 sign_configs 和 user_signs 表
|
||
- 存储签到配置和用户签到记录
|
||
- 源表: sign_config (35条), user_sign (702条)
|
||
- _Requirements: 7.3, 7.4_
|
||
- [x] 7.3 创建 vip_levels 和 vip_level_rewards 表
|
||
- 存储VIP等级配置和奖品
|
||
- 源表: quan_yi_level (75条), quan_yi_level_jiang (225条)
|
||
- _Requirements: 8.1, 8.2_
|
||
- [x] 7.4 创建 user_vip_rewards 表
|
||
- 存储用户领取的VIP奖品
|
||
- 源表: user_quan_yi_level_jiang (1,393条)
|
||
- _Requirements: 8.3_
|
||
|
||
- [x] 8. 系统配置和管理后台表结构创建
|
||
- [x] 8.1 创建 configs 表
|
||
- 存储系统配置
|
||
- 源表: config (25条记录)
|
||
- _Requirements: 9.1_
|
||
- [x] 8.2 创建 deliveries 和 pictures 表
|
||
- 存储快递公司和图片管理
|
||
- 源表: delivery (11条), picture (1,175条)
|
||
- _Requirements: 9.2, 9.3_
|
||
- [x] 8.3 创建 adverts 表
|
||
- 存储广告配置
|
||
- 源表: advert (16条记录)
|
||
- _Requirements: 9.4_
|
||
- [x] 8.4 创建 admins 和管理日志表
|
||
- 存储管理员信息和日志(仅结构)
|
||
- 源表: admin (3条), admin_login_log (398条), admin_operation_log (94,986条)
|
||
- _Requirements: 10.1, 10.2, 10.3_
|
||
|
||
- [x] 9. Checkpoint - 表结构创建验证
|
||
- 验证所有表是否正确创建
|
||
- 验证索引和约束是否正确
|
||
- 确保所有测试通过,如有问题请询问用户
|
||
|
||
- [-] 10. 用户数据迁移
|
||
- [x] 10.1 完成 users 数据迁移
|
||
- 当前状态: 2,202/2,202 条记录已迁移 ✅
|
||
- 编写 Node.js 脚本 `server/C#/scripts/migrate_users.js`
|
||
- 使用 mysql2 连接 MySQL,查询 user 表数据
|
||
- 使用 mssql 连接 SQL Server,插入到 users 表
|
||
- 处理时间戳转换(Unix时间戳 → DATETIME2)
|
||
- 支持增量迁移(跳过已存在的记录)
|
||
- 数据库配置参考: .kiro\settings\mcp.json
|
||
- _Requirements: 1.5, 1.6_
|
||
- [x] 10.2 完成 user_accounts 数据迁移
|
||
- 当前状态: 590/3,452 条记录已迁移
|
||
- 编写 Node.js 脚本 `server/C#/scripts/migrate_user_accounts.js`
|
||
- 从 MySQL user_account 查询数据
|
||
- 转换并插入到 SQL Server user_accounts 表
|
||
- 支持增量迁移
|
||
- _Requirements: 1.5_
|
||
- [x] 10.3 迁移 user_login_logs 数据
|
||
- 当前状态: 0/11,407 条记录
|
||
- 编写 Node.js 脚本 `server/C#/scripts/migrate_user_login_logs.js`
|
||
- 从 MySQL user_login_log 查询数据
|
||
- 转换并插入到 SQL Server user_login_logs 表
|
||
- 处理时间戳转换
|
||
- _Requirements: 1.5_
|
||
- [x] 10.4 迁移 user_addresses 数据
|
||
- 当前状态: 0/51 条记录
|
||
- 编写 Node.js 脚本 `server/C#/scripts/migrate_user_addresses.js`
|
||
- 从 MySQL user_address 查询数据
|
||
- 转换并插入到 SQL Server user_addresses 表
|
||
- _Requirements: 1.5_
|
||
- [ ] 10.5 编写用户数据验证脚本
|
||
- 编写 Node.js 脚本 `server/C#/scripts/validate_user_migration.js`
|
||
- 对比 MySQL 和 SQL Server 的记录数
|
||
- 验证时间戳转换正确性(随机抽样验证)
|
||
- **Property 2: 数据记录数一致性**
|
||
- **Property 3: 时间戳转换正确性**
|
||
- **Validates: Requirements 1.5, 1.6, 11.1**
|
||
|
||
- [ ] 11. 商品数据迁移
|
||
- [x] 11.1 迁移 goods 数据
|
||
- 当前状态: 0/503 条记录
|
||
- 编写 Node.js 脚本 `server/C#/scripts/migrate_goods.js`
|
||
- 从 MySQL goods 查询数据,转换并插入到 SQL Server goods 表
|
||
- 保留福利屋和限购配置
|
||
- _Requirements: 2.6, 2.7_
|
||
- [x] 11.2 迁移 goods_items 数据
|
||
- 当前状态: 0/1,844 条记录
|
||
- 编写 Node.js 脚本 `server/C#/scripts/migrate_goods_items.js`
|
||
- 从 MySQL goods_list 迁移到 SQL Server goods_items
|
||
- _Requirements: 2.6_
|
||
- [x] 11.3 迁移 goods_types 数据
|
||
- 当前状态: 0/13 条记录
|
||
- 编写 Node.js 脚本 `server/C#/scripts/migrate_goods_types.js`
|
||
- 从 MySQL goods_type 迁移到 SQL Server goods_types
|
||
- _Requirements: 2.6_
|
||
- [x] 11.4 迁移 goods_extensions 数据
|
||
- 当前状态: 0/34 条记录
|
||
- 编写 Node.js 脚本 `server/C#/scripts/migrate_goods_extensions.js`
|
||
- 从 MySQL goods_extend 迁移到 SQL Server goods_extensions
|
||
- _Requirements: 2.6_
|
||
- [x] 11.5 迁移 prize_levels 数据
|
||
- 当前状态: 0/106 条记录
|
||
- 编写 Node.js 脚本 `server/C#/scripts/migrate_prize_levels.js`
|
||
- 从 MySQL shang 迁移到 SQL Server prize_levels
|
||
- _Requirements: 2.6_
|
||
- [ ] 11.6 编写商品数据验证脚本
|
||
- 编写 Node.js 脚本 `server/C#/scripts/validate_goods_migration.js`
|
||
- **Property 2: 数据记录数一致性**
|
||
- **Property 5: 业务配置完整性**
|
||
- **Validates: Requirements 2.6, 2.7, 11.1**
|
||
|
||
- [x] 12. 订单数据迁移
|
||
- [x] 12.1 迁移 orders 数据
|
||
- 当前状态: 15/15 条记录 ✅ 完成
|
||
- _Requirements: 3.5_
|
||
- [x] 12.2 迁移 order_items 数据
|
||
- 当前状态: 67/67 条记录 ✅ 完成
|
||
- _Requirements: 3.5_
|
||
- [x] 12.3 迁移 order_items_recovery 和 order_items_send 数据
|
||
- 当前状态: recovery 8/8条 ✅, send 0/0条 ✅ 完成
|
||
- _Requirements: 3.5_
|
||
- [x] 12.4 编写订单数据验证脚本
|
||
- **Property 2: 数据记录数一致性**
|
||
- **Property 4: 财务数据一致性**
|
||
- **Validates: Requirements 3.5, 11.1, 11.3**
|
||
|
||
- [-] 13. 财务数据迁移
|
||
- [-] 13.1 完成 profit_money 数据迁移
|
||
- 当前状态: 1,150/26,061 条记录已迁移
|
||
- 编写 Node.js 脚本 `server/C#/scripts/migrate_profit_money.js`
|
||
- 从 MySQL profit_money 查询数据,转换并插入到 SQL Server
|
||
- 支持增量迁移(跳过已存在的记录)
|
||
- _Requirements: 4.7_
|
||
- [ ] 13.2 迁移 profit_integral 数据
|
||
- 当前状态: 0/33,487 条记录
|
||
- 编写 Node.js 脚本 `server/C#/scripts/migrate_profit_integral.js`
|
||
- 从 MySQL profit_integral 迁移到 SQL Server profit_integral
|
||
- _Requirements: 4.7_
|
||
- [ ] 13.3 迁移 profit_money2 数据
|
||
- 当前状态: 0/19,491 条记录
|
||
- 编写 Node.js 脚本 `server/C#/scripts/migrate_profit_money2.js`
|
||
- 从 MySQL profit_money2 迁移到 SQL Server profit_money2
|
||
- _Requirements: 4.7_
|
||
- [ ] 13.4 迁移 profit_pay 数据
|
||
- 当前状态: 0/3,310 条记录
|
||
- 编写 Node.js 脚本 `server/C#/scripts/migrate_profit_pay.js`
|
||
- 从 MySQL profit_pay 迁移到 SQL Server profit_pay
|
||
- _Requirements: 4.7_
|
||
- [ ] 13.5 迁移 profit_ou_qi 数据
|
||
- 当前状态: 0/8,355 条记录
|
||
- 编写 Node.js 脚本 `server/C#/scripts/migrate_profit_ou_qi.js`
|
||
- 从 MySQL profit_ou_qi 迁移到 SQL Server profit_ou_qi
|
||
- profit_score 源表为空,无需迁移数据
|
||
- _Requirements: 4.7_
|
||
- [ ] 13.6 编写财务数据验证脚本
|
||
- 编写 Node.js 脚本 `server/C#/scripts/validate_financial_migration.js`
|
||
- 验证余额、积分总和一致性
|
||
- **Property 4: 财务数据一致性**
|
||
- **Validates: Requirements 4.7, 11.2**
|
||
|
||
- [ ] 14. 优惠券和钻石数据迁移
|
||
- [x] 14.1 迁移 coupons 数据
|
||
- 当前状态: 0/19 条记录
|
||
- 编写 Node.js 脚本 `server/C#/scripts/migrate_coupons.js`
|
||
- 从 MySQL coupon 迁移到 SQL Server coupons
|
||
- _Requirements: 5.4_
|
||
- [x] 14.2 迁移 coupon_receives 数据
|
||
- 当前状态: 7,799/7,799 条记录 ✅ 完成
|
||
- 编写 Node.js 脚本 `server/C#/scripts/migrate_coupon_receives.js`
|
||
- 从 MySQL coupon_receive 迁移到 SQL Server coupon_receives
|
||
- 保留有效期信息
|
||
- _Requirements: 5.4_
|
||
- [ ] 14.3 迁移 user_coupons 数据
|
||
- 当前状态: 0/0 条记录 (源表为空)
|
||
- 无需迁移数据,仅验证表结构
|
||
- _Requirements: 5.4_
|
||
- [x] 14.4 迁移 diamond_products 数据
|
||
- 当前状态: 0/5 条记录
|
||
- 编写 Node.js 脚本 `server/C#/scripts/migrate_diamond_products.js`
|
||
- 从 MySQL diamond_products 迁移到 SQL Server diamond_products
|
||
- _Requirements: 6.3_
|
||
- [x] 14.5 迁移 diamond_orders 数据
|
||
- 当前状态: 0/398 条记录
|
||
- 编写 Node.js 脚本 `server/C#/scripts/migrate_diamond_orders.js`
|
||
- 从 MySQL diamond_orders 迁移到 SQL Server diamond_orders
|
||
- 保留奖励日志
|
||
- _Requirements: 6.3_
|
||
- [ ] 14.6 编写优惠券和钻石数据验证脚本
|
||
- 编写 Node.js 脚本 `server/C#/scripts/validate_coupon_diamond_migration.js`
|
||
- **Property 7: 数据迁移往返一致性**
|
||
- **Validates: Requirements 5.4, 6.3**
|
||
|
||
- [ ] 15. 任务签到和VIP数据迁移
|
||
- [x] 15.1 迁移 tasks 数据
|
||
- 当前状态: 0/9 条记录
|
||
- 编写 Node.js 脚本 `server/C#/scripts/migrate_tasks.js`
|
||
- 从 MySQL task_list 迁移到 SQL Server tasks
|
||
- _Requirements: 7.1_
|
||
- [ ] 15.2 迁移 user_tasks 数据
|
||
- 当前状态: 0/4,899 条记录
|
||
- 编写 Node.js 脚本 `server/C#/scripts/migrate_user_tasks.js`
|
||
- 从 MySQL user_task_list 迁移到 SQL Server user_tasks
|
||
- _Requirements: 7.2_
|
||
- [x] 15.3 迁移 sign_configs 数据
|
||
- 当前状态: 0/35 条记录
|
||
- 编写 Node.js 脚本 `server/C#/scripts/migrate_sign_configs.js`
|
||
- 从 MySQL sign_config 迁移到 SQL Server sign_configs
|
||
- _Requirements: 7.3_
|
||
- [ ] 15.4 迁移 user_signs 数据
|
||
- 当前状态: 0/702 条记录
|
||
- 编写 Node.js 脚本 `server/C#/scripts/migrate_user_signs.js`
|
||
- 从 MySQL user_sign 迁移到 SQL Server user_signs
|
||
- _Requirements: 7.4_
|
||
- [x] 15.5 迁移 vip_levels 数据
|
||
- 当前状态: 0/75 条记录
|
||
- 编写 Node.js 脚本 `server/C#/scripts/migrate_vip_levels.js`
|
||
- 从 MySQL quan_yi_level 迁移到 SQL Server vip_levels
|
||
- _Requirements: 8.1_
|
||
- [x] 15.6 迁移 vip_level_rewards 数据
|
||
- 当前状态: 0/225 条记录
|
||
- 编写 Node.js 脚本 `server/C#/scripts/migrate_vip_level_rewards.js`
|
||
- 从 MySQL quan_yi_level_jiang 迁移到 SQL Server vip_level_rewards
|
||
- _Requirements: 8.2_
|
||
- [ ] 15.7 迁移 user_vip_rewards 数据
|
||
- 当前状态: 0/1,393 条记录
|
||
- 编写 Node.js 脚本 `server/C#/scripts/migrate_user_vip_rewards.js`
|
||
- 从 MySQL user_quan_yi_level_jiang 迁移到 SQL Server user_vip_rewards
|
||
- _Requirements: 8.3_
|
||
- [ ] 15.8 编写任务签到VIP数据验证脚本
|
||
- 编写 Node.js 脚本 `server/C#/scripts/validate_task_sign_vip_migration.js`
|
||
- **Property 2: 数据记录数一致性**
|
||
- **Validates: Requirements 7.1-7.4, 8.1-8.3**
|
||
|
||
- [ ] 16. 系统配置和管理数据迁移
|
||
- [x] 16.1 迁移 configs 数据
|
||
- 当前状态: 0/25 条记录
|
||
- 编写 Node.js 脚本 `server/C#/scripts/migrate_configs.js`
|
||
- 从 MySQL config 迁移到 SQL Server configs
|
||
- _Requirements: 9.1_
|
||
- [x] 16.2 迁移 deliveries 数据
|
||
- 当前状态: 0/11 条记录
|
||
- 编写 Node.js 脚本 `server/C#/scripts/migrate_deliveries.js`
|
||
- 从 MySQL delivery 迁移到 SQL Server deliveries
|
||
- _Requirements: 9.2_
|
||
- [x] 16.3 迁移 pictures 数据
|
||
- 当前状态: 0/1,175 条记录
|
||
- 编写 Node.js 脚本 `server/C#/scripts/migrate_pictures.js`
|
||
- 从 MySQL picture 迁移到 SQL Server pictures
|
||
- _Requirements: 9.3_
|
||
- [x] 16.4 迁移 adverts 数据
|
||
- 当前状态: 0/16 条记录
|
||
- 编写 Node.js 脚本 `server/C#/scripts/migrate_adverts.js`
|
||
- 从 MySQL advert 迁移到 SQL Server adverts
|
||
- _Requirements: 9.4_
|
||
- [x] 16.5 迁移 admins 数据
|
||
- 当前状态: 0/3 条记录
|
||
- 编写 Node.js 脚本 `server/C#/scripts/migrate_admins.js`
|
||
- 从 MySQL admin 迁移到 SQL Server admins
|
||
- 管理日志表仅保留结构,不迁移数据
|
||
- _Requirements: 10.1_
|
||
- [ ] 16.6 编写系统配置数据验证脚本
|
||
- 编写 Node.js 脚本 `server/C#/scripts/validate_system_migration.js`
|
||
- **Property 2: 数据记录数一致性**
|
||
- **Validates: Requirements 9.1-9.4, 10.1**
|
||
|
||
- [ ] 17. Checkpoint - 数据迁移验证
|
||
- 验证所有表的记录数是否一致
|
||
- 验证财务数据总和是否一致
|
||
- 确保所有测试通过,如有问题请询问用户
|
||
|
||
- [ ] 18. 索引和约束优化
|
||
- [ ] 18.1 验证所有表的主键约束
|
||
- 验证主键是否正确创建
|
||
- _Requirements: 12.1_
|
||
- [ ] 18.2 验证常用查询字段索引
|
||
- 根据业务查询模式验证索引
|
||
- _Requirements: 12.2_
|
||
- [ ] 18.3 验证表和字段注释
|
||
- 确保所有表和字段都有注释
|
||
- _Requirements: 12.5_
|
||
- [ ] 18.4 验证唯一约束
|
||
- 为唯一字段验证约束
|
||
- _Requirements: 12.4_
|
||
- [ ] 18.5 编写索引和约束验证脚本
|
||
- **Property 6: 索引和约束完整性**
|
||
- **Validates: Requirements 12.1, 12.2, 12.4, 12.5**
|
||
|
||
- [ ] 19. 生成数据验证报告
|
||
- [ ] 19.1 编写综合验证报告生成脚本
|
||
- 列出每个表的迁移前后记录数对比
|
||
- 列出财务数据一致性验证结果
|
||
- 列出索引和约束创建状态
|
||
- _Requirements: 11.4_
|
||
- [ ] 19.2 执行完整数据验证
|
||
- **Property 2: 数据记录数一致性**
|
||
- **Property 4: 财务数据一致性**
|
||
- **Property 6: 索引和约束完整性**
|
||
- **Validates: Requirements 11.1, 11.2, 11.3, 11.4**
|
||
|
||
- [ ] 20. Final Checkpoint - 迁移完成验证
|
||
- 确保所有验证脚本通过
|
||
- 生成最终迁移报告
|
||
- 确保所有测试通过,如有问题请询问用户
|
||
|
||
## 数据统计摘要(基于最新MySQL数据)
|
||
|
||
| 表类别 | 表数量 | MySQL总记录数 | SQL Server已迁移 | 待迁移 |
|
||
|--------|--------|--------------|-----------------|--------|
|
||
| 用户系统 | 4 | 17,339 | 17,339 | 0 ✅ |
|
||
| 商品系统 | 5 | 2,500 | 2,458 | 42 |
|
||
| 订单系统 | 4 | 90 | 90 | 0 ✅ |
|
||
| 财务系统 | 6 | 90,704 | 1,150 | 89,554 |
|
||
| 优惠券系统 | 3 | 7,865 | 0 | 7,865 |
|
||
| 钻石系统 | 2 | 403 | 0 | 403 |
|
||
| 任务签到 | 4 | 5,645 | 0 | 5,645 |
|
||
| VIP系统 | 3 | 1,693 | 0 | 1,693 |
|
||
| 系统配置 | 4 | 1,227 | 0 | 1,227 |
|
||
| 管理后台 | 3 | 3 (仅admins) | 0 | 3 |
|
||
| **合计** | **38** | **127,241** | **4,764** | **122,477** |
|
||
|
||
## Notes
|
||
|
||
- 所有任务(包括测试任务)都必须完成,确保迁移质量
|
||
- 每个任务都引用了具体的需求编号,确保可追溯性
|
||
- Checkpoint 任务用于阶段性验证,确保迁移质量
|
||
- 属性测试验证迁移后数据的正确性和完整性
|
||
- 建议在测试环境完成所有验证后再进行生产环境迁移
|
||
- 根据 Requirements 12.3,所有表不创建外键约束
|
||
- 根据 Requirements 12.5,所有表和字段都需要添加注释
|
||
|
||
### Node.js 迁移脚本规范
|
||
|
||
- **脚本位置**: `server/C#/scripts/migrate_*.js`
|
||
- **数据库配置**: 参考 `~/.kiro/settings/mcp.json`
|
||
- **依赖包**:
|
||
- `mysql2`: 连接 MySQL 数据库
|
||
- `mssql`: 连接 SQL Server 数据库
|
||
- **脚本功能**:
|
||
1. 连接 MySQL 源数据库,查询数据
|
||
2. 数据转换(时间戳、字段名映射等)
|
||
3. 连接 SQL Server 目标数据库,批量插入数据
|
||
4. 支持增量迁移(跳过已存在的记录)
|
||
5. 输出迁移进度和结果统计
|
||
- **运行方式**: `node server/C#/scripts/migrate_xxx.js`
|