Files
danyang-match/docs/Phase-04-V11-Recovery-Completion-Report-2026-09-12.md
T

57 lines
2.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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:统一审核扩展。进入前须由用户明确确认;不得自动进入。