/**
 * Backend Extraction Output Types
 * 
 * These types define the structured JSON returned by the backend extractor.
 * Used ONLY by backend extraction, not by chat.
 */

// Structured item returned by Gemini for each category
export interface StructuredExtractedItem {
  id?: string;
  sourceText: string;
  label?: string;
  description?: string;
  confidence: number;
  importance: "primary" | "supporting";
}

export interface ExtractedInsight {
  id: string;
  type: "problem" | "user" | "feature" | "constraint" | "opportunity" | "other";
  title: string;
  description: string;
  sourceText: string;
  sourceKnowledgeItemId: string;
  importance: "primary" | "supporting";
  confidence: number;
}

export interface ExtractionOutput {
  // Gemini returns rich objects, not just strings
  problems: StructuredExtractedItem[];
  targetUsers: StructuredExtractedItem[];
  features: StructuredExtractedItem[];
  constraints: StructuredExtractedItem[];
  opportunities: StructuredExtractedItem[];
  
  // These can remain as arrays (empty arrays OK)
  insights: ExtractedInsight[];
  uncertainties: string[];
  missingInformation: string[];
  overallConfidence: number;
}

