fix(aihr): preserve empty scenario filters
This commit is contained in:
+1
-1
@@ -265,7 +265,7 @@ public class AihrPracticeSeedService {
|
|||||||
AND (? = '' OR scenario_type = ?)
|
AND (? = '' OR scenario_type = ?)
|
||||||
ORDER BY sort_order ASC, id ASC
|
ORDER BY sort_order ASC, id ASC
|
||||||
""", this::mapScenarioResponse, tenantId(), safePosition, safePosition, safeType, safeType);
|
""", this::mapScenarioResponse, tenantId(), safePosition, safePosition, safeType, safeType);
|
||||||
return rows.isEmpty() ? fallbackScenarios() : rows;
|
return rows;
|
||||||
} catch (DataAccessException e) {
|
} catch (DataAccessException e) {
|
||||||
return fallbackScenarios();
|
return fallbackScenarios();
|
||||||
}
|
}
|
||||||
|
|||||||
+13
@@ -5,6 +5,7 @@ import org.dromara.aihr.domain.AihrPracticeDto.CompetencyResponse;
|
|||||||
import org.dromara.aihr.domain.AihrPracticeDto.FinishRequest;
|
import org.dromara.aihr.domain.AihrPracticeDto.FinishRequest;
|
||||||
import org.dromara.aihr.domain.AihrPracticeDto.PracticeAssignmentRequest;
|
import org.dromara.aihr.domain.AihrPracticeDto.PracticeAssignmentRequest;
|
||||||
import org.dromara.aihr.domain.AihrPracticeDto.ReviewAdviceRequest;
|
import org.dromara.aihr.domain.AihrPracticeDto.ReviewAdviceRequest;
|
||||||
|
import org.dromara.aihr.domain.AihrPracticeDto.ScenarioResponse;
|
||||||
import org.dromara.aihr.domain.AihrPracticeDto.StartRequest;
|
import org.dromara.aihr.domain.AihrPracticeDto.StartRequest;
|
||||||
import org.dromara.aihr.domain.AihrPracticeDto.TurnRequest;
|
import org.dromara.aihr.domain.AihrPracticeDto.TurnRequest;
|
||||||
import org.dromara.common.core.exception.ServiceException;
|
import org.dromara.common.core.exception.ServiceException;
|
||||||
@@ -109,6 +110,18 @@ public class AihrPracticeSeedServiceTest {
|
|||||||
assertEquals("缺少员工ID,无法派发专项训练", error.getMessage());
|
assertEquals("缺少员工ID,无法派发专项训练", error.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void scenarioFilterKeepsRealEmptyDatabaseResultEmpty() {
|
||||||
|
JdbcTemplate jdbcTemplate = mock(JdbcTemplate.class);
|
||||||
|
when(jdbcTemplate.query(any(String.class), any(RowMapper.class), eq("000000"), eq("未配置岗位"), eq("未配置岗位"), eq(""), eq("")))
|
||||||
|
.thenReturn(List.of());
|
||||||
|
AihrPracticeSeedService service = new AihrPracticeSeedService(new ObjectMapper(), jdbcTemplate, null, null);
|
||||||
|
|
||||||
|
List<ScenarioResponse> result = service.scenarios("未配置岗位", null);
|
||||||
|
|
||||||
|
assertTrue(result.isEmpty());
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void supervisorAssignmentSourceIsServerOwned() throws Exception {
|
public void supervisorAssignmentSourceIsServerOwned() throws Exception {
|
||||||
String source = Files.readString(Path.of("src/main/java/org/dromara/aihr/service/AihrPracticeSeedService.java"));
|
String source = Files.readString(Path.of("src/main/java/org/dromara/aihr/service/AihrPracticeSeedService.java"));
|
||||||
|
|||||||
@@ -272,3 +272,4 @@
|
|||||||
- 2026-07-14 BRD G3/M5 派发来源完整性复核:主管派发接口此前信任客户端 `source`,理论上可把手工派发伪装成 `daily`、`retry` 或 `camp`,污染每日题、低分再练和训练营统计;现将主管创建任务的来源固定为服务端 `manual`,`daily/retry` 仍只由各自系统路径生成。新增服务源码回归测试与 `demo-check` marker,未修改生产数据。
|
- 2026-07-14 BRD G3/M5 派发来源完整性复核:主管派发接口此前信任客户端 `source`,理论上可把手工派发伪装成 `daily`、`retry` 或 `camp`,污染每日题、低分再练和训练营统计;现将主管创建任务的来源固定为服务端 `manual`,`daily/retry` 仍只由各自系统路径生成。新增服务源码回归测试与 `demo-check` marker,未修改生产数据。
|
||||||
- 2026-07-14 BRD M1 场景启停边界复核:停用场景此前在新训练启动时可能因内置 seed 回退而继续可用,管理端“停用”不具备实际阻断效果;现仅在新开始训练前检查数据库场景的 `enabled` 状态,已停用场景明确拒绝,历史训练/复盘读取不受影响。新增服务源码回归测试与 `demo-check` marker,未修改生产数据。
|
- 2026-07-14 BRD M1 场景启停边界复核:停用场景此前在新训练启动时可能因内置 seed 回退而继续可用,管理端“停用”不具备实际阻断效果;现仅在新开始训练前检查数据库场景的 `enabled` 状态,已停用场景明确拒绝,历史训练/复盘读取不受影响。新增服务源码回归测试与 `demo-check` marker,未修改生产数据。
|
||||||
- 2026-07-14 BRD M1 派发场景状态与展示一致性复核:修复停用场景仍可通过直接派发接口进入待训练,以及客户端传入场景名称可与场景 ID 不一致的问题;主管派发现在复用启停校验,记录名称始终取服务端场景定义。历史任务读取不受影响,未修改生产数据。
|
- 2026-07-14 BRD M1 派发场景状态与展示一致性复核:修复停用场景仍可通过直接派发接口进入待训练,以及客户端传入场景名称可与场景 ID 不一致的问题;主管派发现在复用启停校验,记录名称始终取服务端场景定义。历史任务读取不受影响,未修改生产数据。
|
||||||
|
- 2026-07-14 BRD M1 场景筛选回退语义复核:场景表查询成功但岗位/类型没有启用场景时,旧逻辑仍回退到内置场景,可能把不匹配或已停用场景展示给员工/主管;现仅在数据库异常时保留 seed fallback,真实空结果保持为空,并补岗位筛选回归测试。未修改生产数据。
|
||||||
|
|||||||
@@ -520,6 +520,7 @@ contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service
|
|||||||
contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrPracticeSeedService.java 'String source = "manual"'
|
contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrPracticeSeedService.java 'String source = "manual"'
|
||||||
contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrPracticeSeedService.java "训练场景已停用,无法开始"
|
contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrPracticeSeedService.java "训练场景已停用,无法开始"
|
||||||
contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrPracticeSeedService.java "scenario.id(), scenario.name(), source"
|
contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrPracticeSeedService.java "scenario.id(), scenario.name(), source"
|
||||||
|
contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrPracticeSeedService.java "return rows;"
|
||||||
contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrPracticeSeedService.java "isWithinNewHireWindow"
|
contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrPracticeSeedService.java "isWithinNewHireWindow"
|
||||||
contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrPracticeSeedService.java "allow-legacy-daily-drill-fallback"
|
contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrPracticeSeedService.java "allow-legacy-daily-drill-fallback"
|
||||||
contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrPracticeSeedService.java "isLegacyDailyDrillFallbackEnabled"
|
contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrPracticeSeedService.java "isLegacyDailyDrillFallbackEnabled"
|
||||||
|
|||||||
Reference in New Issue
Block a user