fix(firstleg): preserve coload groups in filtered candidates

This commit is contained in:
2026-09-04 00:33:07 +08:00
parent 65b29adb01
commit ce3cd7e80f
4 changed files with 132 additions and 64 deletions
@@ -97,8 +97,8 @@ class SmartLoadingCandidateMapperContractTest {
assertThat(sql)
.contains("o.created_at createdAt")
.contains("o.created_at>=#{query.createdStart}")
.contains("o.created_at<DATE_ADD(#{query.createdEnd},INTERVAL 1 DAY)")
.contains("MIN(eligible.createdAt)>=#{query.createdStart}")
.contains("MIN(eligible.createdAt)<DATE_ADD(#{query.createdEnd},INTERVAL 1 DAY)")
.doesNotContain("query.expectedArrivalStart", "query.expectedArrivalEnd");
}
@@ -136,9 +136,11 @@ class SmartLoadingCandidateMapperContractTest {
.getBoundSql(Map.of("query", query, "actualChannels", Set.of("MATSON_CLX_TRUCK"))).getSql();
assertThat(renderedUnits)
.contains("o.channel_code IN")
.contains("o.created_at>=", "o.created_at<DATE_ADD")
.contains("o.process_status IN ('WAIT_MEASURE'")
.contains("o.process_status='WAIT_SPLIT'");
.contains("MIN(eligible.createdAt)>=", "MIN(eligible.createdAt)<DATE_ADD")
.contains("eligible.candidateStatus='WAIT_MEASURE'")
.contains("eligible.candidateStatus='WAIT_SPLIT'")
.contains("MAX(CASE WHEN LOWER(eligible.inboundCode)")
.contains("MAX(CASE WHEN eligible.accountId=");
Method details = SmartLoadingCandidateMapper.class.getDeclaredMethod(
"globalCandidatesByUnits", List.class);