diff --git a/frontend/src/api/index.ts b/frontend/src/api/index.ts index 7fa162e..ecf4892 100644 --- a/frontend/src/api/index.ts +++ b/frontend/src/api/index.ts @@ -10,7 +10,7 @@ function getToken(): string | null { } // 通用请求方法 -export async function request( +async function request( endpoint: string, options: RequestInit = {} ): Promise<{ code: number; data: T; message: string }> { @@ -105,12 +105,12 @@ export const chatAPI = { del(`/chat/conversations/${id}`), getMessages: (convId: string) => get(`/chat/conversations/${convId}/messages`), - sendMessage: (convId: string, data: { content: string; model_id?: string; agent_ids?: string[]; skill_ids?: string[]; knowledge_base_ids?: string[]; use_tools?: boolean }) => + sendMessage: (convId: string, data: { content: string; model_id?: string; agent_ids?: string[]; skill_ids?: string[]; knowledge_ids?: string[]; use_tools?: boolean }) => post(`/chat/conversations/${convId}/messages`, data), clearContext: (convId: string) => post(`/chat/conversations/${convId}/clear`), convertToKnowledgeGraph: (convId: string) => - post(`/chat/conversations/${convId}/to-knowledge-graph/`), + post(`/chat/conversations/${convId}/to-knowledge-graph`), getModels: () => get('/chat/models'), }; @@ -155,7 +155,7 @@ export const knowledgeAPI = { deleteBase: (id: string) => del(`/knowledge/bases/${id}`), getDocuments: (baseId: string) => get(`/knowledge/bases/${baseId}/documents`), getDocument: (baseId: string, docId: string) => get(`/knowledge/bases/${baseId}/documents/${docId}`), - uploadDocument: (baseId: string, data: any) => post(`/knowledge/bases/${baseId}/documents/`, data), + uploadDocument: (baseId: string, data: any) => post(`/knowledge/bases/${baseId}/documents`, data), deleteDocument: (baseId: string, docId: string) => del(`/knowledge/bases/${baseId}/documents/${docId}`), getDirectories: () => get('/knowledge/directories'), createDirectory: (data: any) => post('/knowledge/directories', data), @@ -723,12 +723,17 @@ export const adminAPI = { getTenantStats: () => get('/admin/tenant/stats/overview'), getTenantMembers: (tenantId: string) => get(`/admin/tenant/${tenantId}/members`), createTenant: (params: string) => post(`/admin/tenant/create${params}`), + + + // ---- 以下 4 个方法为 1346fbb 之后新增, 保留 ---- toggleAd: (id: string) => put(`/admin/ads/${id}/toggle`), getAdminApps: () => get('/admin/market/apps'), updateApp: (id: string, data: any) => put(`/admin/market/apps/${id}`, data), assignCoupon: (id: string, userId: string) => post(`/admin/market/coupons/${id}/assign`, { user_id: userId }), }; + + // ===== AI自进化API ===== export const evolutionAPI = { // 驾驶舱面板 @@ -798,216 +803,4 @@ export const evolutionAPI = { return get(`/evolution/reports${qs}`); }, getReportDetail: (reportId: string) => get(`/evolution/reports/${reportId}`), - - - // Workflow (Phase 3.6) - getWorkflows: (params?: Record) => - get('/admin/workflows/?' + new URLSearchParams(params || {}).toString()), - getWorkflow: (id: string) => - get(`/admin/workflows/${id}`), - getWorkflowStats: () => - get('/admin/workflows/stats'), - getWorkflowTemplates: () => - get('/admin/workflows/templates'), - createWorkflow: (data: any) => - post('/admin/workflows/', data), - updateWorkflow: (id: string, data: any) => - put(`/admin/workflows/${id}`, data), - deleteWorkflow: (id: string) => - del(`/admin/workflows/${id}`), - toggleWorkflow: (id: string, isActive: boolean) => - post(`/admin/workflows/${id}/toggle?is_active=${isActive}`), - executeWorkflow: (id: string, inputText: string) => - post(`/admin/workflows/${id}/execute`, { input_text: inputText }), - - - // Privacy & Local Agent (Phase G5) - getPrivacyStats: () => get('/admin/privacy/stats'), - getPrivacyConfig: () => get('/admin/privacy/config'), - updatePrivacyConfig: (params: any) => { - const sp = new URLSearchParams(); - Object.entries(params).forEach(([k, v]) => { if (v != null) sp.append(k, String(v)); }); - return put('/admin/privacy/config?' + sp.toString()); - }, - switchPrivacyMode: (mode: string) => post('/admin/privacy/switch-mode?mode=' + encodeURIComponent(mode)), - getPrivacyLicenses: (params?: any) => { - const sp = new URLSearchParams(); - if (params?.status) sp.append('status', params.status); - return get('/admin/privacy/licenses' + (sp.toString() ? '?' + sp.toString() : '')); - }, - generateOfflineLicense: (data: any) => { - const sp = new URLSearchParams(); - if (data.agent_id) sp.append('agent_id', data.agent_id); - sp.append('max_offline_days', String(data.max_offline_days || 7)); - return post('/admin/privacy/licenses/generate?' + sp.toString()); - }, - revokePrivacyLicense: (id: number) => post('/admin/privacy/licenses/' + id + '/revoke'), - validatePrivacyLicense: (licenseKey: string) => { - const sp = new URLSearchParams(); - sp.append('license_key', licenseKey); - return post('/admin/privacy/licenses/validate?' + sp.toString()); - }, - getKbSyncStates: () => get('/admin/privacy/kb-sync'), - triggerKbSync: (kbId: number, direction: string) => { - const sp = new URLSearchParams(); - sp.append('knowledge_base_id', String(kbId)); - sp.append('sync_direction', direction); - return post('/admin/privacy/kb-sync/trigger?' + sp.toString()); - }, - getLocalAgents: () => get('/admin/privacy/local-agents'), - getPrivacyUsageStats: () => get('/admin/privacy/usage/stats'), - getBridgeConfig: () => get('/admin/privacy/bridge-config'), - - // IM Bot Management (Phase 4) - getImBotStats: () => get('/admin/im-bot/stats'), - getImBotDashboard: () => get('/admin/im-bot/dashboard'), - getImBotChannels: (params?: string) => get(`/admin/im-bot/channels${params || ''}`), - getImBotChannelDetail: (id: string) => get(`/admin/im-bot/channels/${id}`), - testImBotChannel: (id: string) => post(`/admin/im-bot/channels/${id}/test`), - activateImBotChannel: (id: string) => post(`/admin/im-bot/channels/${id}/activate`), - deactivateImBotChannel: (id: string) => post(`/admin/im-bot/channels/${id}/deactivate`), - getImBotRoutes: (params?: string) => get(`/admin/im-bot/routes${params || ''}`), - createImBotRoute: (params: string) => post(`/admin/im-bot/routes${params}`), - deleteImBotRoute: (id: string) => del(`/admin/im-bot/routes/${id}`), - // 个人微信(iLink 协议)原生适配器 - getWechatConfig: () => get('/admin/im-bot/wechat'), - wechatQrcode: () => post('/admin/im-bot/wechat/qrcode'), - wechatQrcodeStatus: (params: string) => post(`/admin/im-bot/wechat/qrcode/status${params}`), - getWechatStatus: () => get('/admin/im-bot/wechat/status'), - disconnectWechat: () => post('/admin/im-bot/wechat/disconnect'), - getImBotPlatforms: () => get('/admin/im-bot/platforms'), - getImBotWebhookUrl: (platform: string) => get(`/admin/im-bot/webhook-url/${platform}`), - getImBotMessages: (params?: string) => get(`/admin/im-bot/messages${params || ''}`), - imBotQuickSetup: (params: string) => post(`/admin/im-bot/quick-setup${params}`), - - // 推广系统 - getPromotionStats: () => get('/admin/promotion/stats'), - getPromotions: (params?: any) => { - const sp = new URLSearchParams(); - if (params) Object.entries(params).forEach(([k, v]) => { if (v !== undefined && v !== null && v !== '') sp.set(k, String(v)); }); - return get(`/admin/promotion/promotions${sp.toString() ? `?${sp.toString()}` : ''}`); - }, - createPromotion: (params: any) => { - const sp = new URLSearchParams(); - Object.entries(params).forEach(([k, v]) => { if (v !== undefined && v !== null && v !== '') sp.set(k, String(v)); }); - return post(`/admin/promotion/promotions${sp.toString() ? `?${sp.toString()}` : ''}`); - }, - updatePromotion: (id: string, params: any) => { - const sp = new URLSearchParams(); - Object.entries(params).forEach(([k, v]) => { if (v !== undefined && v !== null && v !== '') sp.set(k, String(v)); }); - return put(`/admin/promotion/promotions/${id}${sp.toString() ? `?${sp.toString()}` : ''}`); - }, - deletePromotion: (id: string) => del(`/admin/promotion/promotions/${id}`), - togglePromotion: (id: string) => post(`/admin/promotion/promotions/${id}/toggle`), - getReferralLinks: (params?: any) => { - const sp = new URLSearchParams(); - if (params) Object.entries(params).forEach(([k, v]) => { if (v) sp.set(k, String(v)); }); - return get(`/admin/promotion/referral-links${sp.toString() ? `?${sp.toString()}` : ''}`); - }, - generateReferralLink: (params: any) => { - const sp = new URLSearchParams(); - Object.entries(params).forEach(([k, v]) => { if (v) sp.set(k, String(v)); }); - return post(`/admin/promotion/referral-links/generate${sp.toString() ? `?${sp.toString()}` : ''}`); - }, - getReferralRewards: (params?: any) => { - const sp = new URLSearchParams(); - if (params) Object.entries(params).forEach(([k, v]) => { if (v) sp.set(k, String(v)); }); - return get(`/admin/promotion/rewards${sp.toString() ? `?${sp.toString()}` : ''}`); - }, - approveReward: (id: string) => post(`/admin/promotion/rewards/${id}/approve`), - markRewardPaid: (id: string, params: any) => { - const sp = new URLSearchParams(); - Object.entries(params).forEach(([k, v]) => { if (v) sp.set(k, String(v)); }); - return post(`/admin/promotion/rewards/${id}/pay${sp.toString() ? `?${sp.toString()}` : ''}`); - }, - getPromotionLeaderboard: (params?: any) => { - const sp = new URLSearchParams(); - if (params) Object.entries(params).forEach(([k, v]) => { if (v) sp.set(k, String(v)); }); - return get(`/admin/promotion/leaderboard${sp.toString() ? `?${sp.toString()}` : ''}`); - }, - regenerateReferralCode: (id: string) => post(`/admin/promotion/referral-links/${id}/regenerate`), - getMyReferrals: () => get('/admin/promotion/my-referrals'), - getMyRewards: () => get('/admin/promotion/my-rewards'), - - // 成就系统 - getAchievements: (params?: string) => get(`/admin/achievement/achievements${params || ''}`), - getAchievementDetail: (id: string) => get(`/admin/achievement/achievements/${id}`), - createAchievement: (params: string) => post(`/admin/achievement/achievements${params}`), - updateAchievement: (id: string, params: string) => put(`/admin/achievement/achievements/${id}${params}`), - deleteAchievement: (id: string) => del(`/admin/achievement/achievements/${id}`), - getUserAchievements: () => get('/admin/achievement/user/achievements'), - claimAchievementReward: (id: string) => post(`/admin/achievement/user/achievements/${id}/claim`), - checkAchievementProgress: () => post('/admin/achievement/check-progress'), - getAchievementLeaderboard: (params?: string) => get(`/admin/achievement/leaderboard${params || ''}`), - - // 多租户管理 - getTenants: (page?: number, keyword?: string, status?: string) => { - const sp = new URLSearchParams(); - if (page) sp.set('page', String(page)); - if (keyword) sp.set('keyword', keyword); - if (status) sp.set('status', status); - sp.set('page_size', '20'); - return get(`/admin/tenant/list${sp.toString() ? `?${sp.toString()}` : ''}`); - }, - createTenant: (params: string) => post(`/admin/tenant/create${params}`), - getTenantDetail: (id: string) => get(`/admin/tenant/${id}`), - updateTenant: (id: string, params: string) => put(`/admin/tenant/${id}${params}`), - deleteTenant: (id: string) => del(`/admin/tenant/${id}`), - getTenantMembers: (tenantId: string, page?: number) => { - const sp = new URLSearchParams(); - sp.set('page', String(page || 1)); - sp.set('page_size', '100'); - return get(`/admin/tenant/${tenantId}/members?${sp.toString()}`); - }, - addTenantMember: (tenantId: string, params: string) => post(`/admin/tenant/${tenantId}/members/add${params}`), - updateTenantMember: (tenantId: string, memberId: string, params: string) => put(`/admin/tenant/${tenantId}/members/${memberId}${params}`), - removeTenantMember: (tenantId: string, memberId: string) => del(`/admin/tenant/${tenantId}/members/${memberId}`), - getTenantQuotas: (tenantId: string) => get(`/admin/tenant/${tenantId}/quotas`), - updateTenantQuota: (tenantId: string, params: string) => put(`/admin/tenant/${tenantId}/quotas${params}`), - getTenantInvitations: (tenantId: string) => get(`/admin/tenant/${tenantId}/invitations`), - createTenantInvitation: (tenantId: string, params: string) => post(`/admin/tenant/${tenantId}/invitations${params}`), - getTenantStats: () => get('/admin/tenant/stats/overview'), - - // 计费与支付 - getBillingRules: (page?: number) => get(`/admin/billing/rules?page=${page || 1}&page_size=100`), - createBillingRule: (params: string) => post(`/admin/billing/rules/create${params}`), - updateBillingRule: (id: string, params: string) => put(`/admin/billing/rules/${id}${params}`), - deleteBillingRule: (id: string) => del(`/admin/billing/rules/${id}`), - getBillingPackages: () => get('/admin/billing/packages'), - createBillingPackage: (params: string) => post(`/admin/billing/packages/create${params}`), - updateBillingPackage: (id: string, params: string) => put(`/admin/billing/packages/${id}${params}`), - deleteBillingPackage: (id: string) => del(`/admin/billing/packages/${id}`), - getBillingTransactions: (page?: number) => get(`/admin/billing/transactions?page=${page || 1}&page_size=20`), - getInvoices: (page?: number) => get(`/admin/billing/invoices?page=${page || 1}&page_size=20`), - generateInvoice: (params: string) => post(`/admin/billing/invoices/generate${params}`), - getPaymentConfigs: () => get('/admin/billing/payment-configs'), - updatePaymentConfig: (id: string, params: string) => put(`/admin/billing/payment-configs/${id}${params}`), - getBillingStats: () => get('/admin/billing/stats/overview'), - - // 数据分析 - getAnalyticsOverview: (days?: number) => get(`/admin/analytics/overview?days=${days || 30}`), - getAnalyticsApiTrends: (days?: number) => get(`/admin/analytics/trends/api-calls?days=${days || 7}`), - getAnalyticsTokenTrends: (days?: number) => get(`/admin/analytics/trends/tokens?days=${days || 7}`), - getAnalyticsUserTrends: (days?: number) => get(`/admin/analytics/trends/users?days=${days || 30}`), - getAnalyticsRevenueTrends: (days?: number) => get(`/admin/analytics/trends/revenue?days=${days || 30}`), - getAnalyticsModelUsage: (days?: number) => get(`/admin/analytics/models/usage?days=${days || 30}`), - getAnalyticsDashboards: () => get('/admin/analytics/dashboards'), - createAnalyticsDashboard: (params: string) => post(`/admin/analytics/dashboards/create${params}`), - deleteAnalyticsDashboard: (id: string) => del(`/admin/analytics/dashboards/${id}`), - getAnalyticsEvents: (params?: any) => { - const sp = new URLSearchParams(); - if (params) Object.entries(params).forEach(([k, v]) => { if (v) sp.set(k, String(v)); }); - return get(`/admin/analytics/events${sp.toString() ? `?${sp.toString()}` : ''}`); - }, - -}; - - -// ===== 前台用户个人微信 (iLink 协议 / 微信 ClawBot 插件) ===== -export const imUserAPI = { - getStatus: () => get('/im/wechat/status'), - qrcode: () => post('/im/wechat/qrcode'), - qrcodeStatus: (qrcode: string) => post(`/im/wechat/qrcode/status?qrcode=${encodeURIComponent(qrcode)}`), - disconnect: () => post('/im/wechat/disconnect'), - history: () => get('/im/wechat/history'), };