/** * V3 Dify Area Dataset API 模块 * * 提供地区-知识库绑定管理接口 */ import { request } 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_id: 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 request.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 = new URLSearchParams(); if (params.area) queryParams.append('area', params.area); if (params.only_enabled !== undefined) queryParams.append('only_enabled', String(params.only_enabled)); if (params.page) queryParams.append('page', String(params.page)); if (params.page_size) queryParams.append('page_size', String(params.page_size)); const response = await request.get( `${API_BASE}?${queryParams.toString()}` ); return response.data; } /** * 获取可用地区列表(管理员) * 权限: dify:dataset:manage */ export async function getAvailableAreas(): Promise { const response = await request.get(`${API_BASE}/areas`); return response.data.data; } /** * 创建知识库绑定(管理员) * 权限: dify:dataset:manage */ export async function createDatasetBinding( data: CreateDatasetRequest ): Promise> { const response = await request.post(`${API_BASE}`, data); return response.data; } /** * 更新知识库绑定(管理员) * 权限: dify:dataset:manage */ export async function updateDatasetBinding( id: number, data: UpdateDatasetRequest ): Promise> { const response = await request.put(`${API_BASE}/${id}`, data); return response.data; } /** * 删除知识库绑定(管理员) * 权限: dify:dataset:manage */ export async function deleteDatasetBinding(id: number): Promise> { const response = await request.delete(`${API_BASE}/${id}`); return response.data; }