// ============================================================
// 日志模块 — 共享类型定义（主进程 + 渲染进程双端使用）
// ============================================================

/** 日志级别 */
export type LogLevel = 'DEBUG' | 'INFO' | 'WARN' | 'ERROR';

/** 日志分类 */
export type LogCategory =
  | 'request'      // HTTP 请求相关
  | 'auth'         // 登录 / Token / 权限
  | 'updater'      // 自动更新
  | 'event'        // 事件总线
  | 'app'          // 应用生命周期
  | 'ui'           // UI 层错误 / 警告
  | 'ipc'          // IPC 通信
  | 'safe-storage'  // 安全存储（safeStorage 加密/解密）
  | 'storage'      // 本地存储（IndexedDB / sql.js / 文件缓存）
  | 'canvas'       // 无限画布 IPC 处理
  | 'canvas-window'; // 画布窗口生命周期

/**
 * 结构化错误快照
 * Error 对象不可 JSON 序列化，提取关键字段保存
 */
export interface LogErrorSnapshot {
  /** 错误名称（Error.name 或 constructor name） */
  name: string;
  /** 错误消息 */
  message: string;
  /** 堆栈信息（可选，按需记录以节省空间） */
  stack?: string;
  /** 原始错误链（cause）的消息摘要 */
  cause?: string;
}

/**
 * 单条日志条目（JSON Lines 中的一行）
 */
export interface LogEntry {
  /** ISO 8601 时间戳（例如 "2026-06-04T10:30:00.123Z"） */
  timestamp: string;
  /** 日志级别 */
  level: LogLevel;
  /** 日志分类 */
  category: LogCategory;
  /** 日志消息（简短描述） */
  message: string;
  /** 日志来源进程 */
  processType: 'main' | 'renderer';
  /** 附加上下文（需 JSON 可序列化） */
  context?: Record<string, unknown>;
  /** 错误快照（仅在 warn / error 级别时填充） */
  error?: LogErrorSnapshot;
}
