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

2.4 KiB
Raw Blame History

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

门禁核对

  • 本地资格与实名认证表独立。
  • 非本人不能将他人私有文件登记为佐证。
  • 数量、大小、类型和保留期限配置化。
  • U62/U63 使用真实接口而非占位提示。
  • /me/status 返回本地资格状态。

已知限制

  • 小程序仍同时保留 .ts 与运行时 .js;统一 TypeScript 唯一源属于 Phase 07 门禁。
  • 佐证到期清理调度任务尚未实现,本阶段只完成保留期配置;生产启用前需在 Phase 22 运维阶段核验清理作业。
  • 微信开发者工具真机/模拟器视觉验收仍属于后续 UI/UAT 门禁。

下一阶段

Phase 05:统一审核扩展。进入前须由用户明确确认;不得自动进入。