/**
 * 题库模块监控埋点接口。
 *
 * 预留关键操作埋点接口，当前为空实现（no-op）。
 * 接入监控系统时，替换 `trackQuestionEvent` 的实现即可，
 * 无需修改调用方代码。
 */

/** 题库操作事件类型 */
export type QuestionEventType =
  | "question:create"
  | "question:update"
  | "question:delete"
  | "question:search"
  | "question:filter_cascade"

/** 埋点事件载荷 */
export interface QuestionEventPayload {
  /** 事件类型 */
  type: QuestionEventType
  /** 题目 ID（创建/更新/删除时） */
  questionId?: string
  /** 题型 */
  questionType?: string
  /** 难度 */
  difficulty?: number
  /** 搜索关键词（搜索时） */
  searchQuery?: string
  /** 筛选条件（筛选时） */
  filters?: Record<string, unknown>
  /** 时间戳 */
  timestamp: number
}

/**
 * 埋点函数（no-op 实现）。
 *
 * 接入监控系统时替换此函数实现，例如：
 * ```ts
 * export function trackQuestionEvent(payload: QuestionEventPayload): void {
 *   analytics.track("question_event", payload)
 * }
 * ```
 */
export function trackQuestionEvent(payload: QuestionEventPayload): void {
  // no-op: 预留接口，接入监控系统时替换实现
  if (process.env.NODE_ENV === "development") {
    console.debug("[trackQuestionEvent]", payload)
  }
}

/** 便捷方法：记录创建题目事件 */
export function trackQuestionCreated(questionId: string, questionType: string, difficulty: number): void {
  trackQuestionEvent({
    type: "question:create",
    questionId,
    questionType,
    difficulty,
    timestamp: Date.now(),
  })
}

/** 便捷方法：记录更新题目事件 */
export function trackQuestionUpdated(questionId: string, questionType: string, difficulty: number): void {
  trackQuestionEvent({
    type: "question:update",
    questionId,
    questionType,
    difficulty,
    timestamp: Date.now(),
  })
}

/** 便捷方法：记录删除题目事件 */
export function trackQuestionDeleted(questionId: string): void {
  trackQuestionEvent({
    type: "question:delete",
    questionId,
    timestamp: Date.now(),
  })
}

/** 便捷方法：记录搜索事件 */
export function trackQuestionSearched(searchQuery: string): void {
  trackQuestionEvent({
    type: "question:search",
    searchQuery,
    timestamp: Date.now(),
  })
}
