fix(detail): 评分 4 维度改走 /business/project/rate + manager_score 同步回写

P0 #1 修复: 评分之前写到 biz_project (错表), 4 维度 (scoreQuality/Speed/Coordination/Compliance) 实体无字段, mapper 无 <if>, Spring Boot Jackson 默认丢弃未知字段 — 全部失效。

改动:
- 后端 BizProjectController.rate: 同步聚合该项目所有 compliance 评分的 4 维度总分之平均, 写回 biz_project.manager_score (1 位小数, HALF_UP)。复用现有 selectList, 不动 mapper xml。
- 前端 ManagerProjectDetail.submitScore: 改调 POST /business/project/rate, body 用后端字段名 (qualityScore/responseScore/cooperationScore/complianceScore), raterRole='compliance' 跟原型"角色:合规"对齐。加 totalScore<4 校验。
- 附: _self/manager_projects_detail.md 11 章审查报告 (含本修复)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
郭庆泰
2026-08-20 23:59:20 +08:00
co-authored by Claude
parent 25be0d5d89
commit 99b9807270
3 changed files with 579 additions and 7 deletions
@@ -352,15 +352,22 @@ function openScoreDialog() {
scoreOpen.value = true
}
async function submitScore() {
if (totalScore.value < 4) {
return ElMessage.warning('请至少给每个维度 1 分')
}
submitting.value = true
try {
await bizUpdate('project', {
...row.value,
scoreQuality: scoreForm.scoreQuality,
scoreSpeed: scoreForm.scoreSpeed,
scoreCoordination: scoreForm.scoreCoordination,
scoreCompliance: scoreForm.scoreCompliance,
managerScore: totalScore.value
await request({
url: '/business/project/rate',
method: 'post',
data: {
projectId: projectId.value,
raterRole: 'compliance',
qualityScore: scoreForm.scoreQuality,
responseScore: scoreForm.scoreSpeed,
cooperationScore: scoreForm.scoreCoordination,
complianceScore: scoreForm.scoreCompliance,
}
})
ElMessage.success('评分已保存')
scoreOpen.value = false