docs: add phase 04-06 recovery reports, gate outputs and execution plan
This commit is contained in:
@@ -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:统一审核扩展。进入前须由用户明确确认;不得自动进入。
|
||||||
@@ -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 尚未开始。
|
||||||
@@ -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 尚未开始。
|
||||||
@@ -0,0 +1,65 @@
|
|||||||
|
|
||||||
|
> danyang-match-admin@1.0.0-rc.2 build
|
||||||
|
> vite build
|
||||||
|
|
||||||
|
[36mvite v5.4.21 [32mbuilding for production...[36m[39m
|
||||||
|
transforming...
|
||||||
|
[32m✓[39m 1728 modules transformed.
|
||||||
|
rendering chunks...
|
||||||
|
computing gzip size...
|
||||||
|
[2mdist/[22m[32mindex.html [39m[1m[2m 0.47 kB[22m[1m[22m[2m │ gzip: 0.36 kB[22m
|
||||||
|
[2mdist/[22m[35massets/BannerManagementView-Djms3KWD.css [39m[1m[2m 0.09 kB[22m[1m[22m[2m │ gzip: 0.11 kB[22m
|
||||||
|
[2mdist/[22m[35massets/ServiceStationView-Cbbmm_Nn.css [39m[1m[2m 0.09 kB[22m[1m[22m[2m │ gzip: 0.10 kB[22m
|
||||||
|
[2mdist/[22m[35massets/ServiceAppointmentView-RswBO5G6.css [39m[1m[2m 0.09 kB[22m[1m[22m[2m │ gzip: 0.10 kB[22m
|
||||||
|
[2mdist/[22m[35massets/ServiceProgramView-Co06YSF1.css [39m[1m[2m 0.09 kB[22m[1m[22m[2m │ gzip: 0.11 kB[22m
|
||||||
|
[2mdist/[22m[35massets/CounselingView-DS0_WW1z.css [39m[1m[2m 0.09 kB[22m[1m[22m[2m │ gzip: 0.11 kB[22m
|
||||||
|
[2mdist/[22m[35massets/ReferralManagementView-DuNo3PpK.css [39m[1m[2m 0.09 kB[22m[1m[22m[2m │ gzip: 0.11 kB[22m
|
||||||
|
[2mdist/[22m[35massets/ActivityInterestView-DEhJx6FX.css [39m[1m[2m 0.12 kB[22m[1m[22m[2m │ gzip: 0.11 kB[22m
|
||||||
|
[2mdist/[22m[35massets/OrganizationView-BZzoCWcI.css [39m[1m[2m 0.14 kB[22m[1m[22m[2m │ gzip: 0.13 kB[22m
|
||||||
|
[2mdist/[22m[35massets/OperatorManagementView-BYJDeBSK.css [39m[1m[2m 0.14 kB[22m[1m[22m[2m │ gzip: 0.13 kB[22m
|
||||||
|
[2mdist/[22m[35massets/AuditLogView-S_Hqq6I1.css [39m[1m[2m 0.14 kB[22m[1m[22m[2m │ gzip: 0.13 kB[22m
|
||||||
|
[2mdist/[22m[35massets/ReportCenterView-DHmBOFIv.css [39m[1m[2m 0.32 kB[22m[1m[22m[2m │ gzip: 0.20 kB[22m
|
||||||
|
[2mdist/[22m[35massets/AppealCenterView-DzztoN7Y.css [39m[1m[2m 0.38 kB[22m[1m[22m[2m │ gzip: 0.22 kB[22m
|
||||||
|
[2mdist/[22m[35massets/AnalyticsView-Drx-0KGm.css [39m[1m[2m 0.54 kB[22m[1m[22m[2m │ gzip: 0.25 kB[22m
|
||||||
|
[2mdist/[22m[35massets/ReviewView-4HuS5WAS.css [39m[1m[2m 0.62 kB[22m[1m[22m[2m │ gzip: 0.30 kB[22m
|
||||||
|
[2mdist/[22m[35massets/UserManagementView-DvPwqJE7.css [39m[1m[2m 0.68 kB[22m[1m[22m[2m │ gzip: 0.31 kB[22m
|
||||||
|
[2mdist/[22m[35massets/UserDetailView-KAQTfja2.css [39m[1m[2m 1.75 kB[22m[1m[22m[2m │ gzip: 0.59 kB[22m
|
||||||
|
[2mdist/[22m[35massets/LoginView-Ct6oQd51.css [39m[1m[2m 2.65 kB[22m[1m[22m[2m │ gzip: 0.86 kB[22m
|
||||||
|
[2mdist/[22m[35massets/MainLayout-BsFnDcKW.css [39m[1m[2m 7.66 kB[22m[1m[22m[2m │ gzip: 2.02 kB[22m
|
||||||
|
[2mdist/[22m[35massets/DashboardView-0JNoHdDy.css [39m[1m[2m 8.36 kB[22m[1m[22m[2m │ gzip: 1.95 kB[22m
|
||||||
|
[2mdist/[22m[35massets/index-SZrX9eGA.css [39m[1m[2m 364.44 kB[22m[1m[22m[2m │ gzip: 49.19 kB[22m
|
||||||
|
[2mdist/[22m[36massets/logo-mark-BbdUh5s0.js [39m[1m[2m 0.05 kB[22m[1m[22m[2m │ gzip: 0.07 kB[22m
|
||||||
|
[2mdist/[22m[36massets/ReferralManagementView-D7aqs35R.js [39m[1m[2m 1.51 kB[22m[1m[22m[2m │ gzip: 0.88 kB[22m
|
||||||
|
[2mdist/[22m[36massets/ActivityInterestView-BKjCsxb0.js [39m[1m[2m 2.61 kB[22m[1m[22m[2m │ gzip: 1.39 kB[22m
|
||||||
|
[2mdist/[22m[36massets/LoginView-Dt3s0Q_y.js [39m[1m[2m 2.85 kB[22m[1m[22m[2m │ gzip: 1.67 kB[22m
|
||||||
|
[2mdist/[22m[36massets/AuditLogView-Dh6x35ig.js [39m[1m[2m 2.86 kB[22m[1m[22m[2m │ gzip: 1.60 kB[22m
|
||||||
|
[2mdist/[22m[36massets/ServiceProgramView-D-swxUkf.js [39m[1m[2m 3.32 kB[22m[1m[22m[2m │ gzip: 1.43 kB[22m
|
||||||
|
[2mdist/[22m[36massets/ServiceAppointmentView-lEL9TZvd.js [39m[1m[2m 3.60 kB[22m[1m[22m[2m │ gzip: 1.63 kB[22m
|
||||||
|
[2mdist/[22m[36massets/ServiceStationView-Bogu6nJ_.js [39m[1m[2m 3.73 kB[22m[1m[22m[2m │ gzip: 1.56 kB[22m
|
||||||
|
[2mdist/[22m[36massets/OrganizationView-Bw6yfuhl.js [39m[1m[2m 4.06 kB[22m[1m[22m[2m │ gzip: 1.75 kB[22m
|
||||||
|
[2mdist/[22m[36massets/UserManagementView-0qZwsJ_V.js [39m[1m[2m 4.95 kB[22m[1m[22m[2m │ gzip: 2.39 kB[22m
|
||||||
|
[2mdist/[22m[36massets/OperatorManagementView-D8GnD-Ew.js [39m[1m[2m 4.97 kB[22m[1m[22m[2m │ gzip: 2.05 kB[22m
|
||||||
|
[2mdist/[22m[36massets/AppealCenterView-revJgkb8.js [39m[1m[2m 5.86 kB[22m[1m[22m[2m │ gzip: 2.48 kB[22m
|
||||||
|
[2mdist/[22m[36massets/BannerManagementView-CJdvHBDG.js [39m[1m[2m 5.89 kB[22m[1m[22m[2m │ gzip: 2.35 kB[22m
|
||||||
|
[2mdist/[22m[36massets/AnalyticsView-B_Iss0kH.js [39m[1m[2m 5.93 kB[22m[1m[22m[2m │ gzip: 2.29 kB[22m
|
||||||
|
[2mdist/[22m[36massets/ReportCenterView-BM3aTG1v.js [39m[1m[2m 6.85 kB[22m[1m[22m[2m │ gzip: 2.79 kB[22m
|
||||||
|
[2mdist/[22m[36massets/ContentManagementView-CC3VVm-4.js [39m[1m[2m 6.93 kB[22m[1m[22m[2m │ gzip: 2.23 kB[22m
|
||||||
|
[2mdist/[22m[36massets/MainLayout-DVabZj9_.js [39m[1m[2m 7.22 kB[22m[1m[22m[2m │ gzip: 3.30 kB[22m
|
||||||
|
[2mdist/[22m[36massets/CounselingView-DVZAIDyX.js [39m[1m[2m 7.27 kB[22m[1m[22m[2m │ gzip: 2.64 kB[22m
|
||||||
|
[2mdist/[22m[36massets/UserDetailView-ChvihJh3.js [39m[1m[2m 7.59 kB[22m[1m[22m[2m │ gzip: 3.53 kB[22m
|
||||||
|
[2mdist/[22m[36massets/ReviewView-B9CN-Grs.js [39m[1m[2m 9.98 kB[22m[1m[22m[2m │ gzip: 4.01 kB[22m
|
||||||
|
[2mdist/[22m[36massets/DashboardView-BKwnIw4O.js [39m[1m[2m 12.25 kB[22m[1m[22m[2m │ gzip: 5.05 kB[22m
|
||||||
|
[2mdist/[22m[36massets/index-Fi1XOGJB.js [39m[1m[33m1,265.54 kB[39m[22m[2m │ gzip: 407.91 kB[22m
|
||||||
|
npm.cmd : [33m
|
||||||
|
At line:15 char:3434
|
||||||
|
+ ... ; cd "E:\develop\公益婚恋服务平台\admin-web" ; npm.cmd run build 2>&1 | Tee-O ...
|
||||||
|
+ ~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
+ CategoryInfo : NotSpecified: ([33m: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.[39m
|
||||||
|
[32m✓ built in 18.21s[39m
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
Admin dashboard data contracts passed
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
Admin reference contracts passed
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
|
||||||
|
> danyang-match-admin@1.0.0-rc.2 type-check
|
||||||
|
> vue-tsc --noEmit
|
||||||
|
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
Brand asset contracts passed
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
Miniapp auth contracts passed
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
Miniapp reference contracts passed
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
Miniapp page source uniqueness contracts passed
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
Phase 03 verification contracts passed
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
Phase 04 local eligibility contracts passed
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
Phase 06 match eligibility contracts passed
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
Phase 07 home contracts passed
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
Tabbar icon contracts passed
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
UI contracts passed
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
UI document baseline contracts passed
|
||||||
@@ -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 个未提交改动,逐步推进。
|
||||||
@@ -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 并停止,等待用户确认。
|
||||||
Reference in New Issue
Block a user