diff --git a/docs/Phase-13A-V11-Completion-Report.md b/docs/Phase-13A-V11-Completion-Report.md index 3510f84..b6f285c 100644 --- a/docs/Phase-13A-V11-Completion-Report.md +++ b/docs/Phase-13A-V11-Completion-Report.md @@ -1,134 +1,33 @@ -# Phase 13A 完成报告:公益婚恋咨询与婚前辅导 +# Phase 13A 完成报告(已废止) -> 版本基线:v1.0.0-RC.2 → v1.1.0-dev | 日期:2026-09-08 -> 对应 EPIC:EPIC-P13A +> ⚠️ **本报告已废止(2026-09-18 文档治理)** +> +> 本文件原为 **2026-09-08** 的 V1.1 首轮完成报告,自报「✅ 核心链路已完成(V1.1 MVP)」。 +> 该结论**已被复验推翻** —— `docs/Phase-13A-V11-Recovery-Completion-Report-2026-09-17.md` +> 以 KEEP-VERIFY 实测出 **9 处真实缺陷 + 4 处测试基建缺陷**,并于 2026-09-17 **CLOSED(Gate 全项通过)**。 +> +> **取代者(唯一有效报告)**:`docs/Phase-13A-V11-Recovery-Completion-Report-2026-09-17.md` +> +> --- +> +> **为何保留文件而非删除** +> +> 1. 本机存在 safe-delete 钩子,会把「删文件」放大为「删父目录」——2026-09-18 实测:一次 +> `git rm` 单个文件导致整个 `docs/` 目录被移除(已从 Git 完整恢复)。**本仓库禁止用 +> `rm` / `git rm` 删除文件**,需要移除内容时**一律原地重写(Write/Edit)**。 +> 2. 保留本条废止记录,可说明「这份自报完成报告曾存在、为何失效」,属治理证据而非遗留噪声。 +> +> **命名说明(为何逃过批量清理清单)** +> +> 2026-09-18 的批量清理(commit `c77e6fc`,65 份)目标模式为 +> `docs/Phase-XX-V11-Completion-Report.md`(`XX` 为数字),而本文件名是 `Phase-13A-` +> (带 `13A`、缺数字段),**不匹配任何模式**而存活。 +> +> 同类漏网但**决定保留待决**的一份:`docs/Phase-V11-Deployment-Completion-Report.md` +> (2026-09-09,含已被推翻的「16/16 E2E 通过」)—— 它被保留文档 +> `docs/Phase-01-V11-Recovery-Completion-Report-2026-09-09.md` 援引,删除会制造**悬空引用**, +> 且不在治理方案的授权范围内,故不擅自删除,见 `docs/文档治理报告-2026-09-18.md`。 --- -## 完成摘要 - -| 项目 | 内容 | -|------|------| -| 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 - -```sql --- counseling_services -CREATE TABLE counseling_services ( - id, user_id, service_type, request_source, - user_request_summary, organization_id, assigned_operator_id, - status, preferred_service_mode, preferred_time, - scheduled_start_at, scheduled_end_at, - consent_version, consented_at, - completed_at, closed_reason, - companion_user_id, created_by_operator_id, user_confirmed_at, - created_at, updated_at, deleted_at -); - --- counseling_followups -CREATE TABLE counseling_followups ( - id, counseling_id, operator_id, followup_type, - content, result_code, next_followup_at, - created_at, updated_at -); -``` - ---- - -## 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(多类型公益活动)* +*废止日期: 2026-09-18 — 原文内容见 Git 历史:`git log --all -- docs/Phase-13A-V11-Completion-Report.md`* diff --git a/部署架构、运维监控、备份恢复与升级方案.md b/部署架构、运维监控、备份恢复与升级方案.md index 9eb35f0..24a8b36 100644 --- a/部署架构、运维监控、备份恢复与升级方案.md +++ b/部署架构、运维监控、备份恢复与升级方案.md @@ -1,6 +1,15 @@ # 丹阳公益婚恋服务平台 # V1.0 部署架构、运维监控、备份恢复与升级方案 +> **⚠️ 已被取代(2026-09-18 头注)**:本文件为 V1.0 部署运维方案。V1.1 的部署与运维口径以 +> `docs/OPS.md`(运维手册)、`infrastructure/`(compose / nginx / scripts,其中 `docker-compose.prod.yml` +> 刻意不进版本控制)与 `docs/善缘丹阳 V1.1 客户需求基线增量开发与修复计划.md` 的 **Phase 22(Deployment / Ops)** +> 为准。本文件保留原位,仅作为 V1.0 部署架构与历史决策的出处 —— 其中的**端口、主机名、目录结构可能已与现网不符**, +> 不得作为实施依据。 +> +> 交接说明:`AGENTS.md` 的「文档」节未收录本文件;`docs/Phase-01-V11-Recovery-Completion-Report-2026-09-09.md` +> 仍援引它作为 Phase 01 的核对对象(属历史记录,保留)。 + 版本:V1.0 适用范围:微信小程序后端、公益红娘工作台、运营管理后台、PostgreSQL、Redis、对象存储、WebSocket、日志与监控系统 核心目标:低成本、易部署、易维护、可备份、可恢复、可升级、故障可定位、后期可平滑扩容