/** * Analysis Artifact Store — 分析中间产物存储 + 审核队列 * FR-L01, FR-L02 */ import type { KnowledgeType } from '../types/index.js'; import type { ResearchTask } from '../research/research-task-types.js'; export type AnalysisArtifactStatus = 'ready' | 'pending_review' | 'approved' | 'rejected'; export type AnalysisCandidateAction = 'approved' | 'rejected' | 'edited'; export interface AnalysisClaim { id: string; text: string; confidence: number; type?: KnowledgeType; } export interface AnalysisCandidate { id: string; label: string; confidence: number; payload?: Record; } export interface ReviewCandidate { id: string; field: 'extractedClaims' | 'entityCandidates' | 'conceptCandidates' | 'linkCandidates' | 'conflictCandidates' | 'gapCandidates' | 'recommendedResearchQueries'; candidateId: string; reason: string; confidence: number; } export interface ArtifactCandidateDecision { candidateId: string; action: AnalysisCandidateAction; editedValue?: string; note?: string; } export interface CandidateReviewRecord extends ArtifactCandidateDecision { reviewedAt: Date; } export interface AnalysisArtifactInput { sourceId: string; pipelineId?: string; extractedClaims: AnalysisClaim[]; entityCandidates: AnalysisCandidate[]; conceptCandidates: AnalysisCandidate[]; linkCandidates: AnalysisCandidate[]; conflictCandidates: AnalysisCandidate[]; gapCandidates: AnalysisCandidate[]; reviewCandidates: ReviewCandidate[]; recommendedResearchQueries: string[]; confidence?: number; } export interface AnalysisArtifact extends AnalysisArtifactInput { id: string; createdAt: Date; updatedAt: Date; status: AnalysisArtifactStatus; candidateDecisions: CandidateReviewRecord[]; } export interface ArtifactReviewQueueItem { artifactId: string; sourceId: string; queuedAt: Date; reviewCount: number; } export interface ArtifactToResearchTaskOptions { artifactId: string; priority?: ResearchTask['priority']; createdAt?: Date; } export declare class AnalysisArtifactStore { private readonly artifacts; private readonly reviewQueue; saveArtifact(input: AnalysisArtifactInput): Promise; loadArtifact(id: string): Promise; listReviewQueue(): Promise; approveCandidate(artifactId: string, decision: ArtifactCandidateDecision): Promise; rejectCandidate(artifactId: string, decision: ArtifactCandidateDecision): Promise; reviewCandidate(artifactId: string, decision: ArtifactCandidateDecision): Promise; createResearchTasksFromArtifact(options: ArtifactToResearchTaskOptions): Promise; private applyEditedValue; } //# sourceMappingURL=analysis-artifact-store.d.ts.map