From 0518cda95c15f2e3119cbfe38cec84b6c5bf9062 Mon Sep 17 00:00:00 2001 From: Codex Date: Mon, 14 Sep 2026 10:01:41 +0800 Subject: [PATCH] docs: add phase 04-06 recovery reports, gate outputs and execution plan --- ...1-Recovery-Completion-Report-2026-09-12.md | 56 +++ ...1-Recovery-Completion-Report-2026-09-12.md | 32 ++ ...1-Recovery-Completion-Report-2026-09-12.md | 37 ++ docs/gate-output/admin-build-2026-09-14.txt | 65 ++++ ...in-dashboard-data-contracts-2026-09-14.txt | 1 + .../admin-reference-contracts-2026-09-14.txt | 1 + .../admin-typecheck-2026-09-14.txt | 4 + docs/gate-output/brand-assets-2026-09-14.txt | 1 + .../miniapp-auth-contracts-2026-09-14.txt | 1 + ...miniapp-reference-contracts-2026-09-14.txt | 1 + ...source-uniqueness-contracts-2026-09-14.txt | 1 + ...se03-verification-contracts-2026-09-14.txt | 1 + ...local-eligibility-contracts-2026-09-14.txt | 1 + ...match-eligibility-contracts-2026-09-14.txt | 1 + .../phase07-home-contracts-2026-09-14.txt | 1 + docs/gate-output/tabbar-icons-2026-09-14.txt | 1 + docs/gate-output/ui-contracts-2026-09-14.txt | 1 + ...document-baseline-contracts-2026-09-14.txt | 1 + .../2026-09-14-development-execution-plan.md | 333 ++++++++++++++++++ ...rogress-assessment-and-development-plan.md | 129 +++++++ 20 files changed, 669 insertions(+) create mode 100644 docs/Phase-04-V11-Recovery-Completion-Report-2026-09-12.md create mode 100644 docs/Phase-05-V11-Recovery-Completion-Report-2026-09-12.md create mode 100644 docs/Phase-06-V11-Recovery-Completion-Report-2026-09-12.md create mode 100644 docs/gate-output/admin-build-2026-09-14.txt create mode 100644 docs/gate-output/admin-dashboard-data-contracts-2026-09-14.txt create mode 100644 docs/gate-output/admin-reference-contracts-2026-09-14.txt create mode 100644 docs/gate-output/admin-typecheck-2026-09-14.txt create mode 100644 docs/gate-output/brand-assets-2026-09-14.txt create mode 100644 docs/gate-output/miniapp-auth-contracts-2026-09-14.txt create mode 100644 docs/gate-output/miniapp-reference-contracts-2026-09-14.txt create mode 100644 docs/gate-output/miniapp-source-uniqueness-contracts-2026-09-14.txt create mode 100644 docs/gate-output/phase03-verification-contracts-2026-09-14.txt create mode 100644 docs/gate-output/phase04-local-eligibility-contracts-2026-09-14.txt create mode 100644 docs/gate-output/phase06-match-eligibility-contracts-2026-09-14.txt create mode 100644 docs/gate-output/phase07-home-contracts-2026-09-14.txt create mode 100644 docs/gate-output/tabbar-icons-2026-09-14.txt create mode 100644 docs/gate-output/ui-contracts-2026-09-14.txt create mode 100644 docs/gate-output/ui-document-baseline-contracts-2026-09-14.txt create mode 100644 docs/superpowers/plans/2026-09-14-development-execution-plan.md create mode 100644 docs/superpowers/plans/2026-09-14-progress-assessment-and-development-plan.md diff --git a/docs/Phase-04-V11-Recovery-Completion-Report-2026-09-12.md b/docs/Phase-04-V11-Recovery-Completion-Report-2026-09-12.md new file mode 100644 index 0000000..7557b3d --- /dev/null +++ b/docs/Phase-04-V11-Recovery-Completion-Report-2026-09-12.md @@ -0,0 +1,56 @@ +# Phase 04 V1.1 恢复复验 Completion Report + +日期:2026-09-12 +分支:`codex/ui-v11-fidelity` + +## 结论 + +**Phase 04 COMPLETE / 项目整体继续 NO-GO。** + +Profile、Preference 保持现有兼容行为;本地资格声明、状态、补证、提交及 `/me/status` 已重新核验。Phase 05 及以后未获准开始。 + +## 本阶段修复 + +- 将 U62/U63 从空白 JavaScript 脚手架恢复为真实 API 链路。 +- U62 查询当前用户本地资格状态,覆盖未声明、已声明、待补证、审核中、已核验、未通过。 +- U63 完成本地资格声明、私有材料上传、佐证登记和提交审核。 +- 修正佐证实体 `fileId` 与数据库 `file_key` 的 MyBatis 映射。 +- 后端执行佐证上传开关、数量上限、类型白名单和文件归属校验。 +- 增加佐证保留期配置,默认 365 天;实际清理由运维任务按配置执行。 +- 图片大小上限和允许类型由 FeatureFlag 配置控制。 + +## 权限与数据边界 + +- 用户端 Controller 的 userId 仅取自 `UserPrincipal`,不接受请求体 userId。 +- 佐证文件经认证接口上传到私有存储。 +- 登记佐证前校验文件属于当前用户;其他用户文件被拒绝。 +- 本地资格使用独立的 `user_local_eligibilities`、`local_eligibility_evidences` 表,不写入 `user_identities`。 + +## 自动化与运行验证 + +| 检查 | 结果 | +|---|---| +| `LocalEligibilityServiceTest` | 3/3 通过,0 failure,0 error;BUILD SUCCESS | +| `phase04-local-eligibility-contracts.mjs` | 通过 | +| Backend Docker build | 通过 | +| Flyway | 33 个迁移校验通过,Schema 版本 033 | +| PostgreSQL / Redis / MinIO / Backend | 全部 healthy | +| `/api/v1/health/live` | UP | + +## 门禁核对 + +- [x] 本地资格与实名认证表独立。 +- [x] 非本人不能将他人私有文件登记为佐证。 +- [x] 数量、大小、类型和保留期限配置化。 +- [x] U62/U63 使用真实接口而非占位提示。 +- [x] `/me/status` 返回本地资格状态。 + +## 已知限制 + +- 小程序仍同时保留 `.ts` 与运行时 `.js`;统一 TypeScript 唯一源属于 Phase 07 门禁。 +- 佐证到期清理调度任务尚未实现,本阶段只完成保留期配置;生产启用前需在 Phase 22 运维阶段核验清理作业。 +- 微信开发者工具真机/模拟器视觉验收仍属于后续 UI/UAT 门禁。 + +## 下一阶段 + +Phase 05:统一审核扩展。进入前须由用户明确确认;不得自动进入。 diff --git a/docs/Phase-05-V11-Recovery-Completion-Report-2026-09-12.md b/docs/Phase-05-V11-Recovery-Completion-Report-2026-09-12.md new file mode 100644 index 0000000..d09139c --- /dev/null +++ b/docs/Phase-05-V11-Recovery-Completion-Report-2026-09-12.md @@ -0,0 +1,32 @@ +# Phase 05 V1.1 恢复验收报告 + +日期:2026-09-12 +范围:统一审核扩展(本地资格) + +## 完成项 + +- 继续复用 `review_tasks` / `ReviewService`,未引入第二套审核引擎。 +- Claim 改为单条条件更新 SQL:仅 `pending` 且未删除任务可领取,受影响行数为 0 时返回冲突。 +- 本地资格补件、通过、驳回使用独立接口,并校验任务类型、`processing` 状态及领取人。 +- 审核决定与 `user_local_eligibilities.verification_status` 在同一事务内联动;资格记录不存在时整体回滚。 +- 审核队列和原因选项改为真实数据,不再返回空占位。 +- 审核详情仅返回佐证元数据;原文件访问要求专门权限、填写目的、任务领取人校验及佐证归属校验。 +- 敏感佐证审计新增 `access_target` 和 `access_result`,记录 operator、user、purpose、target、timestamp、result。 +- 管理端按普通资料/本地资格分流操作,增加佐证访问确认及无权限状态。 + +## 验证结果 + +- `ReviewServicePhase05Test`:4/4 通过(原子领取、领取人限制、资格状态联动、佐证审计)。 +- Admin Web `vue-tsc --noEmit`:通过。 +- Admin Web `vite build`:通过(仅保留既有大 chunk 警告)。 +- Docker 后端镜像构建及 Compose 启动:通过。 +- Flyway:迁移至 V035,敏感访问审计字段及实体基础字段生效。 +- `/api/v1/health/live`:UP。 + +## Gate 结论 + +- 两名审核员不能同时 Claim:通过。 +- 补件/通过/驳回与本地资格状态一致:通过。 +- 敏感佐证访问完整审计:通过。 + +Phase 05 完成。按阶段门禁停止,Phase 06 尚未开始。 diff --git a/docs/Phase-06-V11-Recovery-Completion-Report-2026-09-12.md b/docs/Phase-06-V11-Recovery-Completion-Report-2026-09-12.md new file mode 100644 index 0000000..80d48f1 --- /dev/null +++ b/docs/Phase-06-V11-Recovery-Completion-Report-2026-09-12.md @@ -0,0 +1,37 @@ +# Phase 06 V1.1 恢复验收报告 + +日期:2026-09-12 +范围:Match Eligibility 增量(KEEP / EXTEND) + +## 完成项 + +- 保留正式 `RecommendationEngineService` 的双向 Required 算法,未重写既有匹配架构。 +- 推荐入口与缓存命中均重新执行实时 Eligibility,防止 Redis 中的旧结果绕过状态变化。 +- 双向过滤 Block;仅账号正常、关系状态 `searching`、推荐开关开启、资料审核通过且隐私允许的双方可进入推荐。 +- `paused`、`matched_successfully`、关闭推荐及不可见用户均不能进入候选或继续使用缓存结果。 +- 本地资格门禁由 `MATCH_LOCAL_ELIGIBILITY_REQUIRED` 配置;关闭时不强制,开启时仅 `verified` 通过。 +- 修复旧 Eligibility 将 `pending_review` 错判为已核验的问题。 +- 首页聚合改为调用正式推荐引擎,不再返回硬编码空列表。 +- 用户端继续只显示推荐等级和推荐理由,不暴露数字匹配率。 + +## 验证结果 + +- 推荐专项测试:21/21 通过。 +- Phase 06 前后端契约检查:通过。 +- Admin Web TypeScript 检查:通过。 +- Docker 后端镜像构建:通过。 +- PostgreSQL、Redis、MinIO、Backend:全部 Healthy。 +- Flyway:35 个迁移校验通过,数据库保持 V035。 +- `/api/v1/health/live`:UP。 + +## Gate 结论 + +- 双方任一 Required 不满足时永不入选:通过。 +- Block、Paused、Successful、隐私和推荐开关不能被缓存绕过:通过。 +- 前端不显示数字匹配率:通过。 + +## 已知后续项 + +- 推荐评分仍沿用 V1 简化实现,真实画像填充、推荐理由丰富及首页完整状态矩阵在 Phase 07 继续完成。 + +Phase 06 完成。按阶段门禁停止,Phase 07 尚未开始。 diff --git a/docs/gate-output/admin-build-2026-09-14.txt b/docs/gate-output/admin-build-2026-09-14.txt new file mode 100644 index 0000000..3eddc18 --- /dev/null +++ b/docs/gate-output/admin-build-2026-09-14.txt @@ -0,0 +1,65 @@ + +> danyang-match-admin@1.0.0-rc.2 build +> vite build + +vite v5.4.21 building for production... +transforming... +✓ 1728 modules transformed. +rendering chunks... +computing gzip size... +dist/index.html  0.47 kB │ gzip: 0.36 kB +dist/assets/BannerManagementView-Djms3KWD.css  0.09 kB │ gzip: 0.11 kB +dist/assets/ServiceStationView-Cbbmm_Nn.css  0.09 kB │ gzip: 0.10 kB +dist/assets/ServiceAppointmentView-RswBO5G6.css  0.09 kB │ gzip: 0.10 kB +dist/assets/ServiceProgramView-Co06YSF1.css  0.09 kB │ gzip: 0.11 kB +dist/assets/CounselingView-DS0_WW1z.css  0.09 kB │ gzip: 0.11 kB +dist/assets/ReferralManagementView-DuNo3PpK.css  0.09 kB │ gzip: 0.11 kB +dist/assets/ActivityInterestView-DEhJx6FX.css  0.12 kB │ gzip: 0.11 kB +dist/assets/OrganizationView-BZzoCWcI.css  0.14 kB │ gzip: 0.13 kB +dist/assets/OperatorManagementView-BYJDeBSK.css  0.14 kB │ gzip: 0.13 kB +dist/assets/AuditLogView-S_Hqq6I1.css  0.14 kB │ gzip: 0.13 kB +dist/assets/ReportCenterView-DHmBOFIv.css  0.32 kB │ gzip: 0.20 kB +dist/assets/AppealCenterView-DzztoN7Y.css  0.38 kB │ gzip: 0.22 kB +dist/assets/AnalyticsView-Drx-0KGm.css  0.54 kB │ gzip: 0.25 kB +dist/assets/ReviewView-4HuS5WAS.css  0.62 kB │ gzip: 0.30 kB +dist/assets/UserManagementView-DvPwqJE7.css  0.68 kB │ gzip: 0.31 kB +dist/assets/UserDetailView-KAQTfja2.css  1.75 kB │ gzip: 0.59 kB +dist/assets/LoginView-Ct6oQd51.css  2.65 kB │ gzip: 0.86 kB +dist/assets/MainLayout-BsFnDcKW.css  7.66 kB │ gzip: 2.02 kB +dist/assets/DashboardView-0JNoHdDy.css  8.36 kB │ gzip: 1.95 kB +dist/assets/index-SZrX9eGA.css  364.44 kB │ gzip: 49.19 kB +dist/assets/logo-mark-BbdUh5s0.js  0.05 kB │ gzip: 0.07 kB +dist/assets/ReferralManagementView-D7aqs35R.js  1.51 kB │ gzip: 0.88 kB +dist/assets/ActivityInterestView-BKjCsxb0.js  2.61 kB │ gzip: 1.39 kB +dist/assets/LoginView-Dt3s0Q_y.js  2.85 kB │ gzip: 1.67 kB +dist/assets/AuditLogView-Dh6x35ig.js  2.86 kB │ gzip: 1.60 kB +dist/assets/ServiceProgramView-D-swxUkf.js  3.32 kB │ gzip: 1.43 kB +dist/assets/ServiceAppointmentView-lEL9TZvd.js  3.60 kB │ gzip: 1.63 kB +dist/assets/ServiceStationView-Bogu6nJ_.js  3.73 kB │ gzip: 1.56 kB +dist/assets/OrganizationView-Bw6yfuhl.js  4.06 kB │ gzip: 1.75 kB +dist/assets/UserManagementView-0qZwsJ_V.js  4.95 kB │ gzip: 2.39 kB +dist/assets/OperatorManagementView-D8GnD-Ew.js  4.97 kB │ gzip: 2.05 kB +dist/assets/AppealCenterView-revJgkb8.js  5.86 kB │ gzip: 2.48 kB +dist/assets/BannerManagementView-CJdvHBDG.js  5.89 kB │ gzip: 2.35 kB +dist/assets/AnalyticsView-B_Iss0kH.js  5.93 kB │ gzip: 2.29 kB +dist/assets/ReportCenterView-BM3aTG1v.js  6.85 kB │ gzip: 2.79 kB +dist/assets/ContentManagementView-CC3VVm-4.js  6.93 kB │ gzip: 2.23 kB +dist/assets/MainLayout-DVabZj9_.js  7.22 kB │ gzip: 3.30 kB +dist/assets/CounselingView-DVZAIDyX.js  7.27 kB │ gzip: 2.64 kB +dist/assets/UserDetailView-ChvihJh3.js  7.59 kB │ gzip: 3.53 kB +dist/assets/ReviewView-B9CN-Grs.js  9.98 kB │ gzip: 4.01 kB +dist/assets/DashboardView-BKwnIw4O.js  12.25 kB │ gzip: 5.05 kB +dist/assets/index-Fi1XOGJB.js 1,265.54 kB │ gzip: 407.91 kB +npm.cmd :  +At line:15 char:3434 ++ ... ; cd "E:\develop\公益婚恋服务平台\admin-web" ; npm.cmd run build 2>&1 | Tee-O ... ++ ~~~~~~~~~~~~~~~~~~~~~~ + + CategoryInfo : NotSpecified: (:String) [], RemoteException + + FullyQualifiedErrorId : NativeCommandError + +(!) Some chunks are larger than 500 kB after minification. Consider: +- Using dynamic import() to code-split the application +- Use build.rollupOptions.output.manualChunks to improve chunking: https://rollupjs.org/configuration-options/#output-m +anualchunks +- Adjust chunk size limit for this warning via build.chunkSizeWarningLimit. +✓ built in 18.21s diff --git a/docs/gate-output/admin-dashboard-data-contracts-2026-09-14.txt b/docs/gate-output/admin-dashboard-data-contracts-2026-09-14.txt new file mode 100644 index 0000000..6697b9d --- /dev/null +++ b/docs/gate-output/admin-dashboard-data-contracts-2026-09-14.txt @@ -0,0 +1 @@ +Admin dashboard data contracts passed diff --git a/docs/gate-output/admin-reference-contracts-2026-09-14.txt b/docs/gate-output/admin-reference-contracts-2026-09-14.txt new file mode 100644 index 0000000..fb3006b --- /dev/null +++ b/docs/gate-output/admin-reference-contracts-2026-09-14.txt @@ -0,0 +1 @@ +Admin reference contracts passed diff --git a/docs/gate-output/admin-typecheck-2026-09-14.txt b/docs/gate-output/admin-typecheck-2026-09-14.txt new file mode 100644 index 0000000..484fc0b --- /dev/null +++ b/docs/gate-output/admin-typecheck-2026-09-14.txt @@ -0,0 +1,4 @@ + +> danyang-match-admin@1.0.0-rc.2 type-check +> vue-tsc --noEmit + diff --git a/docs/gate-output/brand-assets-2026-09-14.txt b/docs/gate-output/brand-assets-2026-09-14.txt new file mode 100644 index 0000000..6a3bbfc --- /dev/null +++ b/docs/gate-output/brand-assets-2026-09-14.txt @@ -0,0 +1 @@ +Brand asset contracts passed diff --git a/docs/gate-output/miniapp-auth-contracts-2026-09-14.txt b/docs/gate-output/miniapp-auth-contracts-2026-09-14.txt new file mode 100644 index 0000000..3e1ad70 --- /dev/null +++ b/docs/gate-output/miniapp-auth-contracts-2026-09-14.txt @@ -0,0 +1 @@ +Miniapp auth contracts passed diff --git a/docs/gate-output/miniapp-reference-contracts-2026-09-14.txt b/docs/gate-output/miniapp-reference-contracts-2026-09-14.txt new file mode 100644 index 0000000..afed2e4 --- /dev/null +++ b/docs/gate-output/miniapp-reference-contracts-2026-09-14.txt @@ -0,0 +1 @@ +Miniapp reference contracts passed diff --git a/docs/gate-output/miniapp-source-uniqueness-contracts-2026-09-14.txt b/docs/gate-output/miniapp-source-uniqueness-contracts-2026-09-14.txt new file mode 100644 index 0000000..c1edd21 --- /dev/null +++ b/docs/gate-output/miniapp-source-uniqueness-contracts-2026-09-14.txt @@ -0,0 +1 @@ +Miniapp page source uniqueness contracts passed diff --git a/docs/gate-output/phase03-verification-contracts-2026-09-14.txt b/docs/gate-output/phase03-verification-contracts-2026-09-14.txt new file mode 100644 index 0000000..b4c825e --- /dev/null +++ b/docs/gate-output/phase03-verification-contracts-2026-09-14.txt @@ -0,0 +1 @@ +Phase 03 verification contracts passed diff --git a/docs/gate-output/phase04-local-eligibility-contracts-2026-09-14.txt b/docs/gate-output/phase04-local-eligibility-contracts-2026-09-14.txt new file mode 100644 index 0000000..bcd7b49 --- /dev/null +++ b/docs/gate-output/phase04-local-eligibility-contracts-2026-09-14.txt @@ -0,0 +1 @@ +Phase 04 local eligibility contracts passed diff --git a/docs/gate-output/phase06-match-eligibility-contracts-2026-09-14.txt b/docs/gate-output/phase06-match-eligibility-contracts-2026-09-14.txt new file mode 100644 index 0000000..d8468bb --- /dev/null +++ b/docs/gate-output/phase06-match-eligibility-contracts-2026-09-14.txt @@ -0,0 +1 @@ +Phase 06 match eligibility contracts passed diff --git a/docs/gate-output/phase07-home-contracts-2026-09-14.txt b/docs/gate-output/phase07-home-contracts-2026-09-14.txt new file mode 100644 index 0000000..a1ea116 --- /dev/null +++ b/docs/gate-output/phase07-home-contracts-2026-09-14.txt @@ -0,0 +1 @@ +Phase 07 home contracts passed diff --git a/docs/gate-output/tabbar-icons-2026-09-14.txt b/docs/gate-output/tabbar-icons-2026-09-14.txt new file mode 100644 index 0000000..076297f --- /dev/null +++ b/docs/gate-output/tabbar-icons-2026-09-14.txt @@ -0,0 +1 @@ +Tabbar icon contracts passed diff --git a/docs/gate-output/ui-contracts-2026-09-14.txt b/docs/gate-output/ui-contracts-2026-09-14.txt new file mode 100644 index 0000000..d747045 --- /dev/null +++ b/docs/gate-output/ui-contracts-2026-09-14.txt @@ -0,0 +1 @@ +UI contracts passed diff --git a/docs/gate-output/ui-document-baseline-contracts-2026-09-14.txt b/docs/gate-output/ui-document-baseline-contracts-2026-09-14.txt new file mode 100644 index 0000000..6d769a5 --- /dev/null +++ b/docs/gate-output/ui-document-baseline-contracts-2026-09-14.txt @@ -0,0 +1 @@ +UI document baseline contracts passed diff --git a/docs/superpowers/plans/2026-09-14-development-execution-plan.md b/docs/superpowers/plans/2026-09-14-development-execution-plan.md new file mode 100644 index 0000000..6f6cdd4 --- /dev/null +++ b/docs/superpowers/plans/2026-09-14-development-execution-plan.md @@ -0,0 +1,333 @@ +# 善缘丹阳 V1.1 开发执行计划 + +**日期**: 2026-09-14 +**分支**: `codex/ui-v11-fidelity` +**性质**: 当前进度评估 + 可直接执行的开发计划(替代并细化同日进度评估文档,不与既有 Phase 计划冲突) + +--- + +## 一、当前进度评估(代码实际 vs 文档声明) + +### 1.1 文档优先级基线(最近修改优先) + +| # | 文件 | 修改时间 | 作用 | +|---|------|---------|------| +| 1 | `superpowers/specs/2026-09-13-reference-driven-dual-client-ui-redesign-design.md` | 9/13 20:02 | **唯一 UI 视觉验收基线**(用户已确认) | +| 2 | `superpowers/plans/2026-09-13-reference-driven-dual-client-ui-redesign.md` | 9/13 20:06 | **UI 重设计唯一总计划**(清理→管理端→小程序→终验) | +| 3 | `善缘丹阳 V1.1 客户需求基线增量开发与修复计划.md` | 9/13 20:18 | **业务 Phase 唯一执行计划** | +| 4 | `UI_CLEANUP_REPORT_2026-09-13.md` | 9/13 21:26 | UI 旧代码/冲突文档治理结论 | +| 5 | `ADMIN_REFERENCE_UI_QA_2026-09-13.md` | 9/13 22:06 | 管理端参考图 UI 验收记录 | +| 6 | `STATUS.md` | 9/13 20:17 | 当前有效状态台账 | + +**核心约束**:两张参考图是唯一视觉来源;内置业务不变量(免费、Required 不放宽、Mutual 后聊天、Block 最高优先、活动互选双确认、Counselor 仅 Assigned、ContentEditor 零用户数据、服务站不可浏览全库、前端入口由服务端 Capability 决定);管理端第一批 = 全局框架 + 工作台;小程序第一批 = 11 个核心页。 + +### 1.2 Git 提交历史(2026-09-13 清理后) + +``` +1aea6f7 feat: redesign public relationship services ← 红娘/咨询/婚前(小程序 B 组最后一页) +a6037de feat: redesign activity and profile tabs ← 活动/我的(小程序 A 组) +b7dc52b feat: redesign discovery and messages tabs ← 找对象/消息(小程序 A 组) +36b15d9 feat: rebuild miniapp reference home ← 首页(小程序 A 组) +df47543 feat: add miniapp reference assets and primitives ← 小程序公共设计令牌/组件 +311f251 test: lock miniapp reference page scope +8b8972a test: verify admin reference UI fidelity ← 管理端参考图 QA +72b0758 feat: recreate admin dashboard from reference ← 管理端工作台 +fbafe69 feat: add admin dashboard data adapter ← 管理端数据适配层 +9279359 feat: rebuild admin shell from reference ← 管理端壳层 +ad9d32f feat: establish admin reference design foundation ← 管理端设计基础 +3a634b4 docs: finalize UI cleanup report +097c4c4 chore: finalize miniapp page source cleanup +61ca737 docs: record UI cleanup checkpoint +eed4400 refactor: remove duplicate miniapp page sources +c66e42d docs: retire conflicting UI baselines +1deda1e chore: inventory obsolete UI files +``` + +### 1.3 代码实际进度 vs 文档声明偏差表 + +| 维度 | 代码实际状态 | 文档/计划声明 | 偏差 | +|------|------------|--------------|------| +| **Git 未提交改动** | **56 个**(M)+ 未跟踪(??)详见下 | 计划 checkbox 全未勾 | **代码超前于计划** | +| **Flyway 迁移** | **V035**(V028~V035 含服务站范围/权限补齐/软删/审计对齐) | STATUS 记录 V001~V027 | **文档滞后 8 个迁移** | +| **CapabilityService** | **不存在独立类**,禁用逻辑内嵌 HomeApplicationService L324 | 进度校正计划要求"新建独立 Service" | **业务架构债务未清** | +| **管理端壳层+工作台** | ✅ 已提交并通过参考图 QA(ADMIN_REFERENCE_UI_QA) | 总计划 Task 2 未勾 | **需同步勾选** | +| **小程序 A 组(5 个 Tab 页)** | ✅ 已提交 | 总计划 Task 3 未勾 | **需同步勾选** | +| **小程序 B 组(6 个服务页)** | ✅ 已提交(红娘/咨询/婚前) | 总计划 Task 3 未勾 | **需同步勾选** | +| **小程序 C 组(课堂/反诈/服务站)** | ⚠️ **未提交 + 仍是 `.js` + WXML 仅 18~20 行(脚手架级别)** | 总计划 Task 3 未勾 | **核心缺口** | +| **后端 HomeApplicationService** | ⚠️ 有未提交改动(HomeDTO 也在 M 列表) | Phase 07 报告声明已完成 | **在途改动需确认** | +| **后端全量回归** | 277 tests → 4 failures、8 errors、3 skips | Phase 报告大量"✅ 通过" | **可信度债务** | +| **admin-web 业务 Vue** | ✅ 19 个模块 Vue 存在(含 banner/content/service-station/counseling 等) | 计划只提了壳层+工作台 | **代码超前** | +| **小程序 TS/JS 双轨** | C 组仍是 `.js`(anti-fraud/content/service-station) | 清理报告称"双源已清零" | **C 组未纳入清理** | + +### 1.4 未提交改动详细分布 + +**已修改(M)** — 56 项: +- **后端核心**:HomeDTO、HomeApplicationService、LocalEligibilityService、MatchEligibilityService、RecommendationEngineService、RelationshipService、ReviewService/Controller/Mapper/DTO、SensitiveAccessLog、PhotoService、FeatureFlagConfig、application-docker.yml +- **管理端**:ReviewView.vue +- **小程序 C 组**:anti-fraud(.js/.json/.wxml/.wxss)、content(.js/.json/.wxml/.wxss)、service-station(.js/.json/.wxml/.wxss) +- **小程序公共**:env.js、env.ts、default-avatar.png、local-eligibility(.wxml)、local-eligibility-supplement(.wxml) +- **基础设施**:docker-compose.yml、nginx.conf、project.config.json +- **UI 契约**:miniapp-reference-contracts.mjs + +**未跟踪(??)**: +- 参考图 2 张、UI 重设计小程序截图(artifacts/ui-redesign/miniapp/) +- Flyway V034/V035 迁移 +- 4 份 Recovery Completion Report(Phase-04~06 已交付文档未落提交) +- UI 测试:phase06-match-eligibility-contracts.mjs +- 测试类:RecommendationEligibilityPhase06Test、RelationshipBlockPriorityPhase08Test、ReviewServicePhase05Test、local_eligibility 测试目录 +- 评估计划本文档 + +### 1.5 综合进度结论 + +``` +业务闭环(可验收): ████████████████░░░░░░░░░░░░░░ ~40%~50% +UI 重设计(首批 11+1): ████████████████░░░░░░░░░░ ~75%(缺 C 组) +后端 Phase 01~07 Recovery: ██████████████████████░░ ~95%(回归非全绿) +后端 Phase 08~26: ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ⏸ 暂停 +文档与代码口径一致度: ██████░░░░░░░░░░░░░░░░░░░░░░ ~30%(严重滞后) +自动化测试可信度: ███░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ~15% +``` + +**整体 NO-GO**。核心矛盾:**代码超前、文档滞后、存在大量未提交在途改动,C 组小程序页面仅为脚手架**。 + +--- + +## 二、开发计划 + +### 计划原则 + +1. **先收口再推进**:必须先把 56 个未提交改动和 C 组脚手架收口,否则任何验收都是空中楼阁。 +2. **用户验收门禁**:每个阶段完成后输出证据、等待人工确认,不自动进入下一阶段。 +3. **真实后端联调**:UI 验收必须对接真实 API,不使用虚构数据。 +4. **防偏航**:所有视觉实现必须对照两张参考图,以 ADMIN_REFERENCE_UI_QA 的验收标准执行。 + +--- + +### 阶段 0:在途工作收口(最高优先 — 预计 1~2 天) + +#### 目标 +消除 Git 工作区的不确定性,建立代码与文档的一致基线。 + +#### 任务清单 + +| # | 任务 | 产物 | 依赖 | +|---|------|------|------| +| 0.1 | **运行现有门禁,记录真实输出** | 门禁输出日志 | 无 | +| 0.1.1 | `backend` 全量测试,记录 failures/errors/skips | `docs/gate-output/backend-tests-2026-09-14.txt` | Docker 或 JDK 环境 | +| 0.1.2 | `admin-web` type-check + build | `docs/gate-output/admin-typecheck-2026-09-14.txt`、`admin-build-2026-09-14.txt` | Node.js + pnpm | +| 0.1.3 | `miniapp` type-check | `docs/gate-output/miniapp-typecheck-2026-09-14.txt` | Node.js + tsc | +| 0.1.4 | 运行全部 `ui-tests/*.mjs` 契约测试 | 各测试输出文件 | Node.js | +| 0.2 | **分类 56 个未提交改动** | 分类清单 | 0.1 | +| 0.2.1 | 确认 C 组(anti-fraud/content/service-station)的 `.js` 是脚手架还是有实质内容 | 分类:可删/需改/保留 | — | +| 0.2.2 | 确认 HomeApplicationService/HomeDTO 未提交改动的性质(UI 适配?业务修复?Capability 内嵌?) | 分类:合并/回退 | — | +| 0.2.3 | 确认 V034/V035 迁移和 4 份测试类是否应该纳入版本控制 | 分类:commit/忽略 | — | +| 0.2.4 | 确认 docker-compose.yml/nginx.conf/project.config.json 改动是否为本地配置还是应该共享 | 分类:commit/.gitignore | — | +| 0.3 | **分批提交在途改动** | Git 提交记录 | 0.2 | +| 0.3.1 | 提交文档类:4 份 Recovery Completion Report + 评估计划 + phase06 契约 | 独立 commit | — | +| 0.3.2 | 提交后端类:V034/V035 迁移 + 测试类 + FeatureFlagConfig/PhotoService/Review 相关改动 | 独立 commit | 需后端编译通过 | +| 0.3.3 | 提交 Home 类:HomeDTO + HomeApplicationService(确认无冲突后) | 独立 commit | 需 0.2.2 结论 | +| 0.3.4 | 提交 admin-web:ReviewView.vue | 独立 commit | — | +| 0.3.5 | 提交 miniapp 公共:env.{ts,js} + default-avatar + local-eligibility WXML | 独立 commit | — | +| 0.4 | **更新文档基线** | STATUS.md、JIRA_BACKLOG.md | 0.3 | +| 0.4.1 | 在 STATUS.md 记录 V028~V035 迁移内容 | — | 0.3.2 | +| 0.4.2 | 在 STATUS.md 标记管理端壳层+工作台、小程序 A/B 组已提交 | — | 0.3 全部完成 | +| 0.4.3 | 在 JIRA_BACKLOG.md 同步 checkbox | — | 0.3 全部完成 | +| 0.5 | **Git 工作区清零** | `git status` 无 M / 必要 ?? 已 commit 或 .gitignore | 0.3 全部完成 | + +#### 退出门禁 +- [ ] `git status --short` 输出 0 行或仅有预期 ??(如 IDE 配置) +- [ ] backend tests 输出已真实记录(不管通过与否) +- [ ] admin type-check + build 输出已真实记录 +- [ ] miniapp type-check 输出已真实记录 +- [ ] 所有计划文档 checkbox 与 Git 提交记录一致 +- [ ] **用户确认收口完成** + +--- + +### 阶段 1:小程序 C 组重设计 + TypeScript 化(预计 2~3 天) + +#### 目标 +完成 UI 重设计规格要求的最后 3 个核心页面,消除 TS/JS 双轨。 + +#### 任务清单 + +| # | 任务 | 说明 | 依赖 | +|---|------|------|------| +| 1.1 | **将 anti-fraud 迁移为 TypeScript 唯一源** | 当前 `.js` + 18 行 WXML 脚手架,需按参考图重设计,提供防骗文章列表 + 详情入口 | 阶段 0 | +| 1.2 | **将 content(婚恋课堂)迁移为 TypeScript 唯一源** | 当前 `.js` + 18 行 WXML 脚手架,需按参考图重设计,提供课堂文章列表 + 详情 + 分类筛选 | 阶段 0 | +| 1.3 | **将 service-station 迁移为 TypeScript 唯一源** | 当前 `.js` + 20 行 WXML 脚手架,需按参考图重设计,展示服务站地址/时间/预约入口 | 阶段 0 | +| 1.4 | **对齐设计令牌与已完成页面** | 复用 `home.css` 中的品牌 Token、按钮、卡片、空状态、错误状态样式 | 1.1~1.3 | +| 1.5 | **接入真实后端 API** | 内容列表→`GET /api/v1/content/articles`;服务站→`GET /api/v1/service-locations`;反诈→复用内容 API 过滤 category | 后端 Home 已完成 | +| 1.6 | **运行门禁** | `node ui-tests/miniapp-reference-contracts.mjs` + `tsc --noEmit` + 微信开发者工具编译 | 1.1~1.5 | +| 1.7 | **截图比对 + 提交** | 3 页面截图 → `artifacts/ui-redesign/miniapp/` → 独立 commit | 1.6 通过 | + +#### 退出门禁 +- [ ] anti-fraud / content / service-station 均为 `.ts` 唯一源(无同名 `.js`) +- [ ] 3 页面均能在微信开发者工具中编译通过 +- [ ] 真实 API 数据可加载(空数据时有 Skeleton/空状态降级) +- [ ] 设计 Token 一致(颜色、卡片圆角、间距、按钮样式) +- [ ] 截图与参考图视觉对齐(ADMIN_REFERENCE_UI_QA 同等级验收) +- [ ] **用户确认 C 组完成** + +--- + +### 阶段 2:管理端业务 Vue 新框架适配(预计 2 天) + +#### 目标 +将已存在的 19 个 admin-web 业务 Vue 迁移到参考图驱动的新壳层框架中,不逐页重绘视觉,但保证路由/权限/布局可用。 + +#### 说明 +管理端第一批只重绘全局壳层和工作台(已完成并通过 QA),其余业务页面按规格"不进行逐页高保真重构,但必须继续在新框架中可用,且不得破坏路由、权限和操作流程"。 + +#### 任务清单 + +| # | 任务 | 说明 | 依赖 | +|---|------|------|------| +| 2.1 | **验证现有 19 个业务 Vue 在新壳层下可用** | 逐个打开 banner/content/service-station/appointment/program/counseling/referral/analytics/review/risk/user 等路由 | 阶段 0 | +| 2.2 | **修复路由问题** | 如有路由跳转/404/侧栏菜单不匹配,修复 router/index.ts | 2.1 | +| 2.3 | **修复权限问题** | 确保七类后台角色只看到自己的工作,无越权菜单跳转/URL 访问 | 2.1 | +| 2.4 | **修复布局问题** | 业务页面在新深色侧栏 + 白色壳层下溢出/截断/对齐问题 | 2.1 | +| 2.5 | **运行门禁** | `admin-reference-contracts.mjs` + `admin-dashboard-data-contracts.mjs` + type-check + build | 2.1~2.4 | +| 2.6 | **提交** | 独立 commit | 2.5 通过 | + +#### 退出门禁 +- [ ] 19 个业务模块路由均可访问 +- [ ] 七类角色权限隔离正确(正向 200 / 负向 403/404) +- [ ] type-check + build 零错误 +- [ ] 控制台无 error/warning +- [ ] **用户确认管理端框架适配完成** + +--- + +### 阶段 3:CapabilityService 独立化 + 文档基线治理(可与阶段 1/2 并行,预计 1 天) + +#### 目标 +消除业务架构债务和文档滞后,为 Phase 08+ 恢复打好基础。 + +#### 任务清单 + +| # | 任务 | 说明 | 依赖 | +|---|------|------|------| +| 3.1 | **抽出独立 CapabilityService** | 从 HomeApplicationService 中抽取禁用原因逻辑(当前 L324 `setDisabledReason`),形成独立 `com.danyang.match.platform.capability.CapabilityService`,Home 只聚合不复制规则 | 阶段 0 的 Home 未提交改动分类 | +| 3.2 | **V028~V035 迁移文档登记** | 在 `docs/database/MIGRATION_GUIDE.md`、`docs/database/TABLE_INVENTORY.md`、`善缘丹阳 V1.1 数据库与API增量设计.md` 补充 V028~V035 内容 | 阶段 0 | +| 3.3 | **backend 测试债务登记** | 对 4 failures / 8 errors / 3 skips 逐项登记责任人/原因/修复计划,挂 `Phase 08+` 待办 | 阶段 0 的测试输出 | +| 3.4 | **提交** | CapabilityService 独立 commit;文档更新独立 commit | 3.1~3.3 | + +#### 退出门禁 +- [ ] CapabilityService 独立类存在且 HomeApplicationService 改为调用而非内嵌 +- [ ] 禁用原因来自 `CapabilityService.getEntryStatus(userId, entryCode)` 而非直接 if/else +- [ ] V028~V035 在迁移指南中有完整记录 +- [ ] **用户确认架构与文档基线对齐** + +--- + +### 阶段 4:双端总验收(预计 1~2 天) + +#### 目标 +对应 UI 重设计规格 Stage 6:交付唯一视觉基线。 + +#### 任务清单 + +| # | 任务 | 说明 | 依赖 | +|---|------|------|------| +| 4.1 | **运行全部契约测试** | 7 个 mjs 测试全部退出码 0 | 阶段 1~3 全部完成 | +| 4.2 | **运行双端构建检查** | admin type-check + build;miniapp tsc + 开发者工具编译 | 阶段 1~3 全部完成 | +| 4.3 | **管理端双分辨率截图验收** | 1366×768 + 1920×1080 截图对比参考图 | 阶段 2 | +| 4.4 | **小程序 11 页逐页截图验收** | 11 张截图 + 参考图对比 | 阶段 1 | +| 4.5 | **业务不变量回归** | 手动验证:Required 不放宽、Mutual 后才聊天、Block 后不可见、活动互选二阶段、入口由 Capability 控制 | Phase 01~07 业务逻辑 | +| 4.6 | **文档同步** | STATUS.md / JIRA_BACKLOG.md / 三份计划 checkbox 全部与 Git 记录一致 | 阶段 0 | +| 4.7 | **Git Tag + Completion Report** | 打 `ui-v11-fidelity` tag,输出 UI 重设计总 Completion Report | 4.1~4.6 | + +#### 退出门禁 +- [ ] 7 个契约测试 + 双端构建 + 编译全部通过 +- [ ] 截图验收无 P0/P1 缺陷 +- [ ] 业务不变量无回归 +- [ ] 文档与代码 100% 一致 +- [ ] **用户完成最终截图验收并签批** + +--- + +### 阶段 5:后端业务恢复 — Phase 08~26(UI 验收后执行,每 Phase 单独报告) + +> **不早于阶段 4 完成并签批**。Phase 顺序严格按 `善缘丹阳 V1.1 客户需求基线增量开发与修复计划.md` 执行,每 Phase 输出 Completion Report 并暂停。 + +| Phase | 名称 | 类型 | 核心任务 | +|-------|------|------|---------| +| 08 | Like / Match / Block | KEEP-VERIFY/EXTEND | 验证全链路 + Activity Match 兼容 + Block 全链路 | +| 09 | Text Chat | KEEP-VERIFY/EXTEND | REST+WS、幂等、活动 Conversation 复用 | +| 10 | Image & Chat Safety | KEEP-VERIFY | 风险关键词 + 限流 + 首次安全提示 | +| 11 | Notification 事务后发送 | KEEP-VERIFY | 6 种新类型通知 + 审核通知 | +| 12 | Relationship 轻量扩展 | KEEP-VERIFY | 服务建议规则 | +| 13 | 红娘转介 | KEEP-VERIFY | 咨询/活动/服务站转介 + 二阶段确认 | +| 13A | 咨询权限与状态机 | KEEP-VERIFY | INV-012 + 状态流转 | +| 14 | 多类型公益活动 | KEEP-VERIFY | 6 个新字段 + 多组织 + 容量分组 | +| 15 | 活动签到 | KEEP-VERIFY | 扫码/手动签到 | +| 16 | 活动互选二阶段确认事务 | REFACTOR | INV-014/015 双方确认后才建 Match | +| 17 | 风控 | KEEP-VERIFY | 扩展 risk 来源 | +| 18 | 申诉 | KEEP-VERIFY | appeal 模块 | +| 19 | 统一运营后台 | KEEP-VERIFY/EXTEND | Banner + Content + Program 管理 | +| 20 | Analytics 真实口径 | KEEP-VERIFY | 11 项统计指标 | +| 21 | Account Lifecycle | KEEP-VERIFY | 注销时级联取消 | +| 22 | Deployment/Ops | KEEP-VERIFY | Feature Flags + 配置 | +| 23 | 可信系统测试重建 | REFACTOR | 清除空 pass,实现 INV-001~020 真实测试 | +| 24 | UAT | ADD | 分角色闭环 + 线下链路 | +| 25 | RC 内容填充 | ADD | 运营提供真实素材 | +| 26 | Production 初始化 | ADD | 生产迁移 + Smoke | + +--- + +### 阶段 6:发布前序(UAT → RC → Production) + +- UAT:分角色(群众/红娘/Counselor/ContentEditor/ServiceStationOperator/Manager)闭环验收 +- RC:真实内容填充 + 安全/隐私/无障碍/弱网复检 + Go/No-Go 清单 +- Production:备份/恢复演练 + V027~V035 向前迁移 + Smoke + 回滚手册 + +--- + +## 三、风险与对策 + +| # | 风险 | 影响 | 对策 | +|---|------|------|------| +| R1 | 56 个未提交改动分类不清导致提交后回滚 | 延误阶段 0 | 每类改动单独 commit,在途改动分类记录在 `docs/gate-output/` 下 | +| R2 | C 组 `.js` 脚手架内容过少,需要从零构建 | 阶段 1 耗时超预期 | 按参考图风格快速搭建骨架,先保证视觉 + 空状态,再接真实 API | +| R3 | CapabilityService 独立化引入回归 | 首页入口行为变化 | 独立 commit + 单元测试 + 契约测试,不与 UI 改动混在一起 | +| R4 | 后端 277 tests 的 4 failures/8 errors/3 skips 阻塞 | 阶段 0 无法输出干净结果 | 登记为"已知债务",阶段 0 只要求记录,阶段 5 Phase 23 统一清零 | +| R5 | 管理端业务 Vue 在新壳层下布局错乱 | 阶段 2 阻塞 | 按"路由→权限→布局"顺序逐项验证,有问题先修复再推进 | +| R6 | 真实后端联调环境不可用(Docker Desktop 问题) | 无法验证 API 数据 | 优先启动本地 backend,或用 Seed 数据 + Mock 降级 | +| R7 | 参考图驱动但缺少明确像素级规格 | 验收主观性 | 按 ADMIN_REFERENCE_UI_QA 的验收标准(P0/P1/P2/P3)执行,有争议处优先参考图 | + +--- + +## 四、执行方式建议 + +本文档可直接加载执行。建议: +1. 从阶段 0 开始,严格按任务编号顺序执行。 +2. 每个阶段完成后暂停,展示证据,等待用户签批后再进入下一阶段。 +3. 如需并行阶段 3(CapabilityService)与阶段 1(小程序 C 组),建议 CapabilityService 改动独立 commit 不与 UI commit 混合。 +4. 所有 Git commit message 遵循 `feat:` / `fix:` / `docs:` / `test:` / `refactor:` / `chore:` 前缀规范。 + +--- + +## 五、当前立即行动项 + +如果现在开始执行,第一步是: + +```powershell +# 1. 创建 gate-output 目录 +mkdir docs/gate-output + +# 2. 跑后端全量测试(如果有 JDK/Maven) +cd backend ; ./mvnw test 2>&1 | Tee-Object ../docs/gate-output/backend-tests-2026-09-14.txt + +# 3. 跑管理端检查 +cd admin-web ; npm run type-check 2>&1 | Tee-Object ../docs/gate-output/admin-typecheck-2026-09-14.txt +cd admin-web ; npm run build 2>&1 | Tee-Object ../docs/gate-output/admin-build-2026-09-14.txt + +# 4. 跑小程序类型检查 +cd miniapp ; npx tsc --noEmit 2>&1 | Tee-Object ../docs/gate-output/miniapp-typecheck-2026-09-14.txt + +# 5. 跑全部契约测试 +foreach ($f in Get-ChildItem ui-tests/*.mjs) { node $f.FullName 2>&1 | Tee-Object "docs/gate-output/$($f.Name -replace '\.mjs$','-2026-09-14.txt)" } +``` + +然后按任务 0.2 分类 56 个未提交改动,逐步推进。 diff --git a/docs/superpowers/plans/2026-09-14-progress-assessment-and-development-plan.md b/docs/superpowers/plans/2026-09-14-progress-assessment-and-development-plan.md new file mode 100644 index 0000000..f173be1 --- /dev/null +++ b/docs/superpowers/plans/2026-09-14-progress-assessment-and-development-plan.md @@ -0,0 +1,129 @@ +# 善缘丹阳 V1.1 当前进度评估与开发计划 + +日期:2026-09-14 +分支:`codex/ui-v11-fidelity` +性质:进度评估 + 近期可执行开发计划(规划文档,不替代既有正式 Phase 计划) + +> 本文按用户要求编写:以 `docs/` 下最近修改的文件为最高优先级理解需求,结合只读代码核验评估当前真实进度,并生成下一步开发计划。本文不声称任何"已完成"为视觉验收结论;所有状态以 2026-09-13 参考图驱动 UI 重设计规格、客户需求基线增量开发与修复计划为唯一执行依据。 + +--- + +## 一、需求理解(按最近修改优先) + +`docs/` 下最近修改(2026-09-13)并构成当前唯一有效基线的是以下文件,其优先级自上而下: + +| 优先级 | 文件 | 作用 | +|---|---|---| +| 1 | `docs/superpowers/specs/2026-09-13-reference-driven-dual-client-ui-redesign-design.md` | 当前唯一 UI 视觉/组件/响应式/前端验收基线(用户已确认) | +| 2 | `docs/superpowers/plans/2026-09-13-reference-driven-dual-client-ui-redesign.md` | UI 重设计唯一总计划(清理→管理端→小程序→终验) | +| 3 | `docs/善缘丹阳 V1.1 客户需求基线增量开发与修复计划.md` | V1.1 业务唯一开发执行计划 | +| 4 | `docs/UI_CLEANUP_REPORT/INVENTORY_2026-09-13.md` | UI 旧代码与冲突文档治理结论 | +| 5 | `docs/ADMIN_REFERENCE_UI_QA_2026-09-13.md` | 管理端参考图 UI 验收结论 | +| 6 | `docs/STATUS.md` | 当前有效状态台账 | + +核心约束(不可越过): +- 两张参考图是**唯一视觉来源**;旧小程序暖白首页、浅色管理侧栏、通用 Element Plus 后台、旧 Phase 07 视觉验收结论、全量 63/64 页一次性重构全部不得覆盖本规格。 +- 内置业务不变量(用户免费、Required 不放宽、Mutual 后聊天、Block 最高优先、活动互选双确认、Counselor 仅 Assigned、ContentEditor 零用户数据、服务站不可浏览全库、前端入口由服务端 Capability 决定)。 +- 管理端第一批 = 全局框架 + 工作台;小程序第一批 = 11 个核心页(首页/找对象/消息/活动/我的/红娘/咨询/婚前/课堂/反诈/服务站),首页固定 8 入口两行四列。 +- 视觉重构不改后端/数据库/API,不打破权限与业务闭环;不使用虚构数据冒充接口成功。 + +--- + +## 二、当前进度评估(只读核验后) + +### 2.1 需求文档层的真实状态 + +- **UI 清理治理已完成**:删除 11 个冲突文档、13 个旧视觉产物、2 个旧测试、13 个页面重复源;唯一视觉事实源收敛到 2026-09-13 规格;`AGENTS.md`/`STATUS.md`/`JIRA_BACKLOG.md` 已按新基线修订。 +- **管理端框架与工作台已实施并通过参考图 QA**(`ADMIN_REFERENCE_UI_QA`):两档分辨率截图齐全,无 P0/P1/P2 阻断;真实后端联调本轮未重复验证。 +- **小程序 11 页代码已按参考图重构到 B 组**(提交历史:home → discovery/messages → activity/mine → public relationship services),C 组(课堂/反诈/服务站)在途未提交。 + +### 2.2 代码库核验与文档口径的偏差(关键发现) + +| # | 发现 | 说明 | +|---|---|---| +| 1 | **代码实际超前于计划 checkbox** | Git 已提交管理端壳层/工作台、小程序 A/B 组重建;但 4 份计划文档 checkbox 全部为 `[ ]` 未勾。治理状态与代码不一致。 | +| 2 | **工作区有 55 个未提交改动** | 覆盖 backend/admin-web/infrastructure/miniapp(含小程序 C 组 content/anti-fraud/service-station 共 12 个文件)。存在"未落提交"的在途工作。 | +| 3 | **Flyway 迁移实际到 V035** | 文档/STATUS 声明 V001~V027;实际存在 V028~V035(服务站操作员范围、权限补齐、operator 软删、审计/消息/敏感访问字段对齐)。**文档基线过陈旧。** | +| 4 | **CapabilityService 未作为独立服务存在** | Phase-07 报告称"Capability 按账户返回 Disabled 原因",但 `rg` 未检出独立 `capability/` 模块或 `CapabilityService` 类;能力逻辑疑似内嵌在 `HomeApplicationService`。与进度校正计划的"新建独立 CapabilityService"REFACTOR 项不符。 | +| 5 | **小程序 C 组仍为 `.js`** | content/anti-fraud/service-station 以 `.js` 存在且有未提交改动,与"TypeScript 为唯一手写源"要求可能冲突;TS/JS 双轨未完全清零。 | +| 6 | **管理端业务 Vue 均在 `src/modules/`** | Banner/Content/ServiceStation/Appointment/Program/Counseling/Referral/Analytics/Review/Risk/User 等 19 个 Vue 存在;只读探查曾只看 `src/views/` 误报缺失——**业务组件齐全**。 | + +### 2.3 后端业务进度(KEEP,未在本轮范围外推进) + +- Phase 01~07 已出具 Recovery Completion Report;HomeApplicationService/本地资格/咨询/内容/专项/预约/活动互选模块源码存在。 +- 后端全量回归非全绿:277 tests → 4 failures、8 errors、3 skips(登记为既有跨阶段债务)。 +- Phase 08 及以后(Like/Match/Block、Chat、Relationship、红娘转介、多类型活动、互选事务、风控、申诉、Analytics、Lifecycle、Deployment)仍**暂停**。 + +### 2.4 综合结论 + +- 可验证完成度维持官方口径约 35%;综合开发资产约 45%~55%(数据来自既有计划,非本次新估算)。 +- 当前**活跃工作流 = UI 重设计**(管理端框架/工作台 + 小程序 11 页),总体处于 **Stage 3~5 之间且代码超前、文档滞后、存在未提交在途改动**。 +- **整体仍 NO-GO**(UAT/RC/Production)。 + +--- + +## 三、开发计划 + +### 目标 +在已有代码超前的现实上,把"未提交工作"收口为可验收基线,同步治理文档与代码口径,补齐缺失项,再按既定门禁推进管理端/小程序终验与后端业务收口。 + +### 阶段 0 — 在途工作收口(本轮优先) +- [ ] 运行现有门禁命令,记录原始输出(backend test、admin type-check+build、miniapp type-check、UI 合同测试、dashboard 数据合同测试)。 +- [ ] 评估 55 个未提交文件与被清理的旧实现是否冲突;对仍在 `docs`/设计基线外的改动回退或分类。 +- [ ] 将确认无误的在途改动以独立 commit 提交,作为可恢复检查点(保留 Git 可追溯)。 +- 退出门禁:双端检查通过退化为可记录的真实结果;无未提交的存量改动悬空。 + +### 阶段 1 — 小程序第一批收口 +- [ ] 将 content / anti-fraud / service-station 迁移为唯一 TypeScript 源,清理剩余 TS/JS 双轨。 +- [ ] 运行 `miniapp-reference-contracts.mjs`、`phase03/04/06/07` 合同测试、`type-check`、微信开发者工具编译;修复 WXML/WXSS/组件路径/页面注册错误。 +- [ ] 补齐 11 页逐页截图与参考图对比;按 QA 报告格式登记每一页 C 组结论。 +- 退出门禁:11 页均接入 reference 主题、5 项 Tab 与 8 入口顺序正确、控制台无编译错误。 + +### 阶段 2 — 管理端终验 +- [ ] 复跑 `admin-reference-contracts.mjs` + `admin-dashboard-data-contracts.mjs` + type-check + build。 +- [ ] `1366×768` 与 `1920×1080` 截图人工比对;侧栏/顶部栏/搜索/通知/管理员菜单/退出登录/待办跳转/重试交互验证。 +- [ ] 权限与路由回归:七类后台角色只看到自己的工作,无越权菜单跳转/URL 访问。 +- 退出门禁:管理端框架+工作台通过人工视觉验收,路由权限无回归。 + +### 阶段 3 — 双端总验收(对应 Spec Stage 6) +- [ ] 运行 7 个合同测试、管理端检查/构建、小程序类型检查、Docker 检查与受影响后端测试,全部退出码 0。 +- [ ] 执行无旧主题混用、无无响应入口、无业务不变量回归检查;输出剩余差异说明。 +- [ ] 同步更新 `STATUS.md`、`JIRA_BACKLOG.md`、总计划与两份批次计划 checkbox,使文档与代码一致。 +- 退出门禁:用户完成最终截图验收;文档与代码口径一致,无把开发引回旧视觉的入口。 + +### 阶段 4 — 缺口补齐(与 UI 并行/穿插) +- [ ] 从 `HomeApplicationService` 抽出独立 `CapabilityService`,Home 只聚合不复制业务规则(对应进度校正 Phase 07 REFACTOR 未勾项)。 +- [ ] 将 V028~V035 迁移登记进 STATUS/数据库/API 设计与迁移清单,消除"V001~V027"陈旧口径。 +- [ ] 对 backend 277 tests 的 4 failures/8 errors/3 skips 登记责任人并逐项清零或挂 Blocked 记录。 + +### 阶段 5 — 后端业务收口(UI 验收后恢复 Phase 08+) +> 不早于 UI 终验通过,按官方 Phase 顺序依次执行,每 Phase 输出 Completion Report 并停止: +- [ ] Phase 08 Like/Match/Block 并发与 Block 全链路回归(INV-002/003/004/007)。 +- [ ] Phase 09 Text Chat、Phase 10 Image & Chat Safety、Phase 11 Notification 事务后发送。 +- [ ] Phase 12 Relationship、Phase 13 红娘转介、Phase 13A 咨询权限与状态机。 +- [ ] Phase 14~18 多类型活动、签到、活动互选双确认事务、风控、申诉。 +- [ ] Phase 19~21 统一运营后台、Analytics 真实口径、Account Lifecycle。 +- [ ] Phase 22 Deployment/Ops、Phase 23 可信系统测试重建(清除空 pass、真实 INV-001~020 行为测试)。 +- 退出门禁:零失败零错误零意外跳过,P0/P1 清零后才进入 Phase 24 UAT。 + +### 阶段 6 — 发布前序(UAT → RC → Production) +- [ ] UAT 分角色闭环(含群众扫码→预约→到场→留痕线下链路)。 +- [ ] RC 真实内容、安全/隐私/无障碍/弱网复检、Go/No-Go 清单。 +- [ ] Production 备份/恢复演练、V027~V035 向前迁移、Smoke 与回滚手册。 +- 退出门禁:主启动提示词全部条件满足后,才允许定义为"善缘丹阳 V1.1 完成"。 + +--- + +## 四、风险与建议 + +- **治理滞后是最大风险**:代码超前于计划 checkbox + 未提交在途 + V035 未登记,若不先收口,后续验收将再次陷入"文档说了算 vs 代码算数"的对立。本计划将阶段 0 列为最高优先。 +- **CapabilityService 缺失**是业务不变量 INV(入口由服务端能力决定)的软肋,须在 UI 收紧前补齐,避免前端自行拼状态。 +- **C 组 `.js`** 若不统一为 TS,会重蹈 13 页漂移覆辙,须在本轮彻底清零。 +- **不要以整目录覆盖/强制回滚/虚构数据**完成任何页面;每批删除/重构均需构建 + 合同测试 + Git 可恢复证据。 +- 每个阶段完成后暂停等待人工验收,不自动进入下一阶段。 + +--- + +## 五、执行方式建议 + +本文为规划文档。若进入执行,建议按既有计划规范加载 `superpowers:executing-plans` 或 `superpowers:subagent-driven-development` 逐个 Phase/Step 落地,每个 Phase 完成后输出 Completion Report 并停止,等待用户确认。 \ No newline at end of file