fix(aihr): keep assignment sources server-owned

This commit is contained in:
2026-07-14 13:56:48 +08:00
parent 91544943d6
commit c078f6474c
4 changed files with 16 additions and 1 deletions
@@ -1906,7 +1906,9 @@ public class AihrPracticeSeedService {
String scenarioId = firstNonBlank(request == null ? null : request.scenarioId(), "fee-parking");
ScenarioSeed scenario = resolveScenario(scenarioId, null);
String traineeName = firstNonBlank(request == null ? null : request.traineeName(), extPartyId);
String source = firstNonBlank(request == null ? null : request.source(), "manual");
// Assignment source is a server-owned classification. Client supplied values
// must not turn a manual supervisor assignment into a daily/retry/camp record.
String source = "manual";
String reason = firstNonBlank(request == null ? null : request.reason(), "主管派发专项训练");
Timestamp createdAt = Timestamp.valueOf(now);
jdbcTemplate.update("""
@@ -109,6 +109,17 @@ public class AihrPracticeSeedServiceTest {
assertEquals("缺少员工ID,无法派发专项训练", error.getMessage());
}
@Test
public void supervisorAssignmentSourceIsServerOwned() throws Exception {
String source = Files.readString(Path.of("src/main/java/org/dromara/aihr/service/AihrPracticeSeedService.java"));
int methodStart = source.indexOf("public PracticeAssignmentResponse createAssignment(PracticeAssignmentRequest request)");
int methodEnd = source.indexOf("public PracticeAssignmentResponse createAssignment(PracticeAssignmentRequest request, String supervisorExtPartyId)", methodStart);
String method = source.substring(methodStart, methodEnd);
assertTrue(method.contains("String source = \"manual\""));
assertFalse(method.contains("request.source()"));
}
@Test
public void newHireWindowUsesInclusiveThreeMonthBoundary() {
LocalDate asOf = LocalDate.of(2026, 7, 14);