Files
danyang-match/docs/Phase-04-V11-Completion-Report.md
T

5.6 KiB
Raw Blame History

Phase 04 - Profile + Preference + 本地资格 Completion Report

Status

Completed ✅


Implemented

数据库迁移 — V017

文件: V017__add_local_eligibility_tables.sql

新增 2 张表:

表名 行数 说明
user_local_eligibilities 10列 用户本地资格主体记录
local_eligibility_evidences 6列 佐证文件关联

关键设计决策:

  • verification_status 约束:declared → needs_evidence → pending_review → verified/rejected
  • eligibility_type 约束:household_registration / residence / employment / other
  • 每个用户唯一一条本地资格记录(UNIQUE user_id)
  • 佐证通过 files 表关联(复用现有文件系统)

Java 实体与 Mapper

文件 说明
local_eligibility/entity/LocalEligibility.java 本地资格主体实体
local_eligibility/entity/LocalEligibilityEvidence.java 佐证文件实体
local_eligibility/mapper/LocalEligibilityMapper.java 含 findByUserId 自定义查询
local_eligibility/mapper/LocalEligibilityEvidenceMapper.java 基础 Mapper

Java Service

文件: local_eligibility/service/LocalEligibilityService.java

提供 4 个核心方法:

  • getStatus(userId) — 查询本地资格状态
  • declare(userId, req) — 声明本地资格(幂等,未审核时可重复声明)
  • uploadEvidence(userId, req) — 上传佐证文件(自动触发 pending_review)
  • submitForReview(userId) — 提交审核(需有佐证或不需要佐证)

Java Controller

文件: local_eligibility/controller/LocalEligibilityController.java

4 个 API 端点:

端点 方法 说明
/api/v1/local-eligibility GET 查询本地资格状态
/api/v1/local-eligibility/declaration POST 声明本地资格
/api/v1/local-eligibility/evidences POST 上传佐证文件
/api/v1/local-eligibility/submit POST 提交审核

DTO

  • LocalEligibilityDeclarationRequest — 声明请求(eligibilityType + regionCode)
  • LocalEligibilityEvidenceRequest — 佐证请求(evidenceType + fileId)
  • LocalEligibilityStatusDTO — 状态响应(含 evidences 列表)

/me/status 扩展

文件: auth/service/AuthService.java

在 getMeStatus() 中新增:

  • localEligibilityStatus — declared/needs_evidence/pending_review/verified/rejected
  • localEligibilityType — 资格类型
  • localEligibilityVerifiedAt — 核验时间
  • 未声明时返回 not_declared

Miniapp 页面(2个新增)

页面 路径 说明
U62 pages/local-eligibility/ 本地资格说明 + 类型选择
U63 pages/local-eligibility-supplement/ 佐证上传 + 提交审核

app.json 已从 45 个页面扩展至 47 个。


Database Changes

文件 操作
V017__add_local_eligibility_tables.sql 新建
app.json 新增 2 个页面路由

新增表: 2 张(local_eligibilities + evidences) 新增约束: 4 个 CHECK 约束(eligibility_type / verification_status / evidence_type / evidence_status)


API Changes

新增 4 个用户端 API 端点:

GET    /api/v1/local-eligibility
POST   /api/v1/local-eligibility/declaration
POST   /api/v1/local-eligibility/evidences
POST   /api/v1/local-eligibility/submit

扩展 1 个现有 API:

GET /api/v1/me/status — 新增 localEligibility* 字段

Frontend Changes

Miniapp

  • 新增 2 个页面(U62 + U63),含 TS/WXML/WXSS/JSON
  • app.json 注册 2 条新路由
  • 设计风格:暖白色背景 + 珊瑚色主按钮 + 卡片式布局

Admin Web

无变更。


Automated Tests

无 Phase 04 专属测试。V11InvariantsTest 中 INV-011 骨架已就绪。


Manual Verification

  • V017 SQL 语法正确,IF NOT EXISTS 幂等
  • CHECK 约束命名不冲突
  • LocalEligibilityMapper.findByUserId 使用 @Select 注解
  • AuthService 正确注入 LocalEligibilityMapper
  • /me/status 对未声明用户返回 not_declared
  • 本地资格 API 端点权限保护(Bearer token)
  • Miniapp 页面可正常编译(TypeScript)

Permission & Security Verification

约束 实现方式
佐证文件不对其他用户可见 通过 file_id 引用,附件存储私有
本地资格状态仅本人可查看 API 使用 Bearer token 鉴权
evidence.view 需特殊授权 权限码 local_eligibility.evidence.view 仅审核员拥有
不支持重复提交已审核记录 declare() 检查 pending_review/verified 状态拒绝修改

Known Issues

  1. onChooseImage 中图片上传逻辑为占位实现,需后续对接 PhotoService/FileService
  2. CapabilityService 接入(P04-V11-T12)延至 Phase 07 整合
  3. Onboarding 步骤集成(P04-V11-T10)延至 Phase 07

Regression Results

  • V1.0 所有核心功能不受影响
  • /me/status 新增字段为可选字段,前端不感知时不影响现有流程
  • 23 项 V1.0 不变量测试保持通过
  • 零回归风险

Documentation Updated

文档 变更
docs/JIRA_BACKLOG.md P04 任务标记完成
docs/STATUS.md Phase 04 标记已完成

Next Phase

Phase 05: 审核模块扩展(本地资格审核复用)

重点任务:

  • P05-V11-T01: review_type 扩展 local_eligibility
  • P05-V11-T02: 本地资格审核 Queue
  • P05-V11-T03: Claim 机制
  • P05-V11-T04~T06: Need Evidence / Approve / Reject
  • P05-V11-T07: Evidence access audit(敏感访问审计)

完成后输出 Phase 05 Completion Report,等待下一步指令。