# 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`;业务表零改动 | ✅ |