修复任务详情字段过滤契约

This commit is contained in:
andy
2026-07-13 08:50:06 +08:00
parent 890565d43f
commit b05001e481
7 changed files with 36 additions and 4 deletions

View File

@@ -2257,7 +2257,21 @@ public class ReservationTaskWorkflowServiceImpl implements ReservationTaskWorkfl
ReservationTaskSnapshot task,
ReservationTaskCardSnapshot taskCard) {
JsonNode aiPayload = parseJson(taskCard.aiPayloadJson());
return fieldDefinitionProvider.listDefinitions(task.taskCardType(), task.resultType())
List<ReservationTaskCardFieldDefinition> allDefinitions =
fieldDefinitionProvider.listDefinitions(task.taskCardType(), task.resultType());
Map<String, Object> confirmedValues = normalizeStoredFieldValues(
task,
allDefinitions,
fieldValuesFromPayloadJson(taskCard.confirmedPayloadJson()));
Map<String, Object> draftValues = normalizeStoredFieldValues(
task,
allDefinitions,
fieldValuesFromPayloadJson(taskCard.draftPayloadJson()));
Map<String, Object> effectiveValues = applySystemDerivedFieldDefaults(
task,
aiPayload,
trimToNull(taskCard.confirmedPayloadJson()) == null ? draftValues : confirmedValues);
return activeDefinitions(task, aiPayload, effectiveValues)
.stream()
.map(definition -> toFieldResult(task, definition, aiPayload))
.toList();

View File

@@ -1713,7 +1713,7 @@ class SuperAgentTaskResultControllerTest {
.andExpect(jsonPath("$.external_conversation_id").value("thread-mail-detail-matrix-001"))
.andExpect(jsonPath("$.conversation_message_count").value(1))
.andExpect(jsonPath("$.field_contract_version").value("20260711-p0"))
.andExpect(jsonPath("$.fields.length()").value(18))
.andExpect(jsonPath("$.fields.length()").value(9))
.andExpect(jsonPath("$.fields[?(@.field_path=='case_keys.confirmation_number')].display_name")
.value(contains("Confirmation No.")))
.andExpect(jsonPath("$.fields[?(@.field_path=='case_keys.confirmation_number')].result_type")
@@ -1729,7 +1729,11 @@ class SuperAgentTaskResultControllerTest {
.andExpect(jsonPath("$.fields[?(@.field_path=='case_keys.confirmation_number')].write_path")
.value(contains("confirmed_payload_json.case_keys.confirmation_number")))
.andExpect(jsonPath("$.fields[?(@.field_path=='case_keys.confirmation_number')].value")
.value(contains("CNF-MATRIX-001")));
.value(contains("CNF-MATRIX-001")))
.andExpect(jsonPath("$.fields[?(@.field_path=='attachments')].field_path")
.isEmpty())
.andExpect(jsonPath("$.fields[?(@.field_path=='extracted_fields.child_room_items[]')].field_path")
.isEmpty());
}
@Test

View File

@@ -716,7 +716,11 @@ class SuperAgentTaskResultP0FixtureRegressionTest {
.andExpect(jsonPath("$.fields[?(@.field_path=='relevant_message_excerpt')].write_target")
.value(contains("none")))
.andExpect(jsonPath("$.fields[?(@.field_path=='relevant_message_excerpt')].raw_readonly")
.value(contains(true)));
.value(contains(true)))
.andExpect(jsonPath("$.fields[?(@.field_path=='case_keys.confirmation_number')].field_path")
.isEmpty())
.andExpect(jsonPath("$.fields[?(@.field_path=='extracted_fields.child_room_items[]')].field_path")
.isEmpty());
mockMvc.perform(put("/api/reservation/tasks/{taskId}/draft", taskId)
.contentType(MediaType.APPLICATION_JSON)