| .. | ||
| 20260801_create_booking_capacity.sql | ||
| 20260801_create_business_event.sql | ||
| 20260801_create_report_send_status.sql | ||
| 20260801_create_store_customer.sql | ||
| 20260801_split_service_identity.sql | ||
| 20260802_create_follow_up_task.sql | ||
| 20260802_create_store_customer_timeline.sql | ||
| 20260802_create_store_onboarding.sql | ||
| README.md | ||
数据库迁移
当前项目尚未接入 Flyway/Liquibase。本目录存放经过评审的一次性 MySQL 迁移脚本;生产执行规则:
- 先完成数据库备份并记录备份位置。
- 在测试库执行脚本,核对文件末尾的验证查询。
- 由发布负责人在生产低峰期执行,同一个脚本不得重复执行。
- 验证通过后再启动使用新字段的 backend 版本。
- 迁移脚本只允许向前兼容;本阶段不得删除 legacy 字段。
20260801_split_service_identity.sql 为身份语义拆分迁移:新增客户、创建人和报告作者字段,保留 user_id / assigned_user_id 兼容旧版本。
20260801_create_store_customer.sql 必须在上述身份迁移之后执行:建立 t_store_customer 门店客户主档,并从预约与报告留资回填历史关系。脚本末尾三个验证计数必须为 0。
20260801_create_business_event.sql 必须在客户主档迁移之后执行:建立不可变 t_business_event,回填预约创建、报告提交、可确认的服务完成和留资提交。脚本末尾四个验证计数必须为 0;脚本不回填无法从数据库可靠恢复的报告打开与服务开始事件。
20260801_create_booking_capacity.sql 必须在业务事件迁移之后执行:为服务项目、预约快照和手动占用补充时长,为门店补充并发接待数。历史预约按服务名称采用稳定默认值回填;脚本末尾四个验证计数必须为 0。
20260801_create_report_send_status.sql 必须在预约容量迁移之后执行:新增报告显式确认发送状态与首次确认回执。历史报告统一标记为 unknown,不得推测为未发送或已发送;迁移后的新报告默认 unsent。脚本末尾三个验证计数必须为 0。
20260802_create_store_onboarding.sql 必须在报告发送状态迁移之后执行:为历史门店写入不可推断的 unknown 开通状态,建立只存 token 摘要的限时员工邀请与低敏不可变操作审计。脚本末尾六个验证计数必须为 0;不得用 legacy invite_code 恢复公开员工注册。
20260802_create_store_customer_timeline.sql 必须在门店开通迁移之后执行:为被合并的软删除 StoreCustomer 投影增加同店 canonical 指针。既有 BusinessEvent 不改写,事实时间线同时读取 canonical 与别名的历史事件;脚本末尾两个验证计数必须为 0。
20260802_create_follow_up_task.sql 必须在客户时间线迁移之后执行:建立可领取、改期、关闭和真实再次预约归因的 t_follow_up_task。只为仍待处理的历史留资建立开放任务,不猜测其他历史结果;脚本末尾五个验证计数必须为 0。
正式迁移框架仍属于 Phase 0 后续任务;接入前不得把本目录误当成自动执行目录。