docs: 状态文件同步到 2026-09-18 实况(方案任务三)

- STATUS.md:顶部权威行由 "PHASE 20 COMPLETE"(09-17)更新为 09-18 口径(Phase 01~22 关闭 /
  Phase 23 部分关闭 / 三轮横向加固 / 669 tests / 停在 Phase 24 门前);版本演进表补 rc.11~rc.16;
  **合并三处重复的「V1.1 本地部署完成 (2026-09-09)」区块为一处**(996 行 → 946 行)并加
  「历史记录边界」声明;清「Phase 04~05 ⏳ 待开发」等与实测矛盾项。契约锚点全部保住
  (UI REDESIGN ACCEPTED BY USER / Phase 07 已通过用户验收 / 管理后台: http://localhost:13520/)。
- AGENTS.md + STATUS.md:UI 契约门禁口径 13/13 → **14/14**(历史时点行保留原值并注明,
  不篡改史实)。
- JIRA_BACKLOG.md:Epic 总览表补 P14/P15/P19~P23 的 ✅(P23 标「部分关闭」)。
- 客户需求基线计划:Phase 07 标题去 "UI REOPENED";Phase 10~15/19 补 ✅;Phase 20/21 勾选
  checkbox 并注日期;**Phase 22 如实标「未复验」**(口径澄清:计划的 Deployment/Ops 与 STATUS 的
  「部署运维配置扩展(Feature Flag)」是两份不同工作,后者复验结论不构成本节证据);
  Phase 23 标「部分关闭」,第 3/5 项(E2E 场景实现、CI 串联)**不虚勾**。
- PENDING_DECISIONS.md:历史部署声明 10 项按各 Phase Recovery 报告证据回写处置结果
  (9 项已关闭 / 1 项部分);补登 HTTP 与幂等检修遗留的第三方开放待决策 7 项。
- REMAINING_WORK.md:整体重写 —— 原文称 CHANGELOG 3.3MB(实为 4234 字节)、P1-3 指向从未存在的
  Phase-23-Completion-Report.md;改为「已关闭 / 仍未完成 / 原编号索引 / 验收标准」四段,保留原编号
  以便对照历史引用。
- database 两份:TABLE_INVENTORY 40 表 → **59 表**(带「来源迁移」列);MIGRATION_GUIDE
  V001~V011 → **V001~V046(46 个)**;两份均标注「以 backend/src/main/resources/db/migration/ 为准」。
This commit is contained in:
WorkBuddy
2026-09-18 21:15:29 +08:00
parent 4f37df3284
commit ae2405f645
8 changed files with 347 additions and 498 deletions
+67 -34
View File
@@ -1,45 +1,78 @@
# 数据库迁移文件
# 数据库迁移清单 — MIGRATION_GUIDE.md
> **最后更新:2026-09-18** —— 原文仅列 **V001~V011**,实测 **46** 个迁移(最新 **V046**),本轮按实测重写。
>
> ⚠️ **权威来源**:`backend/src/main/resources/db/migration/`。本文件为**索引**,不一致时以迁移文件为准。
> 生产由 Flyway 驱动;**已发布的迁移只向前修复,不修改**(Phase 22 Gate 明确要求)。
> 相邻文档:`TABLE_INVENTORY.md`(表清单)、`docs/善缘丹阳 V1.1 数据库与API增量设计.md`(V1.1 增量设计)。
## 迁移命名规范
```
V{版本号}__{描述}.sql
V{三位版本号}__{描述}.sql
```
示例:
- `V001__init_base_tables.sql` — 初始化基础表
- `V002__add_profiles.sql` — 添加资料表
- `V003__add_review_tables.sql` — 添加审核表
- `V004__add_match_tables.sql` — 添加匹配表
- `V005__add_relationship_tables.sql` — 添加关系表
- `V006__add_messaging_tables.sql` — 添加聊天表
- `V007__add_activity_tables.sql` — 添加活动表
- `V008__add_matchmaker_tables.sql` — 添加红娘表
- `V009__add_risk_tables.sql` — 添加风控表
- `V010__add_notification_tables.sql` — 添加通知表
- `V011__add_analytics_tables.sql` — 添加统计表
## 迁移清单(V001~V046,共 46 个)
## 当前迁移
| 版本 | 文件 | 建表 | 说明 |
|---|---|---|---|
| V001 | `V001__init_base_tables.sql` | 11 | 基础表:users / organizations / operators / roles / permissions / role_permissions / operator_roles / audit_logs / sensitive_access_logs / system_configs / interest_dictionary + 初始化数据 |
| V002 | `V002__add_user_and_verification_tables.sql` | 7 | 用户资料 / 偏好 / 兴趣 / 照片 / 隐私设置 / 实名认证 / 同意记录 |
| V003 | `V003__add_review_and_relation_tables.sql` | 6 | 审核任务 / 明细 / 原因字典 + 用户关系 / 匹配 / 成功牵手请求 |
| V004 | `V004__add_messaging_and_recommendation_tables.sql` | 5 | 会话 / 会话成员 / 消息 / 通知 / 推荐记录 |
| V005 | `V005__add_review_tables.sql` | — | 审核表补强(无建表) |
| V006 | `V006__add_match_tables.sql` | 1 | `match_rule_configs` + 初始化规则 |
| V007 | `V007__add_relationship_tables.sql` | — | 关系表补强(无建表) |
| V008 | `V008__add_messaging_tables.sql` | 3 | 消息类表补强(以 `IF NOT EXISTS` 形式,与 V004 同名表) |
| V009 | `V009__add_matchmaker_tables.sql` | 3 | 红娘服务 / 推荐 / 跟进 |
| V010 | `V010__add_activity_tables.sql` | 2 | 活动 / 活动报名 |
| V011 | `V011__add_activity_interests.sql` | 1 | 活动互选意向 |
| V012 | `V012__add_risk_and_report_tables.sql` | 3 | 举报 / 风险事件 / 风控处置 |
| V013 | `V013__add_appeals_table.sql` | 1 | 申诉 |
| V014 | `V014__add_consent_and_privacy_tables.sql` | — | 同意与隐私字段扩展 |
| V015 | `V015__add_v11_roles_and_permissions.sql` | — | **V1.1 角色与权限**(13 条 INSERT) |
| V016 | `V016__add_liveness_verification_fields.sql` | — | 活体核验字段 |
| V017 | `V017__add_local_eligibility_tables.sql` | 2 | 本地资格 / 佐证 |
| V018 | `V018__extend_review_for_local_eligibility.sql` | — | 审核扩展至本地资格 |
| V019 | `V019__add_home_banners_and_service_locations.sql` | 2 | 首页 Banner / 善缘服务站 |
| V020 | `V020__extend_notification_types.sql` | — | 通知类型扩展(对齐 `chk_notification_type` 短名白名单) |
| V021 | `V021__add_service_appointments_and_referral_fields.sql` | 1 | 服务预约 + 红娘转介字段 |
| V022 | `V022__add_counseling_services.sql` | 2 | 婚恋咨询 / 婚前辅导 + 随访 |
| V023 | `V023__extend_activities_v11.sql` | 2 | 活动 V1.1 扩展(名额分组 / 主办单位) |
| V024 | `V024__add_activity_mutual_connection_consents.sql` | 1 | **互选二阶段同意** |
| V025 | `V025__extend_risk_sources.sql` | — | 风险来源扩展 |
| V026 | `V026__add_content_and_program_tables.sql` | 5 | 内容分类 / 文章、服务项目 / 成员、组织关系 |
| V027 | `V027__seed_production_data.sql` | — | **生产基础数据种子**(3 条 INSERT) |
| V028 | `V028__add_service_location_operator_scope.sql` | 1 | 服务站人员数据范围 |
| V029 | `V029__complete_service_station_permissions.sql` | — | 服务站权限补全 |
| V030 | `V030__add_operator_soft_delete.sql` | — | 运营账号软删 |
| V031 | `V031__align_audit_log_base_fields.sql` | — | 审计日志基础字段对齐 |
| V032 | `V032__align_admin_soft_delete_columns.sql` | — | 管理端软删列对齐 |
| V033 | `V033__align_messaging_entity_base_fields.sql` | — | 消息实体基础字段对齐 |
| V034 | `V034__extend_sensitive_access_audit.sql` | — | 敏感访问审计扩展 |
| V035 | `V035__align_sensitive_access_base_fields.sql` | — | 敏感访问基础字段对齐 |
| V036 | `V036__add_notification_idempotency_index.sql` | — | 通知幂等 partial unique index |
| V037 | `V037__align_entity_columns_with_migrations.sql` | — | **实体↔迁移列对齐(23 处 ALTER)** |
| V038 | `V038__align_matchmaker_status_constraints.sql` | — | 红娘状态 CHECK 白名单扩展 |
| V039 | `V039__add_counseling_idempotency_and_status_guards.sql` | — | 咨询幂等键 + 三个 CHECK 白名单显式固化 |
| V040 | `V040__add_activity_staff_assignments.sql` | 1 | 活动工作人员分配 |
| V041 | `V041__extend_mutual_consent_expiry.sql` | — | 互选同意 `expires_at` + `match_id` |
| V042 | `V042__add_service_location_announcements.sql` | 1 | 服务站公告 |
| V043 | `V043__grant_analytics_view_to_data_roles.sql` | — | 授予 `data_viewer` / `platform_admin` 的 `analytics.view` |
| V044 | `V044__grant_all_permissions_to_super_admin.sql` | — | super_admin 全权限授予 |
| V045 | `V045__add_idempotency_records.sql` | 1 | **通用幂等表** + 唯一索引 `uk_idempotency_scope` |
| V046 | `V046__fix_idempotency_actor_id_type.sql` | — | 修正幂等表 `actor_id` 类型(VARCHAR → uuid) |
### V001__init_base_tables.sql(已完成)
- users 表
- organizations 表
- operators 表
- roles 表
- permissions 表
- role_permissions 表
- operator_roles 表
- audit_logs 表
- sensitive_access_logs 表
- system_configs 表
- interest_dictionary 表
- match_rule_configs 表(需 V002 补充)
- 初始化数据(角色、权限、兴趣字典、系统配置)
---
## 注意事项
1. 所有迁移文件必须幂等(用 IF NOT EXISTS)
2. 敏感字段存储加密值
3. 索引命名规范:`idx_{table}_{columns}`
4. 唯一约束命名规范:`uk_{table}_{columns}`
5. 外键约束命名规范:`fk_{table}_{column}`
1. 所有迁移文件必须幂等(`CREATE TABLE IF NOT EXISTS` / `ADD COLUMN IF NOT EXISTS` 等)。
2. 敏感字段存储加密值。
3. 命名规范:索引 `idx_{table}_{columns}`;唯一约束 `uk_{table}_{columns}`;外键 `fk_{table}_{column}`。
4. **已发布的迁移不得修改** —— 修正一律追加新版本(如 V046 修正 V045 的列类型)。Phase 22 Gate 明确「Flyway 只向前修复,不破坏 V001~V027」。
5. **文档与实际不一致时以迁移文件为准**:本文件曾长期停留在 V001~V011(实际 46 个);`TABLE_INVENTORY.md` 曾列 40 表(实际 59 张)。两处已于 2026-09-18 按实测重写。
---
*最后更新: 2026-09-18 — 由 V001~V011 重写为实测 V001~V046(46 个)*
+88 -41
View File
@@ -1,41 +1,88 @@
# 1. 用户账号表
## 2. 实名认证表
## 3. 用户资料表
## 4. 用户偏好表
## 5. 用户兴趣表
## 6. 用户照片表
## 7. 隐私设置表
## 8. 兴趣字典表
## 9. 审核任务表
## 10. 审核明细表
## 11. 审核原因字典表
## 12. 推荐记录表
## 13. 用户关系表
## 14. 匹配关系表
## 15. 成功牵手请求表
## 16. 会话表
## 17. 会话成员表
## 18. 消息表
## 19. 活动表
## 20. 活动报名表
## 21. 活动反馈表
## 22. 红娘服务表
## 23. 红娘推荐表
## 24. 红娘跟进表
## 25. 举报表
## 26. 举报证据表
## 27. 用户风险档案表
## 28. 风险事件表
## 29. 风控处置表
## 30. 申诉表
## 31. 通知表
## 32. 组织表
## 33. 操作员表
## 34. 角色表
## 35. 权限表
## 36. 角色权限关联表
## 37. 操作员角色关联表
## 38. 操作审计日志表
## 39. 敏感访问日志表
## 40. 系统配置表
## 41. 匹配规则配置表
# 数据表清单 — TABLE_INVENTORY.md
> **最后更新:2026-09-18** —— 原文列 **40** 表,实测 **59** 表 / **46** 个迁移,本轮按 `backend/src/main/resources/db/migration/` 重写。
>
> ⚠️ **权威来源**:`backend/src/main/resources/db/migration/*.sql`。
> 本文件只是**索引**;若与迁移文件不一致,**以迁移文件为准**(迁移是唯一可执行的真相)。
> 相邻文档:`MIGRATION_GUIDE.md`(迁移清单)、`docs/善缘丹阳 V1.1 数据库与API增量设计.md`(V1.1 增量设计)、`docs/ANALYTICS_METRICS.md`(统计口径)。
**统计**:建表语句 **59** 张(去重后);迁移文件 **46** 个(V001~V046)。
「来源」列 = **首次创建**该表的迁移;后续迁移对该表的 `ALTER` 不重复列出。
---
| # | 表名 | 域 | 说明 | 来源 |
|---|---|---|---|---|
| 1 | `users` | 基础 | 用户账号 | V001 |
| 2 | `organizations` | 基础 | 组织 | V001 |
| 3 | `operators` | 基础 | 运营人员 | V001 |
| 4 | `roles` | 权限 | 角色 | V001 |
| 5 | `permissions` | 权限 | 权限 | V001 |
| 6 | `role_permissions` | 权限 | 角色-权限关联 | V001 |
| 7 | `operator_roles` | 权限 | 运营-角色关联 | V001 |
| 8 | `audit_logs` | 审计 | 操作审计日志 | V001 |
| 9 | `sensitive_access_logs` | 审计 | 敏感访问日志 | V001 |
| 10 | `system_configs` | 基础 | 系统配置 | V001 |
| 11 | `interest_dictionary` | 基础 | 兴趣字典 | V001 |
| 12 | `user_profiles` | 资料 | 用户资料 | V002 |
| 13 | `user_preferences` | 资料 | 择偶偏好 | V002 |
| 14 | `user_interests` | 资料 | 用户兴趣 | V002 |
| 15 | `user_photos` | 资料 | 用户照片 | V002 |
| 16 | `user_privacy_settings` | 资料 | 隐私设置 | V002 |
| 17 | `user_identities` | 实名 | 实名认证 | V002 |
| 18 | `consent_records` | 合规 | 同意记录 | V002 |
| 19 | `review_tasks` | 审核 | 审核任务 | V003 |
| 20 | `review_items` | 审核 | 审核明细 | V003 |
| 21 | `review_reasons` | 审核 | 审核原因字典 | V003 |
| 22 | `user_relations` | 关系 | 用户关系(Like / Pass / Block) | V003 |
| 23 | `matches` | 关系 | 匹配关系(Match Episode) | V003 |
| 24 | `relationship_success_requests` | 关系 | 成功牵手请求 | V003 |
| 25 | `conversations` | 消息 | 会话 | V004 |
| 26 | `conversation_members` | 消息 | 会话成员 | V004 |
| 27 | `messages` | 消息 | 消息 | V004 |
| 28 | `notifications` | 消息 | 通知 | V004 |
| 29 | `recommendation_records` | 推荐 | 推荐记录 | V004 |
| 30 | `match_rule_configs` | 推荐 | 匹配规则配置 | V006 |
| 31 | `matchmaker_services` | 红娘 | 红娘服务 | V009 |
| 32 | `matchmaker_recommendations` | 红娘 | 红娘推荐 | V009 |
| 33 | `matchmaker_followups` | 红娘 | 红娘跟进 | V009 |
| 34 | `activities` | 活动 | 活动 | V010 |
| 35 | `activity_registrations` | 活动 | 活动报名 | V010 |
| 36 | `activity_interests` | 活动 | 活动互选意向 | V011 |
| 37 | `activity_capacity_groups` | 活动 | 活动名额分组(男女独立) | V023 |
| 38 | `activity_organizations` | 活动 | 活动主办单位 | V023 |
| 39 | `activity_mutual_connection_consents` | 活动 | **互选二阶段同意**(→ 双方确认 → Match) | V024 |
| 40 | `activity_staff_assignments` | 活动 | 活动工作人员分配 | V040 |
| 41 | `reports` | 风控 | 举报 | V012 |
| 42 | `risk_events` | 风控 | 风险事件 | V012 |
| 43 | `risk_actions` | 风控 | 风控处置 | V012 |
| 44 | `appeals` | 风控 | 申诉 | V013 |
| 45 | `user_local_eligibilities` | 资格 | 用户本地资格 | V017 |
| 46 | `local_eligibility_evidences` | 资格 | 本地资格佐证 | V017 |
| 47 | `home_banners` | 首页 | 首页 Banner | V019 |
| 48 | `service_locations` | 服务 | 善缘服务站 | V019 |
| 49 | `service_appointments` | 服务 | 服务预约 | V021 |
| 50 | `counseling_services` | 服务 | 婚恋咨询 / 婚前辅导 | V022 |
| 51 | `counseling_followups` | 服务 | 咨询随访 | V022 |
| 52 | `content_categories` | 内容 | 内容分类 | V026 |
| 53 | `content_articles` | 内容 | 内容文章(婚恋课堂 / 反诈) | V026 |
| 54 | `service_programs` | 服务 | 专项公益服务项目 | V026 |
| 55 | `service_program_members` | 服务 | 项目成员 | V026 |
| 56 | `organization_relationships` | 基础 | 组织关系(主办单位等) | V026 |
| 57 | `service_location_operators` | 服务 | 服务站人员数据范围 | V028 |
| 58 | `service_location_announcements` | 服务 | 服务站公告 | V042 |
| 59 | `idempotency_records` | 平台 | 通用幂等记录(+ 唯一索引 `uk_idempotency_scope`) | V045 |
---
## 与原文的差异(治理证据)
原文以 40 项**无表名**的中文编号列表记录(如「21. 活动反馈表」「26. 举报证据表」「27. 用户风险档案表」),
其中**多项在实际迁移中并不存在**(如活动反馈表、举报证据表),且缺少 V1.1 新增的 19 张表(Banner / 服务站 /
预约 / 咨询 / 内容 / 项目 / 本地资格 / 互选同意 / 幂等记录等)。
**结论**:以中文名枚举表清单会随实现漂移且无法机械核对 —— 这正是本轮改为「表名 + 来源迁移」并标注权威来源的原因。
---
*最后更新: 2026-09-18 — 由 40 表重写为实测 59 表 / 46 迁移*