# 善缘丹阳 V1.1 Jira Backlog > V1.0 Phase 01~26 基础 + V1.1 增量任务合并基线 > 版本:v1.1.0-dev | 最后更新:2026-09-08 > **2026-09-17 Phase 15 复验关闭:** EPIC-P15 已完成。复验发现两处**必崩级**缺陷,均为「生产一直存在、 > 测试库从未约束」的同族根因:① **签到码一生成即作废** —— `generateCheckinToken` 把 token 写入 Redis > 值 `"used"`,而 `scanCheckin` 见到 `"used"` 立即拒绝,扫码签到 **100% 失败**; > ② **取消后永远无法再报名** —— 生产 `UNIQUE(activity_id, user_id)` 一直存在,而重报名走 `INSERT`, > 测试库缺该唯一键故零覆盖。共修复 **16 处缺陷 + 3 处测试保真度缺陷**,新增 V040 > `activity_staff_assignments` 落实「服务站操作员只能操作指定活动」(INV-020)。 > 证据:`docs/Phase-15-V11-Recovery-Completion-Report-2026-09-17.md`。 > > **2026-09-17 Phase 16 复验关闭:** EPIC-P16-V11 已完成。复验发现活动互选**核心 Gate 缺陷**——双确认后**根本不建 Match/会话**(INV-014/015), > 且 Phase 15 提交态引用未定义的 `matchMapper.reopenEpisode` → **整个模块从未编译通过**,"474 绿"是假象。已统一双实现到 > `RelationshipService.confirmActivityInterest`,修复 **7 处缺陷 + 1 处隐藏编译缺陷 + 1 处测试保真度缺陷**,新建 > `ActivityMutualConsentServiceTest`(7 用例),并经负向验证证明守卫有牙。新增 V041 `expires_at`+`match_id`。 > 证据:`docs/Phase-16-V11-Recovery-Completion-Report-2026-09-17.md`。 > > **2026-09-17 Phase 17 复验关闭:** EPIC-P17-V11 已完成。复验发现风控/举报整条真实 DB 路径因测试库缺 `reports`/`risk_events`/`risk_actions` 三表而**零覆盖**,`ReportServiceTest` 全是 `assertTrue(true)` 假绿;且敏感访问(查看他人风险画像/举报)此前**无审计**(违反 AGENTS.md #8 默认拒绝 + 查看需审计);另修复审计缺 `ip`/`userAgent`、`findByUserId` 未过滤软删、人工标记无审计,以及 `javax`→`jakarta` 隐藏编译缺陷与 `risk_events` 漏 `updated_at` 列。共修复 **6 处真实缺陷**,补齐三表并新增 `ReportAndRiskPhase17IntegrationTest`(7 例),负向验证证明守卫有牙。全量回归 **488 tests 全绿**。 > 证据:`docs/Phase-17-V11-Recovery-Completion-Report-2026-09-17.md`。 > > **2026-09-17 Phase 18 复验关闭:** EPIC-P18-V11 已完成。复验发现申诉整条真实 DB 路径因测试库缺 `appeals` 表而**零覆盖**,`AppealServiceTest` 9 例中 6 例是 `assertTrue(true)` 假绿(覆盖的恰是 Gate 四条不变量);且 `escalateAppeal` 向 `operatorId` 发用户通知会撞 `notifications.user_id → users(id)` FK(operators 与 users 不同表)→ PG 上升级 100% 失败;`appealType` 未校验生产 `chk_appeal_type` 白名单。另修复 escalated 死胡同、`processAppeal` 先读后写并发竞态、三处查询漏软删过滤、硬编码 `resolved`、证据字段契约。共修复 **8 处真实缺陷**(含 1 处必崩级测试盲区、2 处「只在 PG 上炸」),补 `appeals` 表并新增 `AppealPhase18IntegrationTest`(15 例)、删除假绿 9 例,负向验证证明 Gate 守卫有牙。全量回归 **494 tests 全绿**;admin-web `vue-tsc` EXITCODE=0。 > 证据:`docs/Phase-18-V11-Recovery-Completion-Report-2026-09-17.md`。 > > **2026-09-17 Phase 19 复验关闭:** EPIC-P19 已完成。复验不采信任何「历史 ✅」,逐条核对运行时路径与生产约束,查出并修复 **25 处真实缺陷**。高价值项:①**服务站「临时公告」整条不可达** —— `ServiceLocationAnnouncementService` 与 V042 表都已存在,但**全仓零端点**,后台与小程序都拿不到(D20);②**服务站 `create/update` 越权写** —— `@PreAuthorize("service_location.view")` 挂在**类**上,V015 下发的 `service_location.manage` 是**从未被使用的死权限**,只读角色可直接改站点(D21);③该控制器**未纳入** `OperatorEndpointPermissionCoverageTest` 扫描清单,导致 D21 长期隐形(D22);④Banner 校验失败抛裸 `RuntimeException` → **500**(应 400)+ 软删 Banner 仍上首页(D2/D3);⑤Content「发布」死路(后台复用只返回 published 的公开接口)+ 分类停用不可恢复(D5/D6);⑥ServiceProgram 审批死路 / 草稿泄露 / 成员数恒 0 / 退出未实现 / 重复申请撞唯一键(D10~D14);⑦测试库缺 `content_categories` 与 `service_location_announcements` → 对应路径**零覆盖**(D9/D23);⑧预约 IDOR(D18);⑨`MigrationValidationTest` 基线未跟进 V042(D24)。新增守卫:`ServiceLocationAnnouncementPhase19IntegrationTest`(24) / `ServiceLocationControllerPermissionContractTest`(5) / `ServiceLocationAnnouncementConstraintParityTest`(5,生产 DDL↔测试库↔后端白名单↔后台标签四方一致);`V11PermissionMatrixContractTest` 由硬编码 V015+V029 改为扫描全部迁移。负向验证:注入 3 处缺陷(移除软删过滤 / 移除测试库 CHECK / 写端点降级为 `view`)→ **4 个用例精准变红且无无关失败**,还原后 `NEG-VAL` 残留 0。后端 **602 tests 全绿**;admin-web `vue-tsc` EXIT=0 + `vite build` EXIT=0;小程序 `tsc --noEmit` EXIT=0;ui-tests 14/14 PASS。 > 证据:`docs/Phase-19-V11-Recovery-Completion-Report-2026-09-17.md`。 > > **2026-09-17 Phase 20 复验关闭:** EPIC-P20 已完成。`STATUS.md` 早已把 Phase 20 标为「✅ 已完成」, > 复验起点是 `AnalyticsController` 15 端点 + `AnalyticsService` 546 行**确实存在**, > 但其中同时含有**硬编码 0**、**占位死代码**、**字母级口径造假**、**全员 403**、**假绿测试**。 > 逐条核对运行时路径与生产约束后修复:①**口径造假** —— 实名人数用 `user_profiles.profile_status != 'rejected'` > 冒充(把"资料还在填"算成已实名);Chat Started 直接数会话行数(系统通知计入); > Match 不分来源(10 对互选被当 10 对成功引用);**Banner 曝光/点击硬编码 0**;②**死代码** —— > 活动漏斗**全部硬编码 0**(不是没数据,是根本没有查询)+ 一行把"用户数"当"活动数"的死代码; > ③**系统性软删缺陷(D12)** —— `BaseEntity.deletedAt` 无 `@TableLogic`、全局无逻辑删除配置, > `selectCount` 把**软删数据全部计入统计且无任何报错**,修复 45 处统计调用(**2 轮复验,首轮漏扫 5 处次级路径**); > ④**权限授予脱节(Gate ⑩)** —— `data_viewer` 角色被定义却**从未授权**(空壳角色), > `platform_admin` 因 `id >= '20000000-…'` 漏掉 V1.0 老权限段 → > **整个模块除 super_admin 外全员 403**(含专为它设计的 `data_viewer`);⑤**三套独立实现** —— > Dashboard/用户漏斗/专项页各实现一遍同名指标且互不相同、字段名还不一致(`verifiedUsers` vs `verifiedCount`); > ⑥**假绿测试** —— `AnalyticsServiceTest` = 5×`assertTrue(true)`(零断言)。 > 建立指标字典(`MetricCatalog` 36 指标 × 12 字段 + `docs/ANALYTICS_METRICS.md`)与统一口径层 > `AnalyticsMetricsCalculator`;新增 V043 打通 `analytics.view` 授权(刻意不授予 `organization_admin` —— > 相关表无组织维度,无范围的全量数据即越权);新增守卫 `MetricCatalogGuardTest`(11) / > `AnalyticsMetricsPhase20IntegrationTest`(21) / `AnalyticsSoftDeleteGuardTest`(4,**结构性**约束:统计包内 > 每处 Mapper 统计调用必须显式含 `isNull(..)`,含防假绿下界) / `AnalyticsPermissionGrantTest`(6)。 > **跨阶段发现(本轮已修 X1~X3)**:`AccountLifecycleService` 注销时把 `user_identities` 状态域的 `'failed'` > 写入本地资格表 → 违反生产 `V017 chk_elig_verify_status` → **真实 PG 上 `closeAccount` 事务回滚、 > 账号注销 100% 不可用**(负向验证实测报 `DataIntegrityViolation`);`checkCanWithdraw` 的资格拦截用 > `submitted`/`pending`(该表永不可能出现的值)→ **死代码**;测试库补 `chk_elig_type`/`chk_elig_verify_status` > 后立即暴露 `ActivityPhase14Test` 夹具违规(`household` → `household_registration`)。新增 > `LocalEligibilityStatusVocabularyGuardTest`(9)。负向验证两轮共 7 处注入 → **7 个用例精准变红且无无关失败** > (其中一处被"源码结构 + 运行时行为"两层守卫同时捕获),还原后 `md5sum` 逐字节一致、`NEG-VAL` 残留 0。 > 后端 **648 tests 全绿**;admin-web `vue-tsc --noEmit` EXIT=0;**Phase 21 已复验关闭(2026-09-18,650 tests 全绿,见 `docs/Phase-21-V11-Recovery-Completion-Report-2026-09-18.md`)** > 证据:`docs/Phase-20-V11-Recovery-Completion-Report-2026-09-17.md`。 > **2026-09-16 状态校正:** Phase 07 UI 已按 2026-09-13 规格重新实现,**首批 11 页于 2026-09-16 通过用户验收(结论:基本达标)**,本文件此前"视觉否决/REOPENED"口径随之关闭。 > > **2026-09-17 Phase 14 复验关闭:** EPIC-P14 已完成。复验发现 activity 模块存在**必崩级空壳**—— > `ActivityMapper.countRemainingCapacity` **既无 `@Select` 也无 XML**,而 `ActivityService` 调用的 > 正是它 → 活动详情/报名/审核三条路径必然抛 `Invalid bound statement`。修复 **11 处后端缺陷**: > **D1(Critical,生产故障)** Mapper 空壳致三条路径必崩; > **D2(Critical,并发)** 报名与审核「先读后写」→ 并发**超卖**,改单条原子 SQL; > **D3(High,生产故障)** `activityType`/`orgRole` 未校验生产 CHECK 白名单(只在 PG 上炸); > **D4(High,契约)** `ActivityListItemDTO` 无 `activityType` → 小程序分类 Tabs 恒无数据; > D5 男女人数为 `approvedCount/2` 编造;D6 年龄门槛为 TODO 空壳;D7 `registration_policy` 只写不读; > **D8 `POST /operator/activities` 丢弃类型/多组织/分组且把 `organizer_org_id` 错设为操作者 userId**; > D9 三个运营写入端点错挂用户端控制器(双实现);D10 软删活动与缺字段致 NPE/500; > D11 DTO 缺 `registeredCount`/`status`/`coverFileId`/`description`。 > 另有 **3 处前端契约缺陷**(小程序分类 code `classroom` 不在白名单、卡片读 7 个不存在的字段、 > admin-web 无活动管理页 → 新增 `ActivityManagementView.vue` 动态表单)与 > **2 处测试保真度缺陷**(2 条 `assertTrue(true)` 占位假绿;测试库缺 V023 列与三张表、activity 五表零覆盖)。 > 证据:`docs/Phase-14-V11-Recovery-Completion-Report-2026-09-17.md`。**Phase 15 需用户确认后启动。** > > **2026-09-17 Phase 13A 复验关闭:** EPIC-P13A 已完成。复验发现 counseling 模块存在**双实现**—— > 线上权威 `CounselingService`(167 行)**零测试**,唯一被测的 `CounselingServiceApp`(280 行)是 > **孤儿类**(无注入点、无 HTTP 端点可达,生产永不执行)→ 已合并并删除孤儿类。修复 **9 处缺陷**: > **D1(Critical,生产故障 · INV-013 泄露)** 咨询正文原文被写入 WARN 日志(同 Phase 10 D2 一族); > **D2(High,越权)** 申请 `userId` 取自请求体而非认证主体 → 可替他人申请; > **D3(High,并发)** 分配用「先读后写」→ 并发**静默覆盖**,改 `assignIfPending` 条件更新; > **D4(High,越权读)** manager 经 `getDetail` 可读 followups 正文(INV-013 绕过通道); > **D5(Medium)** 无状态机 → 「已完成」可被再取消; > **D6(Medium,生产故障)** `GET /counseling/services/intro` 后端不存在 → 小程序 intro 页 100% 无数据 > (且被 `/services/{id}` 吞掉,需置于变量路径之前); > **D7(Medium,契约)** Admin 调用 5 条不存在的 `/services/operator/*`(404)+ 缺四态 → 后端补 8 端点; > **D8(Medium,契约)** 小程序字段名错 + 无幂等 + 未检查 `success`(403 静默空列表)+ 跳转不存在的页; > **D9(Medium,测试保真度)** 测试库 counseling 两表**零 CHECK 约束**,`counseling_services` 零覆盖。 > **另修 4 处测试基建缺陷**:守卫因 surefire `workingDirectory` 指向仓库根而**找不到 DDL**(恒真假绿); > 全限定 `@TableField(exist=false)` 漏解析(假警报);权限守卫扫到私有辅助方法(假阳性); > 两处测试自身逻辑缺陷(陈旧快照 / Instant 精度)。 > **关键结论**:负向验证两轮均证明守卫会红——① 从 `V039` 移除 `scheduled` → 常量守卫精准变红 > (证明解析的是**真实 DDL** 而非副本);② 注入并发/INV-013/状态机三个行为缺陷 → 三个用例各自精准变红。 > 迁移基线 38 → 39(新增 `V039`)。证据:`docs/Phase-13A-V11-Recovery-Completion-Report-2026-09-17.md`。 > 后端全量 **420 tests / 0 failures / 0 errors / 3 skipped / BUILD SUCCESS**(4 分 49 秒)。 > **Phase 14 需用户确认后启动。** > > **2026-09-16 Phase 13 复验关闭:** EPIC-P13-V11 已完成。复验中发现并修复 7 处缺陷—— > **D1(Critical,生产故障)** `matchmaker_recommendations.status` 代码写入 `liked`/`passed`/`confirmed_mutual`, > 而生产 `V009 chk_rec_status` 只允许 `pending_view/viewed/responded` → **真实 PG 上用户接受/跳过推荐必崩**; > **D2(Critical,生产故障)** 控制器缺省 `serviceType="recommendation"` 不在 `chk_matchmaker_service_type` 白名单 > → **提交红娘服务必崩**。两者同修于新增 `V038__align_matchmaker_status_constraints.sql`。 > **D3(High,越权写)** `recommendPartner` 无归属校验 → 任意红娘可替非本人负责的服务发起推荐、可推荐给自己。 > **D4(High,越权读)** `getServiceDetail` 无归属校验且返回完整用户资料 → 任意红娘可读任意用户敏感详情。 > **D5(High,越权写)** `ReferralService` 的 `userId` 取自请求体且**零授权校验** → 可替任意用户发起转介。 > **D6(High,生产故障)** `MatchmakerFollowupMapper.findByServiceId` 无 `@Select` → `Invalid bound statement`, > `getServiceDetail` 必崩(**本轮新增测试首次暴露**)。**D7(Medium)** admin-web 5 处 API 契约缺口(404 / C 端端点误用) > + 小程序缺转介服务层 → 后端补 2 个运营端端点、前端改路径、小程序新增 `referralService.js`。 > 测试库补 3 张 matchmaker 表(`EntityMigrationParityTest` 移入必需集),迁移基线 37 → 38。 > **关键教训**:首版常量守卫**硬编码白名单副本**,注入 D1 缺陷后**仍全绿** → 重写为**直接解析 `db/migration/V*.sql`** > (按文件名顺序取"最终有效"白名单 + 解析器自检);修正后经**第二轮负向验证**证明会红 > (`Tests run: 23, Failures: 1, Errors: 2 / BUILD FAILURE`)。删除 3 处假测试占位。 > 证据:`docs/Phase-13-V11-Recovery-Completion-Report-2026-09-16.md`。**Phase 13A 需用户确认后启动。** > 后端全量 **391 tests / 0 failures / 0 errors / 3 skipped / BUILD SUCCESS**(4 分 59 秒)。 > > **2026-09-16 Phase 12 复验关闭:** EPIC-P12-V11 已完成。复验中发现并修复 4 处缺陷—— > **D1(Critical,生产故障 · 同一族系统性缺陷)** 实体与生产迁移**系统性漂移**:23 张表、50 个列在 `db/migration` 中 > 根本不存在,而测试库 `schema-h2.sql` 手写了它们 → 全量测试绿 = **假绿**。其中 11 张表属"INSERT 必崩"级 > (缺 `id`/`created_at`/`updated_at`,被 `AutoFillHandler` 强制填充),含 `matches`(缺 `episode`/`source_id`/ > `last_activity_at`/`unmatched_by`/`deleted_at`)、`user_preferences`、`permissions`、`roles`、`consent_records`、 > `risk_events` 等;**真实 PG 上 Match 创建、择偶偏好保存、权限/角色写入、同意记录、风险事件全部失败**。 > 修复:新增 `V037__align_entity_columns_with_migrations.sql`(幂等 `ADD COLUMN IF NOT EXISTS` + 存量 `episode` 回填)。 > **D2(High)** `RelationshipService.createMatch` 不写 `episode`/`lastActivityAt`,与 `MatchService` 双路径填充不一致; > 且 episode 为 null 时 `m.getEpisode() + 1` 对 `Integer` **自动拆箱抛 NPE**。修复:两路径统一按 AGENTS.md #20 推导 + null 兜底。 > **D3(High)** 测试库缺 `user_identities` 等 7 张表 → `GET /api/v1/home` 在测试环境 `BadSqlGrammar`,**首页接口零回归覆盖**。 > **D4(Medium)** Phase 12 计划项 2 实际**未实现**:`getting_to_know` 分支只产出 counseling。修复:补 premarital 引导。 > 新增永久守卫 `EntityMigrationParityTest`(5 用例,区分"必崩级/潜伏级",经**两轮负向验证**证明会变红); > **删除 2 个假测试类**(`RelationshipStatusServiceTest`/`RelationshipStatusServiceDoubleConfirmTest` 的 `assertTrue(true)` 占位)。 > 后端全量 **371 tests / 0 failures / 0 errors**。 > 证据:`docs/Phase-12-V11-Recovery-Completion-Report-2026-09-16.md`。 > > **2026-09-16 Phase 11 复验关闭:** EPIC-P11-V11 已完成。复验中发现并修复 3 处缺陷—— > **D3(Critical,生产故障)** `NotificationService` 全部 10 种通知使用复合 type(`appointment_submitted` / > `counseling_assigned` / `le_verified` 等),违反生产 `chk_notification_type`(仅允许短名), > 真实 PostgreSQL 上**全部落库失败**,Phase 11 核心交付不可用;测试库未复刻该约束故长期静默; > **D1(High)** 通知幂等仅靠 SELECT-then-INSERT 无 DB 兜底 → 新增 `V036` partial unique index; > **D2(Medium)** 婚前辅导排期通知零调用 + 管理端排期路径完全不发通知 → 接线并按 service_type 分流。 > 新增测试 12 用例(含真实调用模板方法的 type 守卫)。后端全量 **346 tests / 0 failures / 0 errors**。 > 证据:`docs/Phase-11-V11-Recovery-Completion-Report-2026-09-16.md`。**Phase 12 需用户确认后启动。** > > **2026-09-16 Phase 10 复验关闭:** EPIC-P10-V11 已完成。复验中发现并修复 2 处缺陷—— > **D1(Critical,生产故障)** `PhotoService.uploadAndSave` 魔数校验因 `new byte[n]` 从不读取流而恒失败,本地资格佐证上传 100% 失败(且 PDF 被 image-only MIME 挡); > **D2(Low)** `ChatSafetyService` 把命中的高风险词写入普通日志。 > 同时**推翻旧报告**「伪装恶意图片被拒(Magic Number 校验)」与「EXIF清理预留(stripExif 占位)」两项声明——后者符号全仓库不存在。 > 新增 `PhotoUploadValidationTest`(6 用例,`MockMultipartFile` 真走校验链路)并做负向验证。后端全量 **334 tests / 0 failures / 0 errors**。 > 证据:`docs/Phase-10-V11-Recovery-Completion-Report-2026-09-16.md`。**Phase 11 需用户确认后启动。** > > **2026-09-16 Phase 09 复验关闭:** EPIC-P09-V11 已完成。复验中发现并修复 4 处真实缺陷(WebSocket 下行整条链路为死代码、Unmatch 后仍可发消息、Block 未落库 Match、聊天四接口 IDOR 越权), > 新增 `ChatPhase09IntegrationTest`(13 用例)与 `ChatWebSocketHandlerTest`(7 用例),并把生产消息唯一索引下沉到测试库。后端全量 **328 tests / 0 failures / 0 errors**。 > 证据:`docs/Phase-09-V11-Recovery-Completion-Report-2026-09-16.md`。 > > **2026-09-16 Phase 08 复验关闭:** EPIC-P08-V11 已完成。复验中发现并修复 3 处真实缺陷(搜索绕过 Block / 详情无 Block 检查 / `matches.source` 取值越界), > 新增 `DiscoverBlockInvisibilityIntegrationTest`(9 用例)并把生产 `chk_match_source` 约束下沉到测试库。 > 证据:`docs/Phase-08-V11-Recovery-Completion-Report-2026-09-16.md`。 > > **2026-09-13 状态校正(历史):** 本文件中的既有 `✅` 是历史开发声明,不再单独作为验收证据。Phase 01~06 已由恢复版 Completion Report 重新举证;Phase 07 仅保留业务测试证据,管理端与小程序视觉已被用户否决并重新打开。Phase 08 暂停,当前先执行 UI 清理与参考图重设计。 | 当前执行项 | 状态 | 依据 | |---|---|---| | Phase 01 项目治理与检查基线 | 已完成 | Git 基线已建立,提交 `b46b48e` | | Phase 02 统一认证、RBAC、DataScope | 已完成 | 见 `Phase-02-V11-Recovery-Completion-Report-2026-09-10.md` | | Phase 03 实名认证增量预留 | 已完成 | 见 `Phase-03-V11-Recovery-Completion-Report-2026-09-12.md` | | Phase 04 Profile、Preference 与本地资格 | 已完成 | 见 `Phase-04-V11-Recovery-Completion-Report-2026-09-12.md`;Phase 05 尚未获准 | | Phase 05 统一审核扩展 | 已完成 | 见 `Phase-05-V11-Recovery-Completion-Report-2026-09-12.md`;Phase 06 尚未开始 | | Phase 06 Match Eligibility 增量 | 已完成 | 见 `Phase-06-V11-Recovery-Completion-Report-2026-09-12.md`;Phase 07 尚未开始 | | Phase 07 V1.1 首页唯一实现 + 找对象 | 已完成:视觉已通过用户验收(2026-09-16) | 保留首页聚合、Capability、8 入口和推荐规则证据;UI 已按 2026-09-13 新规格重新实现,11 页经用户验收通过 | | Phase 08 Like / Match / Block 复验 | 已完成(2026-09-16) | 见 `Phase-08-V11-Recovery-Completion-Report-2026-09-16.md`;修复 3 处真实缺陷(搜索绕过 Block、详情无 Block 检查、`matches.source` 取值越界),后端 308 tests 全绿 | | Phase 09 Text Chat 复验 | 已完成(2026-09-16) | 见 `Phase-09-V11-Recovery-Completion-Report-2026-09-16.md`;修复 4 处真实缺陷(WebSocket 下行死代码、Unmatch 后仍可发消息、Block 未落库 Match、聊天接口 IDOR),后端 328 tests 全绿;Phase 10 尚未获准 | | Phase 10 Image & Chat Safety 复验 | 已完成(2026-09-16) | 见 `Phase-10-V11-Recovery-Completion-Report-2026-09-16.md`;修复 2 处缺陷(图片上传魔数校验死代码致本地资格佐证上传 100% 失败、高风险词写入日志),推翻旧报告 2 项安全声明,后端 334 tests 全绿;Phase 11 尚未获准 | | Phase 11 Notification 复验 | 已完成(2026-09-16) | 见 `Phase-11-V11-Recovery-Completion-Report-2026-09-16.md`;修复 3 处缺陷(10 种通知 type 违反生产 CHECK 约束致全部落库失败、幂等无 DB 兜底、婚前辅导通知未接线),后端 346 tests 全绿 | | Phase 12 Relationship Progress 复验 | 已完成(2026-09-16) | 见 `Phase-12-V11-Recovery-Completion-Report-2026-09-16.md`;修复 4 处缺陷(**实体↔生产迁移系统性漂移 23 表 50 列**、双路径 episode/NPE、测试库缺 7 表致首页零覆盖、计划项 2 未实现),新增永久守卫 `EntityMigrationParityTest`,删除 2 个假测试类,后端 371 tests 全绿 | | Phase 13 公益红娘转介复验 | 已完成(2026-09-16) | 见 `Phase-13-V11-Recovery-Completion-Report-2026-09-16.md`;修复 7 处缺陷(**2 处生产故障级 CHECK 约束缺口致推荐接受/服务提交必崩**、推荐与转介三处越权、`getServiceDetail` 越权读、Mapper 缺 `@Select` 致必崩、前端 5 处契约缺口),测试库补 3 张 matchmaker 表,迁移基线 V038;新增 `MatchmakerReferralPhase13Test`(17 用例)+ 重写 `MatchmakerServiceTest`(6 用例,解析真实 DDL),删除 3 处假测试,后端 **391 tests 全绿**;**Phase 13A 尚未获准** | | Phase 13A 婚恋咨询与婚前辅导复验 | 已完成(2026-09-17) | 见 `Phase-13A-V11-Recovery-Completion-Report-2026-09-17.md`;发现 counseling **双实现**(权威类零测试 / 孤儿类被单测),已合并删除孤儿类;修复 **9 处缺陷**(**D1 咨询正文写日志=INV-013 泄露**、D2 申请 userId 取请求体、**D3 分配先读后写并发静默覆盖**、D4 manager 可读 followups=INV-013 绕过、D5 无状态机、**D6 `/services/intro` 后端不存在致小程序 intro 页 100% 无数据**、D7 Admin 5 端点 404、D8 小程序字段名/幂等/静默失败、D9 测试库 counseling 零 CHECK 约束)+ **4 处测试基建缺陷**(守卫找不到 DDL 恒真假绿、全限定 `@TableField` 漏解析、权限守卫假阳性、测试自身逻辑缺陷);迁移基线 V039;新增 `CounselingPhase13ATest`(25)+ `CounselingConstraintGuardTest`(5,解析真实 DDL),两轮负向验证证明守卫会红;后端 **420 tests 全绿**;**Phase 14 尚未获准** | | Phase 14 多类型公益活动复验 | 已完成(2026-09-17) | 见 `Phase-14-V11-Recovery-Completion-Report-2026-09-17.md`;修复 **11 处后端缺陷**(**D1 `ActivityMapper.countRemainingCapacity` 无 SQL 空壳致详情/报名/审核必崩**、**D2 报名与审核先读后写并发超卖** → 改原子 SQL、D3 类型/角色未校验生产 CHECK 白名单、**D4 DTO 无 `activityType` 致小程序分类 Tabs 恒空**、D5 男女人数 `approvedCount/2` 编造、D6 年龄门槛空壳、D7 按类型资格策略为空、**D8 运营端建活动丢弃类型且把主办组织错设为操作者 userId**、D9 三个运营端点错挂用户端双实现、D10 软删活动/缺字段 NPE、D11 DTO 缺 4 字段)+ **3 处前端契约缺陷**(分类 code `classroom` 不在白名单、卡片读 7 个不存在字段、admin-web 无活动管理页)+ **2 处测试保真度缺陷**(2 条占位假绿、测试库缺 V023 列与三张表);新增 `ActivityPhase14Test`(23)+ `ActivityConstraintGuardTest`(9,解析真实 DDL **与前端源码**),两轮负向验证证明守卫会红;admin-web `vue-tsc` 0 error + `vite build` 通过;后端 **450 tests 全绿**;**Phase 15 尚未获准** | | Phase 15 活动报名审核签到复验 | 已完成(2026-09-17) | 见 `Phase-15-V11-Recovery-Completion-Report-2026-09-17.md`;修复 **16 处缺陷**(**D1 签到码一生成即作废**:`generateCheckinToken` 把 token 写 `"used"` 而扫码端见 `"used"` 即拒 → 扫码 100% 失败;**D9 取消/拒绝后永远无法再报名**:撞生产 `UNIQUE(activity_id,user_id)`,测试库缺该约束故零覆盖 → 改复用记录;D2 重复签到竞态、D3 签到无数据范围、D4 手工签到无校验、D5 统计 NPE+语义错、D6 非法 token 500、D7 签名非恒定时间比较、D10 后台审核列表无 pending、D11 报名窗口不生效、D12 取消无审计、D13 审核/取消非原子、D14 容量分组不参与扣减)+ **2 处前端契约缺陷**(admin-web 无签到工作台、小程序无取消报名入口);新增 V040 `activity_staff_assignments` 落实 INV-020 活动数据范围;**3 处测试保真度缺陷**(测试库缺 UNIQUE+2 CHECK、3 条 `assertTrue(true)` 假绿、表未入必选集合);新增 `ActivityPhase15Test`(21),`CheckinServiceTest` 假绿改真实守卫(5),约束守卫 +2,迁移基线 39→40;一轮负向验证 3 处注入 → 8 条用例精准变红并还原;admin-web `vue-tsc` 0 error + `vite build` 通过;后端 **474 tests 全绿**;**Phase 16 尚未获准** | | Phase 16 活动互选二阶段同意复验 | 已完成(2026-09-17) | 见 `Phase-16-V11-Recovery-Completion-Report-2026-09-17.md`;修复 **7 处缺陷 + 1 处隐藏编译缺陷 + 1 处测试保真度缺陷**(**D1 双确认后根本不建 Match/会话(Gate 缺陷·INV-014/015)**、**D3 Phase 15 提交态引用未定义 `reopenEpisode` 致整个模块不编译("474 绿"为假象)**、D4 INV-006 单向意向泄露、D5 复用/新建 Match 后缺会话);统一双实现到 `RelationshipService.confirmActivityInterest`;`MatchMapper` 补 `reopenEpisode`;测试库补 `activity_mutual_connection_consents` 表并移入必选集合,`MigrationValidationTest` 基线 40→41;新建 `ActivityMutualConsentServiceTest`(7 用例);`ChatPhase09IntegrationTest:344` 断言对齐 AGENTS.md #20 复用语义;新增 V041 `expires_at`+`match_id`;负向验证 2 用例精准变红并还原;后端 **481 tests 全绿**;**Phase 17 尚未获准** | | Phase 17 举报与风控复验 | 已完成(2026-09-17) | 见 `Phase-17-V11-Recovery-Completion-Report-2026-09-17.md`;修复 **6 处真实缺陷**(**D1(Critical,必崩级盲区)测试库缺 `reports`/`risk_events`/`risk_actions` 三表 → 风控/举报真实 DB 路径零覆盖,`ReportServiceTest` 全 `assertTrue(true)` 假绿**;**D3(High)敏感访问(查看他人风险画像/举报)无审计(违反 AGENTS.md #8)**;D4 审计缺 `ip`/`userAgent`;D5 `findByUserId` 未过滤软删;D2 人工标记无审计;**D6 `javax`→`jakarta` 隐藏编译缺陷 + `risk_events` 漏 `updated_at` 列**);补齐三表并移出白名单入 `REQUIRED_IN_TEST_SCHEMA`;新增 `AuditLogService.recordSensitiveAccess` 并接线三端点;新增 `ReportAndRiskPhase17IntegrationTest`(7 用例);负向验证(注释 getReportDetail 审计 → D3 守卫精准变红并还原);后端 **488 tests 全绿**;**Phase 18 尚未获准** | | Phase 18 申诉复验 | 已完成(2026-09-17) | 见 `Phase-18-V11-Recovery-Completion-Report-2026-09-17.md`;修复 **8 处真实缺陷**(**D1(Critical,必崩级盲区)测试库缺 `appeals` 表 + `AppealServiceTest` 9 例中 6 例 `assertTrue(true)` 假绿 → 申诉真实 DB 路径零覆盖**;**D2(High,只在 PG 上炸)`escalateAppeal` 向 `operatorId` 发用户通知撞 `notifications.user_id → users(id)` FK → 升级事务整体回滚**;**D3(High,只在 PG 上炸)`appealType` 未校验生产 `chk_appeal_type` 白名单**;D4 escalated 死胡同(前后端均无法再决策);D5 `processAppeal` 先读后写并发竞态;D6 三处查询漏 `deleted_at` 过滤;D7 硬编码 `resolved`;D8 证据字段契约 `evidenceFileIds`);补 `appeals` 表并移出白名单入 `REQUIRED_IN_TEST_SCHEMA`;新增原子认领 `markReviewingIfProcessable`;新增 `AppealPhase18IntegrationTest`(15 用例),删除假绿 `AppealServiceTest`(9 用例);负向验证(误伤其他处置 → Gate 用例精准变红并还原);后端 **494 tests 全绿**;admin-web `vue-tsc` EXITCODE=0;**Phase 19 尚未获准** | | Phase 19 统一运营后台 + 用户端公益服务页面复验 | 已完成(2026-09-17) | 见 `Phase-19-V11-Recovery-Completion-Report-2026-09-17.md`;修复 **25 处真实缺陷**(**D20 服务站公告能力整条不可达:Service + V042 表都在、全仓零端点**;**D21 服务站 `create/update` 越权写:类级 `service_location.view` 兜底,`service_location.manage` 是从未使用的死权限**;D22 该控制器未纳入权限覆盖守卫;**D2/D3 Banner 校验 500 + 软删 Banner 仍上首页**;**D5/D6 Content 发布死路 + 分类停用不可恢复**;D10~D14 ServiceProgram 审批死路/草稿泄露/成员数恒 0/退出未实现/撞唯一键;D9/D23 测试库缺 `content_categories` 与 `service_location_announcements` → 零覆盖;D18 预约 IDOR;D24 迁移基线未跟进 V042);补 V042 公告表 + 运营端五端点 + 用户端只读端点 + 后台公告管理 UI + 小程序 U50 公告区块;新增 3 组守卫(24+5+5 用例)并把服务站运营端收入权限覆盖扫描;负向验证 3 注入 → 4 用例精准变红;后端 **602 tests 全绿**;admin-web `vue-tsc`/`vite build` 双绿;小程序 `tsc` EXIT=0;ui-tests 14/14;**Phase 20 尚未获准** | | Phase 20 Analytics 数据统计与管理驾驶舱复验 | 已完成(2026-09-17) | 见 `Phase-20-V11-Recovery-Completion-Report-2026-09-17.md`;修复 **20 处真实缺陷**(**D1 实名人数用 `profile_status != 'rejected'` 冒充 → 把"资料还在填"算成已实名**;**D3 Chat Started 直接数会话行数 → 系统通知计入**;**D4 Match 不分来源 → 10 对互选被当 10 对成功引用**;**D5 活动漏斗全部硬编码 0 + 一行把"用户数"当"活动数"的死代码**;**D6 Banner 曝光/点击硬编码 0**;**D12 系统性软删缺陷:`BaseEntity.deletedAt` 无 `@TableLogic` + 全局无逻辑删除配置 → `selectCount` 把软删数据全部计入且无任何报错**,修复 45 处统计调用(含 2 轮复验补扫出的 5 处次级路径);**D15 三套独立实现** → 抽 `AnalyticsMetricsCalculator` 统一口径;**D13/权限 授予脱节:`data_viewer` 空壳角色 + `platform_admin` 被 `id >= '20000000-…'` 条件漏掉 V1.0 老权限段 → 整个模块除 super_admin 外全员 403**;**D14 `AnalyticsServiceTest` = 5×`assertTrue(true)` 假绿 → 删除**;D20 `getDailySummary` 无边界校验;前端 `AnalyticsView.vue` 未接 `/v11-dashboard`);建立指标字典 `MetricCatalog`(36 指标 × 12 字段)+ `docs/ANALYTICS_METRICS.md`;新增 V043 授权(**刻意排除 `organization_admin`** —— 相关表无组织维度,无范围全量数据即越权);新增守卫 `MetricCatalogGuardTest`(11) / `AnalyticsMetricsPhase20IntegrationTest`(21) / `AnalyticsSoftDeleteGuardTest`(4,结构性) / `AnalyticsPermissionGrantTest`(6);**跨阶段修复 X1~X3**(**注销写入 `user_identities` 状态域的 `'failed'` → 违反 V017 `chk_elig_verify_status` → 真实 PG 上账号注销 100% 不可用**;`checkCanWithdraw` 资格拦截死代码;测试库补两条 CHECK 后暴露 `ActivityPhase14Test` 夹具违规)并新增 `LocalEligibilityStatusVocabularyGuardTest`(9);负向验证两轮 7 注入 → 7 用例精准变红并还原(`md5sum` 逐字节一致);后端 **648 tests 全绿**;admin-web `vue-tsc` EXIT=0;**Phase 21 已复验关闭(2026-09-18,650 tests 全绿)** | | Phase 21 账户生命周期增量复验 | 已完成(2026-09-18) | 见 `docs/Phase-21-V11-Recovery-Completion-Report-2026-09-18.md`;KEEP-VERIFY 复验发现 STATUS 标✅ 但含 **6 处真实缺陷 + 假绿测试**:① `AuthService.checkAccountStatus` 不拒 `CLOSED` → 注销后仍可登录(Gate ❌→✅);② `notifyActiveMatches` 为 TODO 桩 → 注销未关闭活跃 Match/会话(Gate ❌→✅,已实现关闭 Match + `chatService.closeConversationForMatch`);③ `cancelPendingActivityRegistrations` 为 TODO 桩 → 未来活动报名未关闭(Gate ❌→✅);④ `anonymizeServiceHistory` 已实现却**从未被 `closeAccount` 调用(死代码)** → 个人/咨询正文暴露(Gate ❌→✅,已接线 + 脱敏身份证占位符 + `counseling_followups` 正文);⑤ `closeAccount` 在 blockers 处硬抛异常使 `cancelXxx` 永远不可达(死代码矛盾 → 信息性日志 + 继续清理);⑥ 删除 7×`assertTrue(true)` 假绿 → 替换为 11 用例真实 DB 集成测试 + 3 用例登录守卫;跨模块防线(推荐引擎/匹配资格/Capability 已拒非 NORMAL)确认有效;后端 **650 tests 全绿**(起点 648,净 +2);**Phase 22 尚未获准** | | UI-CLEANUP-20260913 | 已完成 | 废弃 UI 代码、冲突规范、旧计划和无效验收证据已清理;`ui-document-baseline-contracts` 锁定唯一视觉入口 | | UI-ADMIN-20260913 | 已完成(待桌面端目视复验) | 管理端全局框架与工作台已按规格交付;18 modules + 22 routes,vue-tsc 与 vite build 全绿 | | UI-MINIAPP-20260913 | 已完成 | 小程序 11 个核心页面已重构;11/11 页 TS-only,2026-09-16 通过用户验收 | | V1.1 UAT / RC / Production | 进行中 | UI 视觉验收已通过;剩余前端调用与后端契约收敛(`/me/*` 路径族约 15 个端点)与页面闭环 | --- ## 命名规范 - Epic: `EPIC-P{XX}-V11`(V1.0已有Epic保持原名) - Story: `{Phase}-V11-S{NN}` - Task: `{Phase}-V11-T{NN}` - Bug: `BUG-{编号}` - 旧V1.0废弃任务标记: `DEPRECATED_BY_V1_1` --- ## Epic 总览 | Epic | Phase | 名称 | 优先级 | |------|-------|------|--------| | EPIC-P01-V11 | P01 | 项目治理与V1.1基线修订 | P0 | | EPIC-P02-V11 | P02 | 新业务权限域预留 | P0 | | EPIC-P03-V11 | P03 | 实名体系扩展预留 | P1 | | EPIC-P04-V11 | P04 | 本地资格与Profile扩展 | P1 | | EPIC-P05-V11 | P05 | 本地资格审核复用 | P1 | | EPIC-P06-V11 | P06 | Match Eligibility扩展 | P0 | | EPIC-P07-V11 | P07 | 首页V1.1重构与找对象 | P0 | | EPIC-P08-V11 | P08 | Like/Match保留+活动兼容 | P0 | ✅ | EPIC-P09-V11 | P09 | 聊天核心保持+活动兼容 | P0 | ✅ | EPIC-P10-V11 | P10 | 聊天安全扩展 | P0 | ✅ | EPIC-P11-V11 | P11 | 公益服务通知扩展 | P0 | ✅ | EPIC-P12-V11 | P12 | 关系状态轻量扩展 | P1 | ✅ | EPIC-P13-V11 | P13 | 红娘服务转介扩展 | P1 | ✅ | EPIC-P13A | P13A | 公益婚恋咨询与婚前辅导 | P1 | ✅ | EPIC-P14-V11 | P14 | 多类型公益活动 | P1 | | EPIC-P15-V11 | P15 | 活动签到回归测试 | P1 | | EPIC-P16-V11 | P16 | 活动互选二阶段同意重构 | P0 | ✅ | EPIC-P17-V11 | P17 | 公益服务风险来源扩展 | P0 | ✅ | EPIC-P18-V11 | P18 | 申诉保持 | P1 | ✅ | EPIC-P19-V11 | P19 | 善缘丹阳综合运营后台 | P1 | | EPIC-P20-V11 | P20 | 公益项目数据统计扩展 | P1 | | EPIC-P21-V11 | P21 | 账户生命周期增量 | P1 | | EPIC-P22-V11 | P22 | 部署运维配置扩展 | P1 | | EPIC-P23-V11 | P23 | V1.1专项测试 | P0 | | EPIC-P24-V11 | P24 | UAT增量 | P1 | | EPIC-P25-V11 | P25 | RC内容检查 | P1 | | EPIC-P26-V11 | P26 | Production初始化 | P1 | --- ## EPIC-P01-V11: 项目治理与V1.1基线修订 > **2026-09-09 有效状态:** Phase 01 治理交付已收口,但不是“项目测试通过”。当前阻断为缺少 Git 元数据;检查基线实测 5 个失败门禁。以下历史任务的“已完成”仅表示文件曾创建,验收结论以 `Phase-01-V11-Recovery-Completion-Report-2026-09-09.md` 为准。 ### Tasks - P01-V11-T01 [已完成] 更新AGENTS.md加入V1.1硬规则 - P01-V11-T02 [已完成] 更新docs/STATUS.md版本基线 - P01-V11-T03 [已完成] 更新docs/PENDING_DECISIONS.md - P01-V11-T04 [已完成] 新建docs/V1_1_CHANGELOG.md - P01-V11-T05 [已完成] 新建docs/V1_0_TO_V1_1_GAP_ANALYSIS.md - P01-V11-T06 [已完成] 新建docs/JIRA_BACKLOG.md - P01-V11-T07 [已完成] 新建docs/ARCHITECTURE_BASELINE_V1.1.md --- ## EPIC-P02-V11: 新业务权限域预留 ### Tasks - P02-V11-T01 ✅ banner permission domain - P02-V11-T02 ✅ counseling permission domain - P02-V11-T03 ✅ content permission domain - P02-V11-T04 ✅ service_location permission domain - P02-V11-T05 ✅ service_appointment permission domain - P02-V11-T06 ✅ local_eligibility permission domain - P02-V11-T07 ✅ service_program permission domain - P02-V11-T08 ✅ service_station_operator role - P02-V11-T09 ✅ counselor role - P02-V11-T10 ✅ counseling_manager role - P02-V11-T11 ✅ content_editor role ### Acceptance - 新角色不自动拥有用户全库权限 ✅ - content_editor默认无用户数据权限 ✅ - counselor默认assigned scope ✅ - service_station_operator无身份证权限 ✅ --- ## EPIC-P03-V11: 实名体系扩展预留 ### Tasks - P03-V11-T01 ✅ 增加verification_level字段到user_identities - P03-V11-T02 ✅ 增加liveness_verification_status预留 - P03-V11-T03 ✅ 增加verification_provider字段 - P03-V11-T04 ✅ Feature Flag控制人脸能力 ### Forbidden - 不得实现 face_embedding - 不得实现 face_template - 不得实现 self-hosted face recognition --- ## EPIC-P04-V11: 本地资格与Profile扩展 ### Data Tasks - P04-V11-T01 ✅ user_local_eligibilities migration - P04-V11-T02 ✅ local_eligibility_evidences migration - P04-V11-T03 ✅ local eligibility DTO ### API Tasks - P04-V11-T04 ✅ GET /api/v1/local-eligibility - P04-V11-T05 ✅ POST /api/v1/local-eligibility/declaration - P04-V11-T06 ✅ POST /api/v1/local-eligibility/evidences - P04-V11-T07 ✅ POST /api/v1/local-eligibility/submit ### Miniapp - P04-V11-T08 ✅ U62 本地资格说明页 - P04-V11-T09 ✅ U63 本地资格补充核验页 - P04-V11-T10 ⏳ Onboarding增加本地资格步骤(后续Phase) ### MeStatus - P04-V11-T11 ✅ /me/status增加localEligibilityStatus - P04-V11-T12 ✅ CapabilityService接入本地资格(Phase 07整合) --- ## EPIC-P05-V11: 本地资格审核复用 ### Tasks - P05-V11-T01 ✅ review_type扩展local_eligibility - P05-V11-T02 ✅ 本地资格审核Queue - P05-V11-T03 ✅ Claim(复用现有) - P05-V11-T04 ✅ Need Evidence - P05-V11-T05 ✅ Approve - P05-V11-T06 ✅ Reject - P05-V11-T07 ✅ Evidence access audit ### Acceptance - 不新建第二套审核引擎 ✅ - 多审核员Claim仍原子 ✅ - 审核通过更新local eligibility ✅ - 佐证查看被审计 ✅ --- ## EPIC-P06-V11: Match Eligibility扩展 ### Tasks - P06-V11-T01 ✅ MatchEligibilityService接入local eligibility - P06-V11-T02 ✅ localEligibilityRequired配置 - P06-V11-T03 ✅ 缓存失效处理 - P06-V11-T04 ✅ eligibility test matrix扩展 --- ## EPIC-P07-V11: 首页V1.1重构与找对象 ### Story: Home Aggregate - P07-V11-T01 ✅ HomeApplicationService - P07-V11-T02 ✅ GET /api/v1/home - P07-V11-T03 ✅ HomeDTO - P07-V11-T04 ✅ Home capability mapping ### Story: Banner - P07-V11-T05 ✅ home_banners migration - P07-V11-T06 ✅ Banner repository/service - P07-V11-T07 ✅ Banner audience filter - P07-V11-T08 ✅ Banner time filter - P07-V11-T09 ✅ Banner internal target validation ### Story: 新首页UI - P07-V11-T10 ✅ BrandHeader - P07-V11-T11 ✅ UserStatusStrip - P07-V11-T12 ✅ HomeBannerCarousel - P07-V11-T13 ✅ QuickEntryGrid - P07-V11-T14 ✅ HomeRecommendationSection - P07-V11-T15 ✅ ServiceRecommendationCard - P07-V11-T16 ✅ ActivityPreviewSection - P07-V11-T17 ✅ ServiceLocationCard - P07-V11-T18 ✅ ArticleSection - P07-V11-T19 ✅ SafetyNoticeCard ### Story: 固定8入口 - P07-V11-T20 ✅ QuickEntry static config - P07-V11-T21 ✅ Feature flag availability - P07-V11-T22 ✅ Capability fallback UI ### Story: 首页状态差异 - P07-V11-T23 ✅ onboarding home - P07-V11-T24 ✅ review-pending home - P07-V11-T25 ✅ searching home - P07-V11-T26 ✅ paused home - P07-V11-T27 ✅ successful home --- ## EPIC-P11-V11: 公益服务通知扩展 ### Tasks - P11-V11-T01 ✅ appointment submitted notification - P11-V11-T02 ✅ appointment confirmed notification - P11-V11-T03 ✅ counseling assigned notification - P11-V11-T04 ✅ counseling scheduled notification - P11-V11-T05 ✅ counseling completed notification - P11-V11-T06 ✅ premarital scheduled notification - P11-V11-T07 ✅ local eligibility need evidence notification - P11-V11-T08 ✅ local eligibility verified notification - P11-V11-T09 ✅ local eligibility rejected notification - P11-V11-T10 ✅ privacy-safe notification copy --- ## EPIC-P13-V11: 红娘服务转介 ✅ 已完成 ### Tasks - P13-V11-T01 转介婚恋咨询 ✅ - P13-V11-T02 转介公益活动 ✅ - P13-V11-T03 转介善缘服务站 ✅ - P13-V11-T04 referral source tracking ✅ - P13-V11-T05 user consent/confirmation ✅ --- ## EPIC-P13A: 公益婚恋咨询与婚前辅导 ✅ 已完成(2026-09-17 KEEP-VERIFY/EXTEND 复验关闭) ### Story: 数据模型 - P13A-T01 counseling_services migration ✅ (V022) - P13A-T02 counseling_followups migration ✅ (V022) - P13A-T03 indexes ✅ (V022) - P13A-T04 migration tests ✅ 已补全(`MigrationValidationTest` 基线 38 → 39;测试库补 3 个 CHECK 约束 + 新建 `counseling_followups` 表) - P13A-T04b **V039 幂等键 + CHECK 白名单显式固化** ✅ 新增(`idempotencyKey` 列 + `uk_counseling_idem` 唯一索引) ### Story: 用户咨询 - P13A-T05 GET counseling service intro ✅ **修复:后端端点此前不存在**(被 `/services/{id}` 吞掉)→ 已补并置于变量路径之前 - P13A-T06 POST counseling request ✅ **修复:userId 改从认证主体取;补幂等键;字段名对齐** - P13A-T07 GET my counseling ✅ **修复:检查 `success`(403 静默空列表);移除跳转不存在的页** - P13A-T08 GET counseling detail ✅ **修复:补 owner 校验 + 读侧分层(INV-013)** - P13A-T09 cancel counseling ✅ **修复:补 owner 校验 + 合法状态迁移** ### Story: 婚前辅导 - P13A-T10 premarital service type ✅ (service_type=premarital_guidance) - P13A-T11 premarital intro ✅ (复用 counseling/intro + U58页面) - P13A-T12 premarital request ✅ (复用 counseling/create,serviceType=premarital_guidance) - P13A-T13 optional companion support ✅ **修复:补 `confirmCompanion`,伴侣须本人确认(INV-005)** ### Story: Miniapp - P13A-T14 U55 婚恋咨询介绍 ✅ - P13A-T15 U56 申请咨询 ✅ **修复:字段名 `summary`/`preferredMode` + 幂等键** - P13A-T16 U57 我的咨询 ✅ **修复:检查 `success` + Loading/Empty/Error/Permission 四态 + 下拉刷新** - P13A-T17 U58 婚前辅导介绍 ✅ - P13A-T18 U59 婚前辅导申请 ✅ **修复:字段名对齐 + `companionUserId` 输入** ### Story: 后台 - P13A-T19 Counseling Queue ✅ `GET /services/operator/queue` - P13A-T20 Counseling Detail ✅ `GET /services/operator/{id}` - P13A-T21 Assign Counselor ✅ **修复:改 `assignIfPending` 条件更新(并发防静默覆盖)** - P13A-T22 Schedule ✅ **修复:补状态迁移断言 + INV-012 归属校验** - P13A-T23 Start ✅ **修复:同上** - P13A-T24 Followup ✅ **修复:同上** - P13A-T25 Complete ✅ **修复:同上** - P13A-T26 Close ✅ - P13A-T26b **Admin Web `CounselingView.vue` 重写 + `/counseling` 路由注册** ✅ 新增(四态 + 二次确认 + 防重复提交) ### Story: 权限与隐私 - P13A-T27 counselor assigned scope ✅ (getCounselorAssignedServices) - P13A-T28 counseling_manager scope ✅ **已补全**(可看申请摘要,但**不装配 followups** —— 避免 INV-013 绕过通道) - P13A-T29 matchmaker deny counseling notes ✅ **已由行为测试证明**(INV-013 七用例) - P13A-T30 generic admin deny sensitive note ✅ **已由行为测试证明**(`strangerGetsNothing` / `plainOperatorSeesSanitizedDetail`) - P13A-T31 SensitiveAccessLog ⏳ 待补充(随访内容写入审计日志)—— **不阻塞本 Phase Gate** ### Story: 风控联动 - P13A-T32 counseling risk referral ✅ **已接线**(`RiskReferralService.detectCounselingRisk`;**修复:不再把正文写入日志**) - P13A-T33 RiskEvent source=counseling ⏳ 待补充(后续 Phase) ### Story: 复验(2026-09-17 KEEP-VERIFY/EXTEND) - P13A-T34 删除孤儿类 `CounselingServiceApp` 及 3 个仅其使用的 DTO ✅ - P13A-T35 删除测死代码的 `CounselingDataScopeTest` ✅ - P13A-T36 新增 `CounselingPhase13ATest`(25 用例,真实运行时路径)✅ - P13A-T37 新增 `CounselingConstraintGuardTest`(5 用例,**解析真实 `db/migration/V*.sql`**)✅ - P13A-T38 修复 4 处测试基建缺陷(守卫找不到 DDL 恒真假绿 / 全限定 `@TableField` 漏解析 / 权限守卫假阳性 / 测试自身逻辑缺陷)✅ - P13A-T39 两轮负向验证证明守卫会红 ✅ **备注**:V1.1 核心链路已实现并完成 KEEP-VERIFY/EXTEND 复验,修复 9 处真实缺陷。 仅剩 SensitiveAccessLog 与 RiskEvent source=counseling 两项属后续 Phase 增强,不阻塞本 Phase Gate。 后端全量 **420 tests / 0 failures / 0 errors / 3 skipped / BUILD SUCCESS**。 --- ## EPIC-P14-V11: 多类型公益活动 ✅ 核心链路已完成(V1.1 MVP) ### Data Tasks - P14-V11-T01 activity_type field ✅ (V023 + Activity.java) - P14-V11-T02 registration_policy field ✅ (V023 + Activity.java) - P14-V11-T03 target_group field ✅ (V023 + Activity.java) - P14-V11-T04 industry_scope field ✅ (V023 + Activity.java) - P14-V11-T05 activity_organizations table ✅ (V023 + ActivityOrganization.java) - P14-V11-T06 activity_capacity_groups table ✅ (V023 + ActivityCapacityGroup.java) ### Frontend Tasks - P14-V11-T07 活动分类Tabs ⏳ 待Miniapp实现(后续补充) - P14-V11-T08 类型化ActivityCard ⏳ 待Miniapp实现(后续补充) - P14-V11-T09 动态报名资格提示 ⏳ 待Miniapp实现(后续补充) ### Admin Tasks - P14-V11-T10 Activity type selector ✅ (GET /activities/types/{type} API) - P14-V11-T11 registration policy form ✅ (createActivityFromAdmin支持registrationPolicy) - P14-V11-T12 multi-organization selection ✅ (POST /operator/activities + POST /operator/activities/{id}/organizations) - P14-V11-T13 capacity groups editor ✅ (POST /operator/activities/{id}/capacity-groups) **备注**:后端API核心链路已完成,Miniapp活动分类页面和Admin Web前端在后续Phase补充。 --- ## EPIC-P16-V11: 活动互选二阶段同意重构 ✅ 已完成(2026-09-17 KEEP-VERIFY/EXTEND 复验关闭) ### Data Tasks - P16-V11-T01 activity_mutual_connection_consents table ✅ (V024) - P16-V11-T02 pair unique active constraint ✅ (UNIQUE index with LEAST/GREATEST) - P16-V11-T02b V041 expires_at + match_id ✅ 新增(与 consent 超时拒绝、互选溯源对齐) ### Business Tasks - P16-V11-T03 detect mutual interest ✅ (detectMutualResults) - P16-V11-T04 create mutual consent ✅ (createMutualConsent) - P16-V11-T05 user A confirm ✅ (confirmConnection) - P16-V11-T06 user B confirm ✅ (confirmConnection) - P16-V11-T07 both-confirm transaction ✅ (@Transactional, exactly-once via `both_confirmed_at` 原子 UPDATE) - P16-V11-T08 create Match Episode ✅ (统一到 `RelationshipService.confirmActivityInterest`,赢家方建 Match) - P16-V11-T09 create Conversation ✅ **修复**:双确认后**显式开启 Conversation**(`getOrCreateConversation`);旧实现"不自动建"违反 Gate,已纠正 - P16-V11-T10 existing active Match reuse ✅ (统一经 `confirmActivityInterest`:active 复用、unmatched 经 `reopenEpisode` 复用同一行) - P16-V11-T11 prior Unmatch reuse same row + episode increment ✅ (`reopenEpisode` 递增 episode,状态回 active) - P16-V11-T12 decline handling ✅ (declineConnection + `declineSideIfPending`) - P16-V11-T13 timeout handling ⏳ 待补充(后续 Phase;V041 已加 `expires_at` 列,拒绝逻辑待接线) **复验备注(2026-09-17 KEEP-VERIFY/EXTEND)**: - 修复 **7 处缺陷 + 1 处隐藏编译缺陷(Phase 15 提交态引用未定义 `reopenEpisode` 致模块不编译,"474 绿"为假象)+ 1 处测试保真度缺陷**。 - 双实现统一到 `RelationshipService.confirmActivityInterest`;`MatchMapper` 补 `reopenEpisode`;INV-006 单向意向泄露修复。 - 测试库补 `activity_mutual_connection_consents` 表并移入 `REQUIRED_IN_TEST_SCHEMA`;`MigrationValidationTest` 基线 40→41;新建 `ActivityMutualConsentServiceTest`(7 用例)。 - 负向验证 2 用例精准变红并还原;全量回归 **481 tests / 0 failures** 全绿。 - 证据:`docs/Phase-16-V11-Recovery-Completion-Report-2026-09-17.md`。 ### Miniapp Tasks - P16-V11-T14 Mutual Result page ✅ (activity-mutual-result) - P16-V11-T15 开启线上沟通按钮 ✅ - P16-V11-T16 Waiting for other side state ✅ - P16-V11-T17 Both confirmed success page ✅ --- ## EPIC-P17-V11: 公益服务风险来源扩展 ✅ 已完成 ### Tasks - P17-V11-T01 risk source counseling ✅ (RiskReferralService.detectCounselingRisk) - P17-V11-T02 risk source service_station ✅ (RiskReferralService.detectAppointmentRisk) - P17-V11-T03 risk source offline_activity ✅ (RiskReferralService.detectActivityRisk) - P17-V11-T04 risk referral UI ⏳ Admin Web 后续补充(Phase 19) ### 2026-09-17 KEEP-VERIFY/EXTEND 复验结论 - **D1(Critical,必崩级盲区)**:`reports`/`risk_events`/`risk_actions` 三表在 H2 测试库缺失 → 风控/举报真实 DB 路径零覆盖;`ReportServiceTest` 全 `assertTrue(true)` 假绿。已补三表(对齐 V012,去外键留 CHECK)并移出 `TEST_SCHEMA_OPTIONAL_TABLES` 入 `REQUIRED_IN_TEST_SCHEMA`。 - **D3(High)**:敏感访问(查看他人风险画像/举报详情/风险事件列表)此前无审计(违反 AGENTS.md #8)。新增 `AuditLogService.recordSensitiveAccess` 并接线 `getReportDetail`/`getUserRiskProfile`/`RiskController.getRiskEvents`。 - **D4**:`ReportService.saveAuditLog` 补 `ip`/`userAgent`;**D5**:`findByUserId` 补 `deleted_at IS NULL`;**D2**:`manualFlagRisk` 补 `MANUAL_FLAG_RISK` 审计;**D6**:`javax`→`jakarta` 隐藏编译缺陷 + `risk_events` 漏 `updated_at` 列。 - 新增 `ReportAndRiskPhase17IntegrationTest`(7 例);负向验证(注释 getReportDetail 审计 → D3 守卫精准变红并还原);后端 **488 tests 全绿**。 - 证据:`docs/Phase-17-V11-Recovery-Completion-Report-2026-09-17.md` --- ## EPIC-P18-V11: 申诉保持 ✅ 已完成(2026-09-17 KEEP-VERIFY 复验关闭) ### Verification(2026-09-17 复验后校正) - V013 `appeals` 生产 DDL 完整(`chk_appeal_status` / `chk_appeal_type`);但**测试库此前完全缺该表**(只在 parity 可选白名单里 = 无人测),已补入 `schema-h2.sql` 并移入 `REQUIRED_IN_TEST_SCHEMA`。 - AppealService: FeatureFlag 控制 + 幂等性 + 可申诉限制(仅 ban/suspend)——复验后补 `appealType` 白名单校验与处置类型一致性。 - AppealController: 用户端 account-status / submit / my - AppealOperatorController: 后台端 pending / detail / process / stats - Miniapp: appeal 页面已注册(证据字段名 `evidenceFileIds` 已与后端 DTO 对齐) - 申诉通过 → 自动解除**对应** risk_action(`status → resolved`,只解除目标处置;其他仍有效处置不受影响)。 ⚠️ 旧注"status→revoked"**不实**:`Constants.RISK_ACTION_STATUS_REVOKED` 从无使用点,且不在生产 `chk_risk_action_status`(active/resolved/expired)白名单内;实现使用 `resolved`。 - 申诉被拒 → 维持原处置(`risk_action` 不变更) ### 2026-09-17 KEEP-VERIFY 复验结论 - 修复 **8 处真实缺陷**:D1 零覆盖(缺 `appeals` 表 + 6 处 `assertTrue(true)` 假绿);**D2 `escalateAppeal` 向 operator 发用户通知撞 `notifications.user_id → users(id)` FK → PG 上升级 100% 失败**;**D3 `appealType` 未校验 `chk_appeal_type`**;D4 escalated 死胡同;D5 `processAppeal` 先读后写并发竞态;D6 三处查询漏软删过滤;D7 硬编码 `resolved`;D8 证据字段契约。 - 新增 `AppealPhase18IntegrationTest`(15 例),删除假绿 `AppealServiceTest`(9 例);负向验证证明 Gate 守卫有牙;后端 **494 tests 全绿**;admin-web `vue-tsc` EXITCODE=0。 - 证据:`docs/Phase-18-V11-Recovery-Completion-Report-2026-09-17.md` ### 新增文件 - V025__extend_risk_sources.sql — 扩展 risk_events.event_type CHECK + risk_actions.action_type - RiskReferralService.java — 统一风险检测与事件创建 - RiskController.java — 运营人员手动风险标记接口 - CounselingServiceApp.java — 集成咨询风险检测 - ServiceAppointmentService.java — 集成服务站风险检测 - ActivityService.java — 集成活动风险检测 - Constants.java — 新增 6 个风险相关常量 --- ## EPIC-P19-V11: 善缘丹阳综合运营后台 ✅ 后端API核心链路已完成(V1.1 MVP) ### 内容管理(后端API) - P19-V11-T08 content_categories management ✅ (V026 + ContentService CRUD) - P19-V11-T09 content_articles management ✅ (V026 + ContentService CRUD) - P19-V11-T10 Article list ✅ (GET /content/articles) - P19-V11-T11 Article editor ✅ (PUT /operator/articles/{id}) - P19-V11-T12 Article publish ✅ (POST /operator/articles/{id}/publish) - P19-V11-T13 Article offline ✅ (POST /operator/articles/{id}/offline) - P19-V11-T14 Miniapp preview ⏳ 待Admin Web实现 ### 专项项目管理(后端API) - P19-V11-T25 service_programs CRUD ✅ (V026 + ServiceProgramService) - P19-V11-T26 service_program_members ✅ (V026 + MemberCRUD) - P19-V11-T27 Program CRUD ✅ (GET/POST/PUT /service-programs) - P19-V11-T28 Member application ✅ (POST /service-programs/{id}/apply) - P19-V11-T29 Member approval ✅ (POST /operator/members/{id}/approve) - P19-V11-T30 Program statistics basic ✅ (Phase 20 已提供 `service.program.member.approved` 等统一口径) ### Banner管理(后端API) - P19-V11-T01~T07 ✅ (V019已有HomeBannerService + HomeController,后续补充Admin CRUD API) ### 服务站管理(后端API) - P19-V11-T15~T18 ✅ (V019已有service_locations表,CRUD接口待Admin Web调用) ### 服务预约管理(后端API) - P19-V11-T19~T24 ✅ (V021已有ServiceAppointmentService,全部操作已实现) ### 组织协同 - P19-V11-T31 organization_relationships management ✅ (V026 + OrganizationRelationshipMapper) - P19-V11-T32 no automatic permission inheritance ✅ (INV-020已由V015权限模型保证) **备注**:后端API核心链路已完成,Admin Web Vue 3前端界面在后续补充。 --- ## EPIC-P20-V11: 公益项目数据统计扩展 ✅ 已完成 ### Tasks - P20-V11-T01 Banner impressions/clicks ✅ (getBannerStats) - P20-V11-T02 Service Station visits ✅ (getServiceStationStats) - P20-V11-T03 Service appointments stats ✅ (getServiceAppointmentStats) - P20-V11-T04 Counseling requests/completed ✅ (getCounselingStats) - P20-V11-T05 Premarital guidance stats ✅ (getPremaritalStats) - P20-V11-T06 Content views ✅ (getContentStats + topArticles) - P20-V11-T07 Local eligibility verified ✅ (getLocalEligibilityStats) - P20-V11-T08 Service program users ✅ (getServiceProgramStats) - P20-V11-T09 Registration source ✅ (getRegistrationSourceStats) - P20-V11-T10 Unique service users vs occurrences ✅ (getUniqueServiceUsersStats) - P20-V11-T11 EFFECTIVE_CONNECTION provisional metric ✅ (getEffectiveConnectionStats) ### 新增API端点 - GET /operator/analytics/v11-dashboard — 综合Dashboard - GET /operator/analytics/v11/banners — Banner统计 - GET /operator/analytics/v11/appointments — 预约统计 - GET /operator/analytics/v11/counseling — 咨询统计 - GET /operator/analytics/v11/premarital — 婚前辅导统计 - GET /operator/analytics/v11/content — 内容统计 - GET /operator/analytics/v11/local-eligibility — 本地资格统计 - GET /operator/analytics/v11/service-programs — 专项项目统计 - GET /operator/analytics/v11/registration-sources — 报名来源分布 - GET /operator/analytics/v11/unique-service-users — 去重用户统计 - GET /operator/analytics/v11/effective-connections — 有效牵手指标 --- ## EPIC-P21-V11: 账户生命周期增量 ✅ 已完成 ### Tasks - P21-V11-T01 cancel future service appointments on account close ✅ (cancelServiceAppointments) - P21-V11-T02 counseling lifecycle on account close ✅ (cancelCounselingServices) - P21-V11-T03 service program exit on account close ✅ (exitServicePrograms) - P21-V11-T04 local eligibility invalidation ✅ (invalidateLocalEligibility) - P21-V11-T05 service history anonymization hooks ✅ (anonymizeServiceHistory) ### 变更文件 - AccountLifecycleService.java — 扩展 checkCanWithdraw 和 closeAccount 处理V1.1业务 ### 注销前检查新增 | 检查项 | 阻断条件 | |--------|----------| | 服务预约 | submitted / pending_confirmation | | 心理咨询 | pending / assigned / scheduled / in_progress | | 专项项目 | approved(进行中) | | 本地资格 | submitted / pending_review | --- ## EPIC-P22-V11: 部署运维配置扩展 ✅ 已完成 ### Tasks - P22-V11-T01 counselingEnabled flag ✅ (FeatureFlagConfig.counselingEnabled) - P22-V11-T02 premaritalEnabled flag ✅ (FeatureFlagConfig.premaritalEnabled) - P22-V11-T03 contentEnabled flag ✅ (FeatureFlagConfig.contentEnabled) - P22-V11-T04 serviceLocationEnabled flag ✅ (FeatureFlagConfig.serviceLocationEnabled) - P22-V11-T05 localEligibilityEnabled flag ✅ (FeatureFlagConfig.localEligibilityEnabled) - P22-V11-T06 local evidence upload policy ✅ (maxFiles/maxSizeMB/allowedTypes) - P22-V11-T07 private storage for counseling attachments ✅ (private/bucket config) ### 变更文件 - FeatureFlagConfig.java — 新增 13 个 V1.1 feature flag 配置项 - application.yml — 新增 13 个 features.* 默认配置 - FeatureFlagController.java — GET/PUT /operator/feature-flags 端点 ### Flag 列表 | Flag | 默认值 | 说明 | |------|--------|------| | counselingEnabled | true | 公益咨询功能总开关 | | premaritalEnabled | true | 婚前辅导功能开关 | | contentEnabled | true | 内容管理功能开关 | | serviceLocationEnabled | true | 善缘服务站功能开关 | | localEligibilityEnabled | true | 本地资格核验开关 | | referralEnabled | true | 红娘转介功能开关 | | mutualConsentEnabled | true | 活动互选二阶段同意开关 | | serviceProgramEnabled | true | 专项公益服务项目开关 | | livenessEnabled | false | 活体检测开关(预留) | | localEvidenceUploadEnabled | true | 本地资格佐证上传开关 | | localEvidenceMaxFiles | 5 | 最大佐证文件数 | | localEvidenceMaxFileSizeMB | 10 | 单个文件最大大小(MB) | | localEvidenceAllowedTypes | jpg,png,pdf | 允许的文件类型 | | counselingAttachmentsPrivate | true | 咨询附件私有存储 | | counselingAttachmentsBucket | counseling-attachments | 咨询附件存储桶名 | --- ## EPIC-P23-V11: V1.1专项测试 ✅ 已完成 ### E2E Tests - P23-V11-T01 Home V1.1 E2E ✅ (home_v11_test.py) - P23-V11-T02 Banner timing filter ✅ (home_v11_test.py) - P23-V11-T03 Banner audience filter ✅ (home_v11_test.py) - P23-V11-T04 Quick Entry order ✅ (home_v11_test.py) - P23-V11-T05 Local Eligibility E2E ✅ (local_eligibility_test.py) - P23-V11-T06 Counseling E2E ✅ (counseling_v11_test.py) - P23-V11-T07 Counseling permission ✅ (counseling_permission_test.py) - P23-V11-T08 Service Appointment E2E ✅ (service_appointment_test.py) - P23-V11-T09 Content E2E ✅ (content_e2e_test.py) - P23-V11-T10 Multi-type Activity E2E ✅ (multi_type_activity_test.py) - P23-V11-T11 Activity Mutual Consent E2E ✅ (activity_mutual_consent_test.py) - P23-V11-T12 Service Station permission ✅ (service_station_permission_test.py) - P23-V11-T13 Organization relation isolation ✅ (organization_isolation_test.py) ### Invariant Tests - P23-V11-T14 INV-011~INV-020 ✅ (V11InvariantsTest.java — 10个测试用例) **E2E测试文件:12个,共774行代码,80+测试用例** - P23-V11-T01 Home V1.1 E2E - P23-V11-T02 Banner timing filter - P23-V11-T03 Banner audience filter - P23-V11-T04 Quick Entry order - P23-V11-T05 Local Eligibility E2E - P23-V11-T06 Counseling E2E - P23-V11-T07 Counseling permission - P23-V11-T08 Service Appointment E2E - P23-V11-T09 Content E2E - P23-V11-T10 Multi-type Activity E2E - P23-V11-T11 Activity Mutual Consent E2E - P23-V11-T12 Service Station permission - P23-V11-T13 Organization relation isolation ### Invariant Tests - P23-V11-T14 INV-011~INV-020 --- ## EPIC-P24-V11: UAT增量 ✅ 已就绪(后端支持完整) ### Tasks - P24-V11-T01 Service Station Operator UAT ✅ - P24-V11-T02 Counselor UAT ✅ - P24-V11-T03 Counseling Manager UAT ✅ - P24-V11-T04 Content Editor UAT ✅ - P24-V11-T05 服务站扫码→预约→到场 ✅ (API链路完整) - P24-V11-T06 咨询申请→服务完成 ✅ (API链路完整) - P24-V11-T07 婚前辅导申请 ✅ (Miniapp U58/U59) - P24-V11-T08 活动双方互选→双方确认→Chat ✅ (API+Miniapp完整) ### Admin Web V1.1 模块 - BannerManagementView.vue — Banner CRUD + 上架/下架 - ContentManagementView.vue — 分类+文章管理 + 发布/下架 - ServiceStationView.vue — 服务站信息管理 - ServiceAppointmentView.vue — 预约确认/完成/取消 - ServiceProgramView.vue — 专项项目CRUD + 成员审批 - CounselingView.vue — 咨询分配/排期/跟进/完成 - ReferralManagementView.vue — 红娘转介历史 - router/index.ts — 新增7个菜单项和路由 ### Tasks - P24-V11-T01 Service Station Operator UAT - P24-V11-T02 Counselor UAT - P24-V11-T03 Counseling Manager UAT - P24-V11-T04 Content Editor UAT - P24-V11-T05 服务站扫码→预约→到场 - P24-V11-T06 咨询申请→服务完成 - P24-V11-T07 婚前辅导申请 - P24-V11-T08 活动双方互选→双方确认→Chat --- ## EPIC-P25-V11: RC内容检查 ⏳ 待运营提供素材 ### Tasks - P25-V11-T01 Banner真实素材 ⏳ - P25-V11-T02 服务站真实地址 ✅(万善公园站已初始化) - P25-V11-T03 服务站开放时间 ✅(已配置) - P25-V11-T04 咨询服务介绍 ⏳ - P25-V11-T05 婚前辅导介绍 ⏳ - P25-V11-T06 婚恋反诈首批内容 ⏳ - P25-V11-T07 婚恋课堂首批内容 ⏳ - P25-V11-T08 关于善缘丹阳 ⏳ - P25-V11-T09 主办/执行信息 ⏳ ### Tasks - P25-V11-T01 Banner真实素材 - P25-V11-T02 服务站真实地址 - P25-V11-T03 服务站开放时间 - P25-V11-T04 咨询服务介绍 - P25-V11-T05 婚前辅导介绍 - P25-V11-T06 婚恋反诈首批内容 - P25-V11-T07 婚恋课堂首批内容 - P25-V11-T08 关于善缘丹阳 - P25-V11-T09 主办/执行信息 --- ## EPIC-P26-V11: Production初始化 ✅ 已完成(V027迁移) ### V027 种子数据 - 4个内容分类(婚恋课堂/反诈/婚前辅导/婚俗新风) - 万善公园服务站基础数据 - 3条首页Banner ### Admin Web V1.1 模块扩展 ✅ - BannerManagementView.vue - ContentManagementView.vue - ServiceStationView.vue - ServiceAppointmentView.vue - ServiceProgramView.vue - CounselingView.vue - ReferralManagementView.vue - router/index.ts(7个新路由) ### Tasks - P26-V11-T01 Seed Content Categories ✅ (V027) - P26-V11-T02 Seed Activity Types ✅ (CHECK约束) - P26-V11-T03 Seed Service Types ✅ (CHECK约束) - P26-V11-T04 创建万善公园服务站 ✅ (V027) - P26-V11-T05 初始化Banner ✅ (V027) - P26-V11-T06 初始化Feature Flags ✅ (application.yml) - P26-V11-T07 初始化新增Roles/Permissions ✅ (V015) - P26-V11-T08 Home Banner smoke test ⏳ 上线前手动验证 - P26-V11-T09 Quick Entries smoke test ⏳ 上线前手动验证 - P26-V11-T10 Service Station smoke test ⏳ 上线前手动验证 - P26-V11-T11 Counseling smoke test ⏳ 上线前手动验证 - P26-V11-T12 Content smoke test ⏳ 上线前手动验证 - P26-V11-T13 Activity Mutual Consent smoke test ⏳ 上线前手动验证 ### Tasks - P26-V11-T01 Seed Content Categories - P26-V11-T02 Seed Activity Types - P26-V11-T03 Seed Service Types - P26-V11-T04 创建万善公园服务站 - P26-V11-T05 初始化Banner - P26-V11-T06 初始化Feature Flags - P26-V11-T07 初始化新增Roles/Permissions - P26-V11-T08 Home Banner smoke test - P26-V11-T09 Quick Entries smoke test - P26-V11-T10 Service Station smoke test - P26-V11-T11 Counseling smoke test - P26-V11-T12 Content smoke test - P26-V11-T13 Activity Mutual Consent smoke test --- ## 依赖关系 ``` P01 → P02 → P03/P04/P05 → P06 → P07/P08 → P09/P10 → P11/P12 → P13 → P13A → P14/P15/P16 → P17/P18 → P19 → P20 → P21/P22 → P23 → P24 → P25 → P26 ``` --- ## 不可开发项(V1.1明确禁止) - 独立 CMS Server - 独立 Counseling Server - 社区/Feed/评论/点赞 - 积分/排行榜 - AI推荐/AI代聊/AI婚姻预测 - 支付系统 - 语音/视频通话 - 群聊 --- *生成时间: 2026-09-08 | WorkBuddy首轮执行期间生成*