feat: add one-turn situation graph update UI

This commit is contained in:
2026-08-02 09:43:42 +01:00
parent a948910ba8
commit a9bce79658
11 changed files with 901 additions and 42 deletions
+41 -16
View File
@@ -46,6 +46,29 @@ function buildDiagnostics({ analysis, graph, graphReferenceValidation }) {
};
}
function buildUpdateDiagnostics({
promptVersion,
modelName,
responseDurationMs,
normalisationsApplied,
graph,
graphReferenceValidation,
}) {
return {
promptVersion: promptVersion ?? "v0.4",
modelName: modelName ?? null,
responseDurationMs: responseDurationMs ?? null,
validationStatus: "valid",
nodeCount: graph?.nodes?.length ?? 0,
edgeCount: graph?.edges?.length ?? 0,
graphReferenceValidation: graphReferenceValidation ?? {
valid: true,
errors: [],
},
normalisationsApplied: normalisationsApplied ?? [],
};
}
export async function startCase(body) {
const parsedRequest = startCaseRequestSchema.safeParse(body);
@@ -254,12 +277,14 @@ async function updateCaseWithDependencies(body, dependencies = {}) {
stage: applicationResult.stage,
errors: applicationResult.errors,
diagnostics: {
promptVersion: promptVersion ?? null,
modelName,
responseDurationMs,
normalisationsApplied: parsedProposal.normalisationsApplied,
graphNodeCount: situationGraph.nodes.length,
graphEdgeCount: situationGraph.edges.length,
...buildUpdateDiagnostics({
promptVersion,
modelName,
responseDurationMs,
normalisationsApplied: parsedProposal.normalisationsApplied,
graph: situationGraph,
graphReferenceValidation: graphReferenceValidation,
}),
},
statusCode:
applicationResult.stage === "application" ||
@@ -280,14 +305,14 @@ async function updateCaseWithDependencies(body, dependencies = {}) {
applicationResult.previousActiveUnknownNodeId,
newActiveUnknownNodeId: applicationResult.newActiveUnknownNodeId,
changesApplied: applicationResult.changesApplied,
diagnostics: {
promptVersion: promptVersion ?? null,
diagnostics: buildUpdateDiagnostics({
promptVersion,
modelName,
responseDurationMs,
normalisationsApplied: parsedProposal.normalisationsApplied,
graphNodeCount: applicationResult.updatedSituationGraph.nodes.length,
graphEdgeCount: applicationResult.updatedSituationGraph.edges.length,
},
graph: applicationResult.updatedSituationGraph,
graphReferenceValidation: applicationResult.graphReferenceValidation,
}),
};
}
@@ -295,13 +320,13 @@ async function updateCaseWithDependencies(body, dependencies = {}) {
success: true,
stage: "proposal_ready",
proposal: parsedProposal.proposal,
diagnostics: {
promptVersion: promptVersion ?? null,
diagnostics: buildUpdateDiagnostics({
promptVersion,
modelName,
responseDurationMs,
normalisationsApplied: parsedProposal.normalisationsApplied,
graphNodeCount: situationGraph.nodes.length,
graphEdgeCount: situationGraph.edges.length,
},
graph: situationGraph,
graphReferenceValidation,
}),
};
}