NODEDC_1C/llm_normalizer/backend/src/services/assistantEvidenceBundleAsse...

38 lines
1.4 KiB
TypeScript

import type { AssistantDebugPayload, UnifiedRetrievalResult } from "../types/assistant";
import {
buildAssistantEvidenceBundleContractV1,
type AssistantEvidenceBundleContractV1
} from "./assistantOrchestrationContracts";
import type { AssistantRetrievalCallRecord } from "./assistantDeepTurnRetrievalRuntimeAdapter";
type RetrievalStatusItem = AssistantDebugPayload["retrieval_status"][number];
export interface AssistantEvidenceBundleAssembly {
evidenceBundleContractV1: AssistantEvidenceBundleContractV1;
retrievalStatus: RetrievalStatusItem[];
}
function buildRetrievalStatus(retrievalResults: UnifiedRetrievalResult[]): RetrievalStatusItem[] {
return retrievalResults.map((item) => ({
fragment_id: item.fragment_id,
requirement_ids: item.requirement_ids,
route: item.route,
status: item.status,
result_type: item.result_type
}));
}
export function assembleAssistantEvidenceBundle(input: {
retrievalCalls: AssistantRetrievalCallRecord[];
retrievalResults: UnifiedRetrievalResult[];
}): AssistantEvidenceBundleAssembly {
const retrievalResults = Array.isArray(input.retrievalResults) ? input.retrievalResults : [];
return {
evidenceBundleContractV1: buildAssistantEvidenceBundleContractV1({
retrievalCalls: Array.isArray(input.retrievalCalls) ? input.retrievalCalls : [],
retrievalResults
}),
retrievalStatus: buildRetrievalStatus(retrievalResults)
};
}