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.
 
 
 

1.7 KiB

R01-D1 百分位性能收束报告

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

修改范围

  • 新增纯函数 CandidatePercentileCalculator;
  • CompanyScoringDashboardService 保留原调用位置,仅将百分位计算委托给纯函数;
  • 未修改候选人综合分、排序、分页、过滤、披露门槛或响应结构。

算法与兼容性

旧实现对每个候选分数再次扫描全部分数,复杂度为 O(n²)。新实现先排序,再以每个分数第一次出现的位置作为“严格低于该分数的数量”,复杂度为 O(n log n)。分母仍为 有效分数数 - 1,仍使用 10 位中间精度、HALF_UP,并最终保留两位小数。

等价测试覆盖空集合、单样本、全 null、输入顺序、null 位置、并列分数,以及由 {null, 0, 1.0, 1.00, 2.5} 生成的长度 0–6 全组合,并逐项与旧 O(n²) 公式比较。

首次实现使用 HashMap<BigDecimal, ...>,测试立即发现 1.0 与 1.00 被错误视为不同键;改为按 BigDecimal.compareTo 排序的 TreeMap 后恢复旧语义。另一个首次失败来自手写并列夹具把最高分期望误写为 66.67;旧公式预言机证明应为 100.00,修正夹具期望,未改变生产公式。

验证

  • 定向与看板关联测试:28/28,Failures=0、Errors=0、Skipped=0;
  • mvn clean verify:2099/2099,Failures=0、Errors=0、Skipped=20,BUILD SUCCESS;20 项为既有环境条件跳过项,R01-D1 定向及关联测试 Skipped=0;
  • OpenAPI:176 paths / 214 operations,All checks passed;
  • 无 Flyway、ErrorCode、公网接口、表、索引或依赖变化;
  • 未暂存、未提交、未推送。