Add LLM token

This commit is contained in:
wangwei
2026-07-02 22:03:39 +08:00
parent e3afb8a07a
commit 52e67b0e7b
36 changed files with 2392 additions and 394 deletions
@@ -14,9 +14,10 @@ import type {
ComplianceSourceEvent,
ComplianceFindingEvent,
ComplianceDonePayload,
ComplianceConflict,
} from '../../contexts';
export type { ComplianceMeta, ComplianceState, ComplianceSourceEvent as SourceEvent, ComplianceFindingEvent as FindingEvent, ComplianceDonePayload as DonePayload };
export type { ComplianceMeta, ComplianceState, ComplianceSourceEvent as SourceEvent, ComplianceFindingEvent as FindingEvent, ComplianceDonePayload as DonePayload, ComplianceConflict };
export type { ComplianceActionItem as ActionItem } from '../../contexts';
export type AnalysisStatus = import('../../contexts').ComplianceStatus;
export type AnalysisMeta = ComplianceMeta;
@@ -38,6 +39,8 @@ const INITIAL_STATE: ComplianceState = {
errorText: '',
analysisId: null,
isReadOnly: false,
progress: null,
conflicts: [],
};
export function useComplianceAnalysis() {
@@ -92,6 +95,9 @@ export function useComplianceAnalysis() {
if (j.type === 'stage') {
setState(s => ({ ...s, stageLabel: j.label ?? '', stageKey: j.stage ?? '' }));
} else if (j.type === 'progress') {
// Real per-clause progress update from backend
setState(s => ({ ...s, progress: { done: j.done ?? 0, total: j.total ?? 0 } }));
} else if (j.type === 'source') {
const src: ComplianceSourceEvent = {
standard: j.standard ?? '',
@@ -99,6 +105,7 @@ export function useComplianceAnalysis() {
score: j.score ?? 0,
status: j.status ?? 'retrieved',
full_content: j.full_content ?? '',
clause_index: j.clause_index,
};
setState(s => ({ ...s, sources: [...s.sources, src] }));
} else if (j.type === 'finding') {
@@ -107,8 +114,13 @@ export function useComplianceAnalysis() {
desc: j.desc ?? '',
status: j.status ?? 'info',
clause_ref: j.clause_ref,
confidence: j.confidence,
source_refs: j.source_refs,
};
setState(s => ({ ...s, findings: [...s.findings, finding] }));
} else if (j.type === 'conflicts') {
// Cross-clause conflicts detected after all findings finish
setState(s => ({ ...s, conflicts: j.items ?? [] }));
} else if (j.type === 'done') {
const payload: ComplianceDonePayload = {
conclusion: j.conclusion ?? '',