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

4.1 KiB
Raw Blame History

Phase 06 - Match Engine 扩展 Completion Report

Status

Completed ✅


Implemented

MatchRuleConfigProperties 扩展

文件: match/config/MatchRuleConfigProperties.java

新增字段:

private boolean localEligibilityRequired = false;

通过 Spring Boot @ConfigurationProperties(prefix="match") 绑定,可在 application.yml 中配置:

match:
  local-eligibility-required: true  # V1.1: 强制本地资格核验才能推荐

MatchEligibilityService 扩展

文件: match/service/MatchEligibilityService.java

新增依赖

  • LocalEligibilityMapper — 查询用户本地资格状态

新增方法

private boolean isLocalEligibilityVerified(String userId)
  • 查询 user_local_eligibilities 表
  • 仅当 verification_status = 'verified' 或 'pending_review' 时返回 true
  • 其他状态(declared, needs_evidence, rejected, not_declared)均返回 false

修改逻辑

在 isBasicEligible() 末尾新增:

// V1.1: 本地资格核验(可配置是否强制)
if (matchConfig.isLocalEligibilityRequired()) {
    if (!isLocalEligibilityVerified(targetUserId)) return false;
}

关键设计决策:

  • 默认 localEligibilityRequired=false,不影响 V1.0 行为
  • 通过 Feature Flag 配置开启,符合 AGENTS.md 第12条规则
  • 支持 verified 和 pending_review 两种通过状态(审核中允许推荐)

缓存失效处理

文件: local_eligibility/service/LocalEligibilityService.java

新增私有方法:

private void invalidateRecommendationCache(String userId)

在以下三个时机调用:

  1. declare() — 用户声明本地资格
  2. uploadEvidence() — 用户上传佐证文件
  3. submitForReview() — 用户提交审核

缓存 key 模式与 RecommendationEngineService 保持一致:recommend:{userId}:*

安全设计:

  • 异常不影响主流程(try-catch 包裹)
  • 仅记录 warn 日志,不抛出异常

LocalEligibilityService 新增依赖

  • StringRedisTemplate — 推荐缓存失效
  • 注入方式:Spring @RequiredArgsConstructor 自动构造注入

Database Changes

本次无数据库变更。


API Changes

本次无 API 变更。配置项通过 application.yml 控制行为。


Frontend Changes

无前端变更。


Automated Tests

  • V11InvariantsTest.java: INV-001~003 等原有不变量继续保持通过
  • P06-V11-T04 eligibility test matrix:Phase 23 测试骨架已包含

Manual Verification

  • MatchRuleConfigProperties 默认值 localEligibilityRequired=false,不影响现有行为
  • MatchEligibilityService 编译通过(无依赖冲突)
  • LocalEligibilityService 注入 StringRedisTemplate 正确
  • 缓存失效调用在 3 个关键位置
  • invalidateRecommendationCache 异常安全(非致命)
  • isLocalEligibilityVerified 正确处理所有状态

Permission & Security Verification

约束 实现方式
本地资格未核验用户不进入推荐池 isBasicEligible 中强制检查
审核中用户可进入推荐 pending_review 状态视为通过
配置可随时关闭 localEligibilityRequired 默认 false

Known Issues

无。


Regression Results

  • V1.0 匹配引擎核心逻辑不受影响(localEligibilityRequired 默认 false)
  • RecommendationEngineService 缓存 key 模式不变,兼容性良好
  • 零回归风险

Documentation Updated

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

Next Phase

Phase 07: V1.1 首页重构 + 找对象

重点任务:

  • P07-V11-T01: HomeApplicationService(GET /api/v1/home 聚合接口)
  • P07-V11-T02: HomeDTO 设计
  • P07-V11-T05~T09: Banner 后端基础(home_banners 表 + 查询 API)
  • P07-V11-T10~T19: Miniapp 首页重构(BrandHeader + UserStatusStrip + BannerCarousel + QuickEntryGrid + ...)
  • P07-V11-T20~T27: 各用户状态首页适配

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