5.6 KiB
5.6 KiB
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/rejectedeligibility_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/rejectedlocalEligibilityType— 资格类型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
onChooseImage中图片上传逻辑为占位实现,需后续对接 PhotoService/FileServiceCapabilityService接入(P04-V11-T12)延至 Phase 07 整合- 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,等待下一步指令。