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.
 
 
 

3.3 KiB

Candidate Scoring Engine 验收记录(版本冻结)

日期:2026-08-19 · 状态:✅ 冻结全绿(旧评分卡 MySQL 缺陷已修复并复验,见 §7)

1. 构建与测试

项 结果
mvn clean verify 869 tests · Failures=0 · Errors=0 · Skipped=0 · BUILD SUCCESS ✅

2. Candidate Scoring 黑盒(重跑)

PASS=25 · FAIL=0 · SKIP=0 ✅

  • STUDENT 综合评分卡(8 维、weight 12.50、rulesVersion=candidate-scoring-v0.1、PENDING/INSUFFICIENT score=null)
  • 维度明细(EDUCATION 全字段);非法维度 → 400
  • trend months=6(按 period 独立归一化);months=0/25 → 400
  • 企业评分卡(app 31)→ 200,响应仅白名单字段
  • 越权:跨企业 403/8004、不存在 404/8002、ADMIN 403/2002、学生接口企业/管理员 403、未登录 401

3. 写入隔离

  • 评分仅写入 candidate_dimension_scores(同周期 upsert、version 递增 5→6)
  • jobs/applications/student_profiles/offers/candidate_feedback 行数零改动 ✅

4. OpenAPI

  • 静态 docs/openapi-rc.json:87 paths
  • 运行时 /api/v1/v3/api-docs:87 paths,路径集合与静态完全一致 ✅

5. Flyway

  • 最新成功迁移:V24(candidate scoring) ✅
  • candidate_dimension_scores 表存在,CHECK/唯一约束在位 ✅

6. 基础设施

  • MySQL / Redis / RabbitMQ healthy;queue.notification / dlq ready=0 unacked=0 ✅
  • RabbitMQ 应用连接:修复为使用系统环境变量 RABBITMQ_VHOST 被错误覆盖的问题(以 $env:RABBITMQ_VHOST="/" 启动后连接正常,无 vhost 报错)✅

7. 冻结发现(已修复并复验)

  • 旧接口回归曾发现:/profile/me/candidate-score-card 在 MySQL 上返回 HTTP 500。
  • 根因:CandidateScoreCardService.getScoreCard 使用 SELECT CAST(cf.tags AS VARCHAR) ...,MySQL 8 不支持 CAST(... AS VARCHAR)(仅 CHAR);H2 支持故单测/构建通过,MySQL 运行时报 SQLSyntaxErrorException。
  • 已修复(负责人批准,一行):CandidateScoreCardService.java 第 60 行 CAST(cf.tags AS VARCHAR) → CAST(cf.tags AS CHAR)。
  • 复验结果:candidate-score-card / -trend / -percentile 三个接口在真实 MySQL 环境均返回 HTTP 200;mvn clean verify 869 全绿。
  • 冻结结论:✅ 版本冻结宣布为全绿(详见 §1–§6 与 §8)。

8. 备注

  • 未修改任何已验收接口语义;未新增 Flyway;未删除业务数据。
  • 后端运行方式:mvn spring-boot:run(最新构建,环境变量由 backend-infra/.env 注入;Windows 需显式 $env:RABBITMQ_VHOST="/")。

9. Release Candidate 检查清单(冻结全绿)

检查项 值 状态
mvn clean verify 869 tests · 0 failures · 0 errors · 0 skipped · BUILD SUCCESS ✅
Candidate Scoring 黑盒 PASS=25 · FAIL=0 · SKIP=0 ✅
OpenAPI 87 paths(静态 docs/openapi-rc.json 与运行时 /v3/api-docs 集合一致) ✅
Flyway 最新 V24(candidate scoring) ✅
Docker MySQL / Redis / RabbitMQ 均 healthy ✅
RabbitMQ 队列 queue.notification、queue.notification.dlq 均 ready=0 unacked=0 ✅
旧评分卡回归 score-card / score-trend / percentile 均 HTTP 200 ✅
写入隔离 评分仅写 candidate_dimension_scores;业务表零改动 ✅