/**
 * SSE（Server-Sent Events）相关类型定义
 * 定义 SSE 消息数据结构，用于 useSSE composable 和消费组件的类型安全。
 */

/** SSE 消息类型 */
export type SSEMessageType =
  | 'text'
  | 'reference'
  | 'graph'
  | 'thinking'
  | 'progress'
  | 'finding'
  | 'conflict'
  | 'open_question'
  | 'section'
  | 'executive_summary'
  | 'one_page_summary'
  | 'plan'
  | 'recommended_next_steps'
  | 'done'
  | 'error'

/** SSE 消息数据（由后端 SSE 事件流解析得到的 JSON 对象） */
export interface SSEMessageData {
  /** 消息类型，决定如何处理该条消息 */
  type: SSEMessageType | string
  /** 文本内容（text / thinking / progress / error 等类型使用） */
  content?: string
  /** 文档 ID（reference 类型使用） */
  doc_id?: string
  /** 文档标题 */
  title?: string
  /** 文号 */
  doc_number?: string
  /** chunk 索引 */
  chunk_index?: number
  /** 相关度分数 */
  relevance_score?: number
  /** 图谱节点（graph 类型使用） */
  nodes?: unknown[]
  /** 图谱边（graph 类型使用） */
  edges?: unknown[]
  /** SSE event 字段（由 useSSE 内部附加） */
  _event?: string
  /** 阶段标识（progress 类型使用） */
  stage?: string
  /** 状态（progress 类型使用） */
  status?: string
  /** 发现/冲突/开放问题等结构化字段 */
  strength?: string
  severity?: string
  source_doc_ids?: string[]
  question?: string
  reason?: string
  summary?: string
  /** 章节相关字段 */
  section_title?: string
  /** 研究计划相关 */
  plan?: Record<string, unknown>
  /** 推荐下一步（数组） */
  items?: string[]
  /** 允许其他后端未来可能扩展的字段 */
  [key: string]: unknown
}

/** SSE 连接错误 */
export interface SSEError {
  message: string
  name?: string
}
