forked from baskbuddy/zhangshun
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
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 verify869 全绿。 - 冻结结论:✅ 版本冻结宣布为全绿(详见 §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;业务表零改动 |
✅ |