/**
 * 文件入库追踪系统类型定义（Phase A / B / C）
 * Phase A: Trace 汇总记录与 Event 时间线事件
 * Phase B: Artifact 中间工件（原文、切片、Prompt、LLM 响应等）
 * Phase C: Stats 统计概览
 */

// ── Trace (summary record) ─────────────────────────────────────

/** 追踪记录状态：运行中 / 已完成 / 部分失败 / 失败 */
export type TraceStatus = 'running' | 'completed' | 'partial_failed' | 'failed'

/** 单次入库任务的追踪汇总记录 */
export interface IngestTrace {
  trace_id: string
  doc_id: string
  task_id: string
  original_filename: string
  file_type: string
  file_size: number
  source_type: 'manual' | 'webhook' | 'api'
  status: TraceStatus
  current_stage: string
  error_code?: string
  error_message?: string
  stage_count: number
  event_count: number
  started_at: string
  finished_at?: string
  duration_ms?: number
  operator?: string
  content_hash?: string
  is_duplicate?: boolean
}

// ── Event (timeline item) ───────────────────────────────────────

/** 时间线事件状态 */
export type EventStatus = 'started' | 'completed' | 'failed' | 'skipped'

/** 入库过程中的单个事件（时间线节点） */
export interface IngestEvent {
  event_id: string
  trace_id: string
  seq: number
  stage: string
  event_type: string
  status: EventStatus
  summary: string
  details?: Record<string, unknown>
  error_code?: string
  error_message?: string
  duration_ms?: number
  service?: string
  timestamp: string
}

// ── Artifact (Phase B) ──────────────────────────────────────────

/** 工件类型：原始文本 / 解析章节 / 切片预览 / Prompt / LLM 响应 / 向量样本 / 图谱三元组 */
export type ArtifactType =
  | 'raw_text'
  | 'parsed_sections'
  | 'chunk_preview'
  | 'prompt'
  | 'llm_response'
  | 'embedding_sample'
  | 'graph_triples'

/** 入库处理过程中产生的中间工件 */
export interface IngestArtifact {
  artifact_id: string
  trace_id: string
  stage: string
  artifact_type: ArtifactType
  label: string
  payload_text?: string
  payload_size: number
  created_at: string
}

// ── Paginated response ──────────────────────────────────────────

export interface PaginatedResponse<T> {
  total: number
  page: number
  page_size: number
  records: T[]
}

// ── Stats (Phase C) ─────────────────────────────────────────────

/** 入库追踪统计概览 */
export interface TraceStats {
  today_total: number
  running: number
  completed: number
  failed: number
  avg_duration_ms: number
}
