drafts.ts 3.08 KB
// src/api/drafts.ts
import { service as request } from "@/utils/request";
import type { AxiosPromise } from "axios";

/**
 * GET /api/drafts/{draftId}
 * 获取草稿详情(下载文件)
 */
export const apiGetDraftById = (draftId: string | number): AxiosPromise =>
  request.get(`/drafts/${draftId}`);

/**
 * PUT /api/drafts/{draftId}
 * 更新草稿文件(标题、内容)
 * @param draftId
 * @param payload
 */
export const apiUpdateDraft = (
  draftId: string | number,
  payload: { title?: string; content?: string },
): AxiosPromise => request.put(`/drafts/${draftId}`, payload);

/**
 * DELETE /api/drafts/{draftId}
 * 删除草稿文件
 */
export const apiDeleteDraft = (draftId: string | number): AxiosPromise =>
  request.delete(`/drafts/${draftId}`);

/**
 * POST /api/drafts/{draftId}/save-to-knowledge
 * 将草稿保存到知识库
 * @param draftId
 * @param payload
 */
export const apiSaveDraftToKnowledge = (
  draftId: string | number,
  payload: { parentId?: number | null; fileName?: string },
): AxiosPromise =>
  request.post(`/drafts/${draftId}/save-to-knowledge`, payload).then((res) => ({
    ...res,
    code: 200,
  }));

/**
 * POST /api/drafts/from-answer/{answerId}
 * 从回答创建草稿文件
 * @param answerId
 * @param payload
 */
export const apiCreateDraftFromAnswer = (
  answerId: string | number,
  payload: { title?: string } = {},
): AxiosPromise => request.post(`/drafts/from-answer/${answerId}`, payload);

/**
 * POST /api/drafts/from-question/{questionId}
 * 从问题创建草稿文件(根据问题关联的回答)
 * @param questionId
 * @param payload
 */
export const apiCreateDraftFromQuestion = (
  questionId: string | number,
  payload: { title?: string } = {},
): AxiosPromise => request.post(`/drafts/from-question/${questionId}`, payload);

/**
 * POST /api/drafts/create
 * 灵活创建草稿文件(支持 questionId 或 answerId)
 * @param payload
 */
export const apiCreateDraftFlexible = (payload: {
  questionId?: number;
  answerId?: number;
  title?: string;
}): AxiosPromise => request.post("/drafts/create", payload);

/**
 * GET /api/drafts
 * 获取当前用户的草稿列表
 */
export const apiListUserDrafts = (): Promise<any> =>
  request.get("/drafts").then((res) => {
    if (res.data) {
      return {
        code: 200,
        data: res.data,
        message: "success",
      };
    }
    return res;
  });

/**
 * GET /api/drafts/check-answer/{answerId}
 * 检查某条回答是否已有草稿
 */
export const apiCheckAnswerDraft = (answerId: string | number): AxiosPromise =>
  request.get(`/drafts/check-answer/${answerId}`);

/**
 * GET /api/drafts/check-question/{questionId}
 * 检查某个问题(对应的回答)是否已有草稿
 */
export const apiCheckQuestionDraft = (
  questionId: string | number,
): AxiosPromise => request.get(`/drafts/check-question/${questionId}`);

/**
 * POST /api/drafts/from-deep-search
 * 从深度检索创建草稿文件
 * @param payload
 */
export const apiCreateDraftFromDeepSearch = (payload: {
  title: string;
  content: string;
}): AxiosPromise => request.post("/drafts/from-deep-search", payload);