KEEP-VERIFY re-audit of the Feature Flag configuration extension (STATUS's "Phase 22 部署运维配置扩展"): marked ✅ but contained real code defects and overstated completion. Real defects fixed: - D-22-A (High): FeatureFlagController.updateFlag used reflection `getMethod("set"+cap, boolean.class)` and only supported boolean flags. 7 non-boolean flags (livenessProvider, localEvidenceAllowedTypes, counselingAttachmentsBucket, localEvidenceMaxFiles, localEvidenceMaxFileSizeMB, localEvidenceRetentionDays) failed to update via the API. Now dispatches by field type (boolean/int/String). - D-22-B (Medium): `body.getOrDefault("value", false)` silently set false when value was missing and crashed on non-boolean casts. Now returns 400 on missing value / type mismatch and leaves the original value unchanged. Doc overclaims corrected (no silent scope creep): - T01-T05 module-toggle flags (isCounselingEnabled etc.) have zero business call sites -> dead config (exposed but not gating). Left for each module's own phase to wire; documented as residual. - T07 private-storage bucket flags have zero references; storage already uses object-storage.bucket-private. Documented as residual. - STATUS claimed "application.yml defaults (15 flags)"; yml has no `features:` block, defaults are Java field defaults. Functionally fine, docs corrected. T06 upload policy verified actually enforced in LocalEligibilityService + PhotoService (kept ✅). Guard tests: new FeatureFlagControllerTest (7 cases: 21 keys exposed, boolean/ string/int update reflected, unknown flag / missing value / wrong type -> 400). Negative validation: reverting to boolean-only dispatch made exactly 2 update cases fail red, then green after restore — proves guards are real. Full regression: 657 tests / 0 failures / 0 errors / 3 skipped (baseline 650, +7).
67 KiB
善缘丹阳 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 处测试保真度缺陷,新增 V040activity_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 用例),并经负向验证证明守卫有牙。新增 V041expires_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表而零覆盖,AppealServiceTest9 例中 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-webvue-tscEXITCODE=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-webvue-tscEXIT=0 +vite buildEXIT=0;小程序tsc --noEmitEXIT=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 标为「✅ 已完成」, 复验起点是AnalyticsController15 端点 +AnalyticsService546 行确实存在, 但其中同时含有硬编码 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/用户漏斗/专项页各实现一遍同名指标且互不相同、字段名还不一致(verifiedUsersvsverifiedCount); ⑥假绿测试 ——AnalyticsServiceTest= 5×assertTrue(true)(零断言)。 建立指标字典(MetricCatalog36 指标 × 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-webvue-tsc --noEmitEXIT=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 空壳;D7registration_policy只写不读; D8POST /operator/activities丢弃类型/多组织/分组且把organizer_org_id错设为操作者 userId; D9 三个运营写入端点错挂用户端控制器(双实现);D10 软删活动与缺字段致 NPE/500; D11 DTO 缺registeredCount/status/coverFileId/description。 另有 3 处前端契约缺陷(小程序分类 codeclassroom不在白名单、卡片读 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 处测试基建缺陷:守卫因 surefireworkingDirectory指向仓库根而找不到 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 兜底 → 新增V036partial 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 已复验关闭(2026-09-18,657 tests 全绿) |
| Phase 22 部署运维配置扩展(Feature Flag)复验 | 已完成(2026-09-18) | 见 docs/Phase-22-V11-Recovery-Completion-Report-2026-09-18.md;KEEP-VERIFY 复验发现 STATUS 标✅ 但含 2 处真实代码缺陷 + 2 处文档夸大:① D-22-A(High)FeatureFlagController.updateFlag 仅支持布尔 flag(反射 getMethod("set"+cap, boolean.class))→ 7 个非布尔 flag 经 API 更新必失败,已改为按字段类型分派 boolean/int/String;② D-22-B(Medium)body.getOrDefault("value", false) 缺 value 静默置 false + 非布尔转型崩,已改为缺 value/类型错→400 且不改原值;T01–T05 模块开关(isCounselingEnabled 等)全仓无业务调用点 → 死配置(暴露未 gate,遗留交各模块 Phase);T06 上传策略实测已在 LocalEligibilityService+PhotoService 真强制 ✅;T07 私有桶零引用 → 死配置(遗留);yml 无 features: 块、默认值实为 Java 字段默认(文档纠正);新增 FeatureFlagControllerTest(7 用例)+ 负向验证(仅布尔缺陷版恰 2 用例变红);后端 657 tests 全绿(起点 650,净 +7);Phase 23 尚未获准 |
| 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)假绿);D2escalateAppeal向 operator 发用户通知撞notifications.user_id → users(id)FK → PG 上升级 100% 失败;D3appealType未校验chk_appeal_type;D4 escalated 死胡同;D5processAppeal先读后写并发竞态;D6 三处查询漏软删过滤;D7 硬编码resolved;D8 证据字段契约。 - 新增
AppealPhase18IntegrationTest(15 例),删除假绿AppealServiceTest(9 例);负向验证证明 Gate 守卫有牙;后端 494 tests 全绿;admin-webvue-tscEXITCODE=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首轮执行期间生成