/**
 * 知识库 API 服务
 */

import http from './http'

const knowledgeService = {
  /**
   * 上传 md 文件（单个或多个）
   * @param {File[]} files - File 对象数组
   */
  async uploadFiles(files) {
    const formData = new FormData()
    files.forEach(f => formData.append('files', f))
    const resp = await http.post('/knowledge/upload', formData, {
      headers: { 'Content-Type': 'multipart/form-data' },
    })
    return resp.data
  },

  /**
   * 获取知识库条目列表
   * @param {string|null} sourceType - 可选，按 source_type 筛选
   */
  async listItems(sourceType = null) {
    const params = sourceType ? { source_type: sourceType } : {}
    const resp = await http.get('/knowledge/items', { params })
    return resp.data
  },

  /**
   * 删除知识库条目
   * @param {number} id
   */
  async deleteItem(id) {
    const resp = await http.delete(`/knowledge/items/${id}`)
    return resp.data
  },

  /**
   * 获取所有不重复的具体出处（供筛选下拉）
   */
  async listSources() {
    const resp = await http.get('/knowledge/sources')
    return resp.data
  },

  /**
   * 获取按来源分组的树形结构（含「全部」根节点）
   */
  async getGroupedItems() {
    const resp = await http.get('/knowledge/grouped')
    return resp.data
  },

  /**
   * 语义检索：输入一段文字，返回最相关的知识库条目
   * @param {string} queryText - 查询文字
   * @param {number} topK - 返回条数，默认 5
   */
  async searchItems(queryText, topK = 5) {
    const resp = await http.post('/knowledge/search', {
      query: queryText,
      top_k: topK,
    })
    return resp.data
  },
}

export default knowledgeService