fix(aihr): align supervisor scenario options
This commit is contained in:
@@ -273,3 +273,4 @@
|
||||
- 2026-07-14 BRD M1 场景启停边界复核:停用场景此前在新训练启动时可能因内置 seed 回退而继续可用,管理端“停用”不具备实际阻断效果;现仅在新开始训练前检查数据库场景的 `enabled` 状态,已停用场景明确拒绝,历史训练/复盘读取不受影响。新增服务源码回归测试与 `demo-check` marker,未修改生产数据。
|
||||
- 2026-07-14 BRD M1 派发场景状态与展示一致性复核:修复停用场景仍可通过直接派发接口进入待训练,以及客户端传入场景名称可与场景 ID 不一致的问题;主管派发现在复用启停校验,记录名称始终取服务端场景定义。历史任务读取不受影响,未修改生产数据。
|
||||
- 2026-07-14 BRD M1 场景筛选回退语义复核:场景表查询成功但岗位/类型没有启用场景时,旧逻辑仍回退到内置场景,可能把不匹配或已停用场景展示给员工/主管;现仅在数据库异常时保留 seed fallback,真实空结果保持为空,并补岗位筛选回归测试。未修改生产数据。
|
||||
- 2026-07-14 BRD M1 主管场景入口回退复核:后端已启用场景 API 优先,但主管指派页模板仍循环三条静态场景,且 API 正常空结果会继续显示静态选项;现改为循环 API 场景,真实空结果显示“暂无可派发的已启用场景”,只有请求失败才使用本地兜底。复盘后再练入口同步保持真实空结果为空,未修改生产数据。
|
||||
|
||||
@@ -45,9 +45,9 @@
|
||||
/>
|
||||
|
||||
<text class="field-label section-label">训练场景</text>
|
||||
<view class="scenario-row">
|
||||
<view v-if="scenarioOptions.length" class="scenario-row">
|
||||
<button
|
||||
v-for="item in supervisorScenarioOptions"
|
||||
v-for="item in scenarioOptions"
|
||||
:key="item.id"
|
||||
class="chip scenario-chip"
|
||||
:class="{ active: assignmentScenarioId === item.id }"
|
||||
@@ -57,6 +57,7 @@
|
||||
{{ item.name }}
|
||||
</button>
|
||||
</view>
|
||||
<text v-else class="muted block">暂无可派发的已启用场景</text>
|
||||
|
||||
<text class="field-label section-label">指派原因</text>
|
||||
<textarea
|
||||
@@ -65,7 +66,7 @@
|
||||
maxlength="180"
|
||||
placeholder="填写本次专项训练原因"
|
||||
/>
|
||||
<button class="primary-button submit-button" :disabled="assigning || historyLoading" @click="assignPractice">
|
||||
<button class="primary-button submit-button" :disabled="assigning || historyLoading || !scenarioOptions.length" @click="assignPractice">
|
||||
{{ assigning ? '指派中' : '确认指派' }}
|
||||
</button>
|
||||
</view>
|
||||
@@ -255,10 +256,8 @@ const loadScenarioOptions = async () => {
|
||||
}
|
||||
return;
|
||||
}
|
||||
scenarioOptions.value = [...supervisorScenarioOptions];
|
||||
if (!isScenarioId(assignmentScenarioId.value)) {
|
||||
assignmentScenarioId.value = supervisorScenarioOptions[0].id;
|
||||
}
|
||||
scenarioOptions.value = [];
|
||||
assignmentScenarioId.value = '';
|
||||
} catch {
|
||||
scenarioOptions.value = [...supervisorScenarioOptions];
|
||||
if (!isScenarioId(assignmentScenarioId.value)) {
|
||||
|
||||
@@ -319,6 +319,8 @@ const loadScenarioOptions = async () => {
|
||||
.map((item) => ({ id: item.id, name: item.name }));
|
||||
if (nextOptions.length) {
|
||||
scenarioOptions.value = nextOptions;
|
||||
} else {
|
||||
scenarioOptions.value = [];
|
||||
}
|
||||
} catch {
|
||||
scenarioOptions.value = [...supervisorScenarioOptions];
|
||||
|
||||
@@ -159,8 +159,10 @@ test('主管页面共享三个业务场景及文本推荐规则', () => {
|
||||
'repair-elevator-delay'
|
||||
]);
|
||||
assert.match(practiceServiceSource, /getPracticeScenarios/);
|
||||
assert.match(assignPageSource, /scenarioOptions/);
|
||||
assert.match(assignPageSource, /v-for="item in scenarioOptions"/);
|
||||
assert.match(assignPageSource, /暂无可派发的已启用场景/);
|
||||
assert.match(reviewPageSource, /scenarioOptions/);
|
||||
assert.match(reviewPageSource, /scenarioOptions\.value = \[\]/);
|
||||
assert.equal(inferSupervisorScenarioId('电梯故障沟通低分'), 'repair-elevator-delay');
|
||||
assert.equal(inferSupervisorScenarioId('投诉接待需要补练'), 'complaint-water');
|
||||
assert.equal(inferSupervisorScenarioId('催缴物业费'), 'fee-parking');
|
||||
|
||||
@@ -530,6 +530,7 @@ contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service
|
||||
contains mobile-uni/src/services/practice.ts "/api/aihr/mobile/practice/assignments"
|
||||
contains mobile-uni/src/services/practice.ts "/api/train/practice/scenarios?position="
|
||||
contains mobile-uni/src/pages/supervisor/assign/index.vue "scenarioOptions"
|
||||
contains mobile-uni/src/pages/supervisor/assign/index.vue "暂无可派发的已启用场景"
|
||||
contains mobile-uni/src/pages/supervisor/review/index.vue "scenarioOptions"
|
||||
contains frontend/src/api/aihr/case.ts "/api/knowledge/case/upload"
|
||||
contains frontend/src/api/aihr/case.ts "/api/knowledge/case/records?limit="
|
||||
|
||||
Reference in New Issue
Block a user