import { apiDelete, apiGet, apiPost, compactApiParams } from "@/services/api/request"; import type { Prompt, PromptListResponse } from "@/services/api/prompts"; export type AdminPromptCategory = { category: string; name: string; description: string; file: string; githubUrl: string; remote: boolean; }; export async function fetchAdminPromptCategories(token: string) { return apiGet("/api/admin/prompt-categories", undefined, token); } export async function syncAdminPromptCategory(token: string, category: string) { return apiPost("/api/admin/prompt-categories/sync", { category }, token); } export type AdminPromptQuery = { keyword?: string; category?: string; tag?: string[]; page?: number; pageSize?: number; }; export type AdminAsset = { id: string; title: string; type: "text" | "image" | "video"; coverUrl: string; tags: string[]; category: string; description: string; content: string; url: string; createdAt: string; updatedAt: string; }; export type AdminAssetListResponse = { items: AdminAsset[]; tags: string[]; total: number; }; export async function fetchAdminPrompts(token: string, query: AdminPromptQuery = {}) { return apiGet("/api/admin/prompts", compactApiParams(query), token); } export async function saveAdminPrompt(token: string, prompt: Partial) { return apiPost("/api/admin/prompts", prompt, token); } export async function deleteAdminPrompt(token: string, id: string) { return apiDelete(`/api/admin/prompts/${encodeURIComponent(id)}`, token); } export async function deleteAdminPrompts(token: string, ids: string[]) { return apiPost("/api/admin/prompts/batch-delete", { ids }, token); } export type AdminAssetQuery = { keyword?: string; type?: string; tag?: string[]; page?: number; pageSize?: number; }; export async function fetchAdminAssets(token: string, query: AdminAssetQuery = {}) { return apiGet("/api/admin/assets", compactApiParams(query), token); } export async function saveAdminAsset(token: string, asset: Partial) { return apiPost("/api/admin/assets", asset, token); } export async function deleteAdminAsset(token: string, id: string) { return apiDelete(`/api/admin/assets/${encodeURIComponent(id)}`, token); } export type AdminModelChannel = { protocol: "openai"; name: string; baseUrl: string; apiKey: string; models: string[]; weight: number; enabled: boolean; remark: string; }; export type AdminPublicModelChannelSettings = { availableModels: string[]; defaultModel: string; defaultImageModel: string; defaultVideoModel: string; defaultTextModel: string; systemPrompt: string; allowCustomChannel: boolean; }; export type AdminPublicSettings = { modelChannel: AdminPublicModelChannelSettings; }; export type AdminPrivateSettings = { channels: AdminModelChannel[]; promptSync: { enabled: boolean; cron: string; }; }; export type AdminSettings = { public: AdminPublicSettings; private: AdminPrivateSettings; }; export async function fetchAdminSettings(token: string) { return apiGet("/api/admin/settings", undefined, token); } export async function saveAdminSettings(token: string, settings: AdminSettings) { return apiPost("/api/admin/settings", settings, token); } export type AdminChannelActionRequest = { index?: number; channel: AdminModelChannel; model?: string; }; export async function fetchChannelModels(token: string, payload: AdminChannelActionRequest) { return apiPost("/api/admin/settings/channel-models", payload, token); } export async function testChannelModel(token: string, payload: AdminChannelActionRequest) { return apiPost("/api/admin/settings/channel-test", payload, token); }