Phase 13A 完成报告:公益婚恋咨询与婚前辅导
版本基线:v1.0.0-RC.2 → v1.1.0-dev | 日期:2026-09-08
对应 EPIC:EPIC-P13A
完成摘要
| 项目 |
内容 |
| Phase |
13A |
| 模块 |
公益婚恋咨询 + 婚前辅导 |
| 状态 |
✅ 核心链路已完成(V1.1 MVP) |
| 不变量 |
INV-012 Counselor assigned scope ✅ |
完成的任务
数据模型(V022)
counseling_services 表:完整生命周期(pending → assigned → scheduled → in_progress → completed/cancelled/closed)
counseling_followups 表:跟进记录存储
- 5个 CHECK 约束:service_type、status、request_source
- 3个索引:user_id、assigned_operator_id、scheduled_start_at
用户端 API(T05~T09)
GET /api/v1/counseling/services/intro — 咨询类型介绍
POST /api/v1/counseling/services — 申请咨询(支持转介来源追踪)
GET /api/v1/counseling/services — 我的咨询列表
GET /api/v1/counseling/services/{id} — 咨询详情(权限校验)
POST /api/v1/counseling/services/{id}/cancel — 取消咨询
婚前辅导(T10~T13)
service_type = premarital_guidance 复用 counseling_services
companionUserId 字段支持伴侣参与
- U58/U59 Miniapp 页面完整实现
后台管理(T19~T26)
getPendingQueue() — 待分配队列
assignCounselor() — 分配咨询师
scheduleCounseling() — 安排时间
startCounseling() — 开始咨询
addFollowup() — 添加跟进记录
completeCounseling() — 完成咨询
closeCounseling() — 关闭咨询
权限隔离(T27)
getCounselorAssignedServices() — Counselor 只能查看分配给自己的服务
- 前端 token 控制访问,后端 service 层强制过滤
数据库变更
V022__add_counseling_services.sql
API 汇总
| 方法 |
路径 |
说明 |
| GET |
/counseling/services/intro |
咨询类型介绍 |
| POST |
/counseling/services |
申请咨询 |
| GET |
/counseling/services |
我的咨询列表 |
| GET |
/counseling/services/{id} |
咨询详情 |
| POST |
/counseling/services/{id}/cancel |
取消咨询 |
| GET |
/counseling/services/operator/queue |
后台待分配队列 |
| POST |
/counseling/services/operator/{id}/assign |
分配咨询师 |
| POST |
/counseling/services/operator/{id}/schedule |
安排时间 |
| POST |
/counseling/services/operator/{id}/start |
开始咨询 |
| POST |
/counseling/services/operator/{id}/followup |
添加跟进 |
| POST |
/counseling/services/operator/{id}/complete |
完成咨询 |
| POST |
/counseling/services/operator/{id}/close |
关闭咨询 |
| GET |
/counseling/services/operator/assigned |
Counselor 查看分配服务 |
Miniapp 新增页面
| 页面 |
编号 |
路径 |
| 公益婚恋咨询介绍 |
U55 |
/pages/counseling-intro/counseling-intro |
| 申请咨询 |
U56 |
/pages/counseling-request/counseling-request |
| 我的咨询 |
U57 |
/pages/my-counseling/my-counseling |
| 婚前辅导介绍 |
U58 |
/pages/premarital-intro/premarital-intro |
| 婚前辅导申请 |
U59 |
/pages/premarital-request/premarital-request |
不变量验证
| 不变量 |
验证方式 |
结果 |
| INV-012 Counselor assigned scope |
getCounselorAssignedServices() 只返回 assigned_operator_id=当前操作员的记录 |
✅ |
| INV-013 Matchmaker 不能读取 Counseling 正文 |
Counselor/Matchmaker 权限域分离(常量隔离) |
✅ |
| INV-005 红娘不可替用户操作 |
咨询申请由用户自己发起,红娘只能转介(request_source=matchmaker_referral) |
✅ |
待后续补充
| 任务 |
阶段 |
说明 |
| Admin Web 咨询管理页面 |
Phase 19 |
Vue 3 后台界面 |
| counseling_manager 范围控制 |
Phase 19 |
批量管理权限 |
| SensitiveAccessLog 写入 |
Phase 17 |
咨询内容访问审计 |
| 风控联动(RiskEvent source=counseling) |
Phase 17 |
咨询内容风险检测 |
Phase 13A 核心链路完成。下一阶段:Phase 14(多类型公益活动)