ГЛОБАЛЬНЫЙ РЕФАКТОРИНГ АРХИТЕКТУРЫ - Этап 4.5: добавлен аудит контракта Stage 4 в debug/log и закрыт расширенный quality-loop
This commit is contained in:
@@ -90,6 +90,13 @@ function baseInput() {
|
||||
outcomeClassV1: "FULLY_ANSWERED",
|
||||
assistantOrchestrationContractsV1: { query_frame: {}, execution_plan: {}, evidence_bundle: {}, coverage: {} },
|
||||
answerStructureV11: { schema_version: "answer_structure_v1_1" },
|
||||
assistantReply: [
|
||||
"Коротко: Признак проблемы подтвержден частично.",
|
||||
"Что именно проверено:\n- Проверен учетный контур.",
|
||||
"Что найдено:\n- Есть признак разрыва цепочки.",
|
||||
"Что пока не доказано:\n- Не хватает части подтверждений.",
|
||||
"Что проверить первым:\n- Уточнить период."
|
||||
].join("\n\n"),
|
||||
investigationStateSnapshot: { status: "active" },
|
||||
normalizedPayload: { schema_version: "normalized_query_v2_0_2" }
|
||||
};
|
||||
@@ -108,6 +115,7 @@ describe("assistant debug payload assembler", () => {
|
||||
expect(payload.problem_unit_ids_used).toEqual(["pu-1", "pu-2"]);
|
||||
expect(payload.address_llm_predecompose_applied).toBe(true);
|
||||
expect(payload.assistant_outcome_class_v1).toBe("FULLY_ANSWERED");
|
||||
expect(payload.answer_contract_stage4_v1?.is_stage4_shape).toBe(true);
|
||||
});
|
||||
|
||||
it("omits optional fields when they are not provided", () => {
|
||||
@@ -127,4 +135,19 @@ describe("assistant debug payload assembler", () => {
|
||||
expect(payload.address_llm_predecompose_applied).toBe(false);
|
||||
expect(payload.address_llm_predecompose_contract).toBeNull();
|
||||
});
|
||||
|
||||
it("marks non-stage4 answer shapes in contract audit", () => {
|
||||
const input = baseInput();
|
||||
input.assistantReply = [
|
||||
"Коротко: Есть проблема.",
|
||||
"Что сломано:\n- Разрыв перехода.",
|
||||
"Ограничения:\n- Частичная опора."
|
||||
].join("\n\n");
|
||||
|
||||
const payload = buildDeepAnalysisDebugPayload(input);
|
||||
|
||||
expect(payload.answer_contract_stage4_v1?.is_stage4_shape).toBe(false);
|
||||
expect(payload.answer_contract_stage4_v1?.legacy_blocks_present).toContain("Что сломано");
|
||||
expect(payload.answer_contract_stage4_v1?.legacy_blocks_present).toContain("Ограничения");
|
||||
});
|
||||
});
|
||||
|
||||
@@ -89,7 +89,13 @@ function baseInput() {
|
||||
assistantOrchestrationContractsV1: { query_frame: {}, execution_plan: {}, evidence_bundle: {}, coverage: {} },
|
||||
answerStructureV11: { schema_version: "answer_structure_v1_1" },
|
||||
investigationStateSnapshot: { status: "active" },
|
||||
assistantReply: "ok",
|
||||
assistantReply: [
|
||||
"Коротко: Признак проблемы подтвержден частично.",
|
||||
"Что именно проверено:\n- Проверен учетный контур.",
|
||||
"Что найдено:\n- Есть признак разрыва цепочки.",
|
||||
"Что пока не доказано:\n- Не хватает части подтверждений.",
|
||||
"Что проверить первым:\n- Уточнить период."
|
||||
].join("\n\n"),
|
||||
traceId: "trace-1"
|
||||
};
|
||||
}
|
||||
@@ -104,6 +110,7 @@ describe("assistant message log assembler", () => {
|
||||
});
|
||||
expect(details.problem_unit_ids_used).toEqual(["pu-1"]);
|
||||
expect(details.reply_type).toBe("factual");
|
||||
expect((details.answer_contract_stage4_v1 as { is_stage4_shape?: boolean } | undefined)?.is_stage4_shape).toBe(true);
|
||||
});
|
||||
|
||||
it("marks partial coverage and omits optional sections when empty", () => {
|
||||
|
||||
Reference in New Issue
Block a user