/** * V3 Dify Area Dataset API 模块 * * 提供地区-知识库绑定管理接口 */ import { get, post, put, del } from '~/api/axios-client'; // ==================== Type Definitions ==================== export interface AreaDataset { id: number; area: string; dataset_id: string; dataset_name: string; dataset_description?: string; is_default: boolean; is_public: boolean; sort_order: number; status: number; created_at: string; updated_at: string; } export interface MyDatasetsResponse { code: number; message: string; data: { data: AreaDataset[]; total: number; user_area: string; user_role: string; }; } export interface AllDatasetsResponse { code: number; message: string; data: { data: AreaDataset[]; total: number; page: number; page_size: number; has_more: boolean; }; } export interface AreasResponse { code: number; message: string; data: { data: string[]; }; } export interface CreateDatasetRequest { area: string; dataset_name: string; dataset_description?: string; is_default?: boolean; is_public?: boolean; sort_order?: number; } export interface UpdateDatasetRequest { dataset_name?: string; dataset_description?: string; is_default?: boolean; is_public?: boolean; sort_order?: number; status?: number; } export interface ApiResponse { code: number; message: string; data: T; } // ==================== API Functions ==================== const API_BASE = '/api/v3/dify/area-datasets'; /** * 获取当前用户可访问的知识库列表 * 权限: dify:dataset:read */ export async function getMyDatasets(): Promise { const response = await get(`${API_BASE}/my`); return response.data!; } /** * 获取所有知识库绑定列表(管理员) * 权限: dify:dataset:manage */ export async function getAllDatasets(params: { area?: string; only_enabled?: boolean; page?: number; page_size?: number; }): Promise { const queryParams: Record = {}; if (params.area) queryParams.area = params.area; if (params.only_enabled !== undefined) queryParams.only_enabled = params.only_enabled; if (params.page) queryParams.page = params.page; if (params.page_size) queryParams.page_size = params.page_size; const response = await get(API_BASE, queryParams); return response.data!; } /** * 获取可用地区列表(管理员) * 权限: dify:dataset:manage */ export async function getAvailableAreas(): Promise { const response = await get(`${API_BASE}/areas`); return response.data?.data || []; } /** * 创建知识库绑定(管理员) * 权限: dify:dataset:manage */ export async function createDatasetBinding( data: CreateDatasetRequest ): Promise> { const response = await post>(API_BASE, data); return response.data!; } /** * 更新知识库绑定(管理员) * 权限: dify:dataset:manage */ export async function updateDatasetBinding( id: number, data: UpdateDatasetRequest ): Promise> { const response = await put>(`${API_BASE}/${id}`, data); return response.data!; } /** * 删除知识库绑定(管理员) * 权限: dify:dataset:manage */ export async function deleteDatasetBinding(id: number): Promise> { const response = await del>(`${API_BASE}/${id}`); return response.data!; }