轻松聘AI开发
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

2.0 KiB

R01-C 纯计算与重复规则收束实施报告

状态:R01-C 已实现并通过自动化与干净构建,待独立代码复验。

实现结果

新增 CandidateOverviewStatusPolicy,用一个纯决策内核产出 OK/PARTIAL/PENDING/INSUFFICIENT_DATA。两个入口显式保留历史适配差异:评分引擎固定 8 维并要求 score 非空;竞争排名按已有快照数量和状态判断。原两个业务类中的 overviewStatus 实现均已删除。

新增 JobPreferenceScoreCalculator,把原先压缩在单行方法中的 30/20/20/15/15 权重计算提取为无 Spring、无数据库依赖的纯函数。JobRecommendationService 仅负责解析已有 JSON 字段并组装输入;权重、匹配条件、空信号返回 null、薪资相等边界及 HALF_UP 两位小数全部保持。

测试

  • CandidateOverviewStatusPolicyTest:5 条,覆盖两个适配入口的 OK/PARTIAL/PENDING/INSUFFICIENT_DATA、空集合、固定八维、null score 差异,以及评分结果列表为 null 时的历史快速失败语义;
  • JobPreferenceScoreCalculatorTest:7 条,覆盖无信号、全匹配、全不匹配、权重与舍入、薪资相等/null、null 集合,以及历史 JSON 数组中 null 元素的兼容性;
  • 独立复核发现 List.copyOf 会拒绝历史 JSON 数组中的 null 元素,可能把原先可计算的数据变成 500;已改为允许 null 的防御性只读拷贝,并先补回归测试锁定旧语义;
  • 定向关联集合:33/33;
  • 第一次定向测试因夹具让城市和行业同时匹配却期望 66.67 而失败,修正为行业不匹配后同一断言通过;未改生产公式或放宽断言。

全量结果

  • mvn clean verify:2094/2094,Failures=0、Errors=0、Skipped=20,BUILD SUCCESS;20 项均为既有环境条件跳过项,R01-C 定向与关联测试 Skipped=0;
  • OpenAPI:176 paths / 214 operations,All checks passed;
  • V1–V43 未修改,无新增接口、ErrorCode、依赖、表或索引;
  • 暂存区为空,未提交、未推送,历史未跟踪产物保留。