fix(aihr): require explicit contribution scores

This commit is contained in:
2026-07-14 14:18:28 +08:00
parent 8bb43a2394
commit 2f29c62280
5 changed files with 14 additions and 9 deletions
+1
View File
@@ -279,3 +279,4 @@
- 2026-07-14 BRD M1 主管场景入口回退复核:后端已启用场景 API 优先,但主管指派页模板仍循环三条静态场景,且 API 正常空结果会继续显示静态选项;现改为循环 API 场景,真实空结果显示“暂无可派发的已启用场景”,只有请求失败才使用本地兜底。复盘后再练入口同步保持真实空结果为空,未修改生产数据。
- 2026-07-14 BRD 4.4 任务来源展示补齐:首页“今日安排”和练习页“最近练过”此前只把非每日任务显示为场景名/“专项训练”,会遮蔽主管派发的错题再练与训练营来源;现统一显示“每日三题/错题再练/训练营/专项训练”标签。该修复只补来源可见性,不把 `source='camp'` 扩展为尚未确认的训练营计划、进度或完成规则。
- 2026-07-14 BRD 4.5/B5 训练时长口径修复:能力画像此前用“完成次数 × 8 分钟”估算训练时长,无法作为真实时长证据;现复用 `started_time/finished_time` 按实际秒数聚合并换算分钟,无时间证据的历史记录按 0 计。未新增表字段;正式试点仍需核对时间来源、异常时长和课程学习时长是否纳入统一口径。
- 2026-07-14 BRD 4.5/B5 人工贡献分默认值修复:管理端主管复盘表单此前默认填入 `10` 分,单纯点击“标记已复盘”可能产生未经主管确认的贡献分;现改为可选空值,只有明确填写的 `0–100` 分才提交并计入画像,页面文案同步为“人工贡献分”。后端既有空值保留逻辑不变,未新增积分来源;正式激励规则仍需 HR 确认。
+1 -1
View File
@@ -23,7 +23,7 @@ export type ReviewDetail = ReviewRecord & {
mentorRewrite: string;
aiComment: string;
reviewAdvice: string;
incentivePoint: number;
incentivePoint: number | null;
scoreItems: Array<{ label: string; value: number | string; note: string }>;
dialogue: Array<{ role: string; label: string; text: string; audioUrl?: string; audioOssId?: number | string }>;
annotations: Array<{ turnIndex: number; sourceText: string; issue: string; rewrite: string; sopPoint: string }>;
+2 -2
View File
@@ -39,9 +39,9 @@
<small>来自移动端训练记录</small>
</article>
<article class="metric-card">
<span>贡献度</span>
<span>人工贡献分</span>
<strong>{{ profile?.contribution ?? 0 }}</strong>
<small>仅计入人工确认的有效贡献分,训练次数单独统计</small>
<small>仅计入主管明确确认的有效贡献分,训练次数单独统计</small>
</article>
</section>
+5 -5
View File
@@ -120,8 +120,8 @@
<el-input v-model="reviewForm.advice" type="textarea" :rows="3" placeholder="写给员工的复盘建议" />
</el-form-item>
<div class="form-grid">
<el-form-item label="贡献学分">
<el-input-number v-model="reviewForm.incentivePoint" :min="0" :max="100" />
<el-form-item label="人工贡献分">
<el-input-number v-model="reviewForm.incentivePoint" :min="0" :max="100" placeholder="可选,不填不计分" />
</el-form-item>
<el-form-item label="人工校准总分">
<el-input-number v-model="reviewForm.correctedTotal" :min="0" :max="100" />
@@ -191,7 +191,7 @@ const pilotDateWindow = computed(() => resolvePilotDateWindow([startDate.value,
const reviewForm = reactive({
reviewer: '主管',
advice: '',
incentivePoint: 10,
incentivePoint: null as number | null,
correctedTotal: 0,
calibrationReason: '',
nextScenarioId: '',
@@ -332,7 +332,7 @@ const selectReview = async (row: ReviewRecord) => {
const result = await getPracticeReview(row.id);
detail.value = result.data;
reviewForm.advice = result.data.reviewAdvice || '';
reviewForm.incentivePoint = result.data.incentivePoint || 10;
reviewForm.incentivePoint = result.data.incentivePoint ?? null;
reviewForm.correctedTotal = result.data.score;
reviewForm.calibrationReason = '';
reviewForm.nextScenarioId = '';
@@ -364,7 +364,7 @@ const submitReview = async () => {
await markPracticeReviewed(detail.value.id, {
reviewer: reviewForm.reviewer,
advice: reviewForm.advice,
incentivePoint: reviewForm.incentivePoint,
incentivePoint: reviewForm.incentivePoint ?? undefined,
nextScenarioId: reviewForm.nextScenarioId,
nextReason: reviewForm.nextReason
});
+5 -1
View File
@@ -356,7 +356,7 @@ contains mobile-uni/src/services/practice.ts "/api/train/practice/start"
contains mobile-uni/src/services/practice.ts "/api/aihr/mobile/practice/history"
contains mobile-uni/src/services/practice.ts "/api/aihr/mobile/profile/promotion-evidence"
contains mobile-uni/src/pages/user/practice/index.vue "训练完成,主管端待复盘已更新"
contains mobile-uni/src/pages/user/profile/index.vue "贡献度"
contains mobile-uni/src/pages/user/profile/index.vue "人工贡献分"
contains mobile-uni/src/services/knowledge.ts "/api/knowledge/answer-feedback"
contains mobile-uni/src/pages/user/sop/index.vue "有帮助"
contains mobile-uni/src/pages/user/sop/index.vue "没解决"
@@ -429,6 +429,10 @@ contains frontend/src/views/system/model/index.vue "不代表真实租户模板
contains frontend/src/views/system/prompts.vue "保存并启用"
contains frontend/src/views/competency/growth.vue "当前运营口径(只读)"
contains frontend/src/views/competency/growth.vue "训练画像等级(参考)"
contains frontend/src/views/competency/growth.vue "人工贡献分"
contains frontend/src/views/train/reviews.vue "人工贡献分"
contains frontend/src/views/train/reviews.vue "incentivePoint: null as number | null"
contains frontend/src/views/train/reviews.vue "incentivePoint: reviewForm.incentivePoint ?? undefined"
contains frontend/src/views/competency/growth.vue "person.personName || person.extPartyId"
contains mobile-uni/src/pages/user/profile/index.vue "成长证据包(待人工复核)"
contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrPracticeSeedService.java "训练画像参考等级"