Stage 2 завершён: problem-first ответы и follow-up continuity - ассистент переведён от entity-heavy логики к problem-first ответам с problem-unit слоем, удержанием контекста в follow-up и очисткой пользовательского ответа от сырых технических ссылок.
This commit is contained in:
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.normalizeRetrievalResult = normalizeRetrievalResult;
|
||||
const config_1 = require("../config");
|
||||
const stage1Contracts_1 = require("../types/stage1Contracts");
|
||||
const problemUnitAssembler_1 = require("./problemUnitAssembler");
|
||||
function toObject(value) {
|
||||
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
||||
return null;
|
||||
@@ -59,6 +60,18 @@ function normalizeStringArray(value) {
|
||||
}
|
||||
return value.map((item) => String(item));
|
||||
}
|
||||
function mergeSummaryWithProblemUnitMeta(summary, input) {
|
||||
return {
|
||||
...summary,
|
||||
problem_units_enabled: true,
|
||||
candidate_evidence_count: input.candidateEvidenceCount,
|
||||
problem_units_count: input.problemUnitsCount,
|
||||
problem_unit_types: input.unitTypes,
|
||||
problem_unit_duplicate_collapses: input.duplicateCollapses,
|
||||
problem_unit_severity_distribution: input.severityDistribution,
|
||||
problem_unit_confidence_distribution: input.confidenceDistribution
|
||||
};
|
||||
}
|
||||
function normalizeConfidence(value) {
|
||||
if (value === "high" || value === "medium" || value === "low") {
|
||||
return value;
|
||||
@@ -359,15 +372,18 @@ function normalizeEvidenceItems(fragmentId, requirementIds, route, value) {
|
||||
});
|
||||
}
|
||||
function normalizeRetrievalResult(fragmentId, requirementIds, route, raw) {
|
||||
return {
|
||||
const items = normalizeObjectArray(raw.items);
|
||||
const summary = normalizeSummary(raw.summary);
|
||||
const evidence = normalizeEvidenceItems(fragmentId, requirementIds, route, raw.evidence);
|
||||
const baseResult = {
|
||||
fragment_id: fragmentId,
|
||||
requirement_ids: requirementIds,
|
||||
route,
|
||||
status: normalizeStatus(raw.status),
|
||||
result_type: normalizeResultType(raw.result_type),
|
||||
items: normalizeObjectArray(raw.items),
|
||||
summary: normalizeSummary(raw.summary),
|
||||
evidence: normalizeEvidenceItems(fragmentId, requirementIds, route, raw.evidence),
|
||||
items,
|
||||
summary,
|
||||
evidence,
|
||||
why_included: normalizeStringArray(raw.why_included),
|
||||
selection_reason: normalizeStringArray(raw.selection_reason),
|
||||
risk_factors: normalizeStringArray(raw.risk_factors),
|
||||
@@ -376,4 +392,33 @@ function normalizeRetrievalResult(fragmentId, requirementIds, route, raw) {
|
||||
limitations: normalizeStringArray(raw.limitations),
|
||||
errors: normalizeErrors(raw.errors)
|
||||
};
|
||||
if (!config_1.FEATURE_ASSISTANT_PROBLEM_UNITS_V1) {
|
||||
return baseResult;
|
||||
}
|
||||
const assembled = (0, problemUnitAssembler_1.assembleProblemUnits)({
|
||||
route,
|
||||
result_type: baseResult.result_type,
|
||||
evidence,
|
||||
raw_entities: items,
|
||||
summary,
|
||||
risk_factors: baseResult.risk_factors,
|
||||
selection_reason: baseResult.selection_reason,
|
||||
business_interpretation: baseResult.business_interpretation
|
||||
});
|
||||
const enrichedSummary = mergeSummaryWithProblemUnitMeta(summary, {
|
||||
candidateEvidenceCount: assembled.candidate_evidence.length,
|
||||
problemUnitsCount: assembled.problem_units.length,
|
||||
unitTypes: assembled.problem_unit_summary.unit_types,
|
||||
duplicateCollapses: assembled.problem_unit_summary.duplicate_collapses,
|
||||
severityDistribution: assembled.problem_unit_summary.severity_distribution,
|
||||
confidenceDistribution: assembled.problem_unit_summary.confidence_distribution
|
||||
});
|
||||
return {
|
||||
...baseResult,
|
||||
summary: enrichedSummary,
|
||||
raw_entities: items,
|
||||
candidate_evidence: assembled.candidate_evidence,
|
||||
problem_units: assembled.problem_units,
|
||||
problem_unit_summary: assembled.problem_unit_summary
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user