fix: keep working-tree api (chatAPI knowledge_ids compat) but swap adminAPI to full 1346fbb version (+4 post-1346fbb methods) so restored admin pages build without breaking ChatPage
This commit is contained in:
1 parent
36e369044a
commit
77952fd63e
1 file changed
+9
-216
+9
-216
@@ -10,7 +10,7 @@ function getToken(): string | null {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 通用请求方法
|
// 通用请求方法
|
||||||
export async function request<T>(
|
async function request<T>(
|
||||||
endpoint: string,
|
endpoint: string,
|
||||||
options: RequestInit = {}
|
options: RequestInit = {}
|
||||||
): Promise<{ code: number; data: T; message: string }> {
|
): Promise<{ code: number; data: T; message: string }> {
|
||||||
@@ -105,12 +105,12 @@ export const chatAPI = {
|
|||||||
del<any>(`/chat/conversations/${id}`),
|
del<any>(`/chat/conversations/${id}`),
|
||||||
getMessages: (convId: string) =>
|
getMessages: (convId: string) =>
|
||||||
get<any[]>(`/chat/conversations/${convId}/messages`),
|
get<any[]>(`/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<any>(`/chat/conversations/${convId}/messages`, data),
|
post<any>(`/chat/conversations/${convId}/messages`, data),
|
||||||
clearContext: (convId: string) =>
|
clearContext: (convId: string) =>
|
||||||
post<any>(`/chat/conversations/${convId}/clear`),
|
post<any>(`/chat/conversations/${convId}/clear`),
|
||||||
convertToKnowledgeGraph: (convId: string) =>
|
convertToKnowledgeGraph: (convId: string) =>
|
||||||
post<any>(`/chat/conversations/${convId}/to-knowledge-graph/`),
|
post<any>(`/chat/conversations/${convId}/to-knowledge-graph`),
|
||||||
getModels: () => get<any[]>('/chat/models'),
|
getModels: () => get<any[]>('/chat/models'),
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -155,7 +155,7 @@ export const knowledgeAPI = {
|
|||||||
deleteBase: (id: string) => del<any>(`/knowledge/bases/${id}`),
|
deleteBase: (id: string) => del<any>(`/knowledge/bases/${id}`),
|
||||||
getDocuments: (baseId: string) => get<any>(`/knowledge/bases/${baseId}/documents`),
|
getDocuments: (baseId: string) => get<any>(`/knowledge/bases/${baseId}/documents`),
|
||||||
getDocument: (baseId: string, docId: string) => get<any>(`/knowledge/bases/${baseId}/documents/${docId}`),
|
getDocument: (baseId: string, docId: string) => get<any>(`/knowledge/bases/${baseId}/documents/${docId}`),
|
||||||
uploadDocument: (baseId: string, data: any) => post<any>(`/knowledge/bases/${baseId}/documents/`, data),
|
uploadDocument: (baseId: string, data: any) => post<any>(`/knowledge/bases/${baseId}/documents`, data),
|
||||||
deleteDocument: (baseId: string, docId: string) => del<any>(`/knowledge/bases/${baseId}/documents/${docId}`),
|
deleteDocument: (baseId: string, docId: string) => del<any>(`/knowledge/bases/${baseId}/documents/${docId}`),
|
||||||
getDirectories: () => get<any[]>('/knowledge/directories'),
|
getDirectories: () => get<any[]>('/knowledge/directories'),
|
||||||
createDirectory: (data: any) => post<any>('/knowledge/directories', data),
|
createDirectory: (data: any) => post<any>('/knowledge/directories', data),
|
||||||
@@ -723,12 +723,17 @@ export const adminAPI = {
|
|||||||
getTenantStats: () => get<any>('/admin/tenant/stats/overview'),
|
getTenantStats: () => get<any>('/admin/tenant/stats/overview'),
|
||||||
getTenantMembers: (tenantId: string) => get<any>(`/admin/tenant/${tenantId}/members`),
|
getTenantMembers: (tenantId: string) => get<any>(`/admin/tenant/${tenantId}/members`),
|
||||||
createTenant: (params: string) => post<any>(`/admin/tenant/create${params}`),
|
createTenant: (params: string) => post<any>(`/admin/tenant/create${params}`),
|
||||||
|
|
||||||
|
|
||||||
|
// ---- 以下 4 个方法为 1346fbb 之后新增, 保留 ----
|
||||||
toggleAd: (id: string) => put<any>(`/admin/ads/${id}/toggle`),
|
toggleAd: (id: string) => put<any>(`/admin/ads/${id}/toggle`),
|
||||||
getAdminApps: () => get<any[]>('/admin/market/apps'),
|
getAdminApps: () => get<any[]>('/admin/market/apps'),
|
||||||
updateApp: (id: string, data: any) => put<any>(`/admin/market/apps/${id}`, data),
|
updateApp: (id: string, data: any) => put<any>(`/admin/market/apps/${id}`, data),
|
||||||
assignCoupon: (id: string, userId: string) => post<any>(`/admin/market/coupons/${id}/assign`, { user_id: userId }),
|
assignCoupon: (id: string, userId: string) => post<any>(`/admin/market/coupons/${id}/assign`, { user_id: userId }),
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
// ===== AI自进化API =====
|
// ===== AI自进化API =====
|
||||||
export const evolutionAPI = {
|
export const evolutionAPI = {
|
||||||
// 驾驶舱面板
|
// 驾驶舱面板
|
||||||
@@ -798,216 +803,4 @@ export const evolutionAPI = {
|
|||||||
return get<import('@/types').EvolutionReport[]>(`/evolution/reports${qs}`);
|
return get<import('@/types').EvolutionReport[]>(`/evolution/reports${qs}`);
|
||||||
},
|
},
|
||||||
getReportDetail: (reportId: string) => get<import('@/types').EvolutionReport>(`/evolution/reports/${reportId}`),
|
getReportDetail: (reportId: string) => get<import('@/types').EvolutionReport>(`/evolution/reports/${reportId}`),
|
||||||
|
|
||||||
|
|
||||||
// Workflow (Phase 3.6)
|
|
||||||
getWorkflows: (params?: Record<string, any>) =>
|
|
||||||
get<any>('/admin/workflows/?' + new URLSearchParams(params || {}).toString()),
|
|
||||||
getWorkflow: (id: string) =>
|
|
||||||
get<any>(`/admin/workflows/${id}`),
|
|
||||||
getWorkflowStats: () =>
|
|
||||||
get<any>('/admin/workflows/stats'),
|
|
||||||
getWorkflowTemplates: () =>
|
|
||||||
get<any>('/admin/workflows/templates'),
|
|
||||||
createWorkflow: (data: any) =>
|
|
||||||
post<any>('/admin/workflows/', data),
|
|
||||||
updateWorkflow: (id: string, data: any) =>
|
|
||||||
put<any>(`/admin/workflows/${id}`, data),
|
|
||||||
deleteWorkflow: (id: string) =>
|
|
||||||
del<any>(`/admin/workflows/${id}`),
|
|
||||||
toggleWorkflow: (id: string, isActive: boolean) =>
|
|
||||||
post<any>(`/admin/workflows/${id}/toggle?is_active=${isActive}`),
|
|
||||||
executeWorkflow: (id: string, inputText: string) =>
|
|
||||||
post<any>(`/admin/workflows/${id}/execute`, { input_text: inputText }),
|
|
||||||
|
|
||||||
|
|
||||||
// Privacy & Local Agent (Phase G5)
|
|
||||||
getPrivacyStats: () => get<any>('/admin/privacy/stats'),
|
|
||||||
getPrivacyConfig: () => get<any>('/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<any>('/admin/privacy/config?' + sp.toString());
|
|
||||||
},
|
|
||||||
switchPrivacyMode: (mode: string) => post<any>('/admin/privacy/switch-mode?mode=' + encodeURIComponent(mode)),
|
|
||||||
getPrivacyLicenses: (params?: any) => {
|
|
||||||
const sp = new URLSearchParams();
|
|
||||||
if (params?.status) sp.append('status', params.status);
|
|
||||||
return get<any>('/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<any>('/admin/privacy/licenses/generate?' + sp.toString());
|
|
||||||
},
|
|
||||||
revokePrivacyLicense: (id: number) => post<any>('/admin/privacy/licenses/' + id + '/revoke'),
|
|
||||||
validatePrivacyLicense: (licenseKey: string) => {
|
|
||||||
const sp = new URLSearchParams();
|
|
||||||
sp.append('license_key', licenseKey);
|
|
||||||
return post<any>('/admin/privacy/licenses/validate?' + sp.toString());
|
|
||||||
},
|
|
||||||
getKbSyncStates: () => get<any>('/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<any>('/admin/privacy/kb-sync/trigger?' + sp.toString());
|
|
||||||
},
|
|
||||||
getLocalAgents: () => get<any>('/admin/privacy/local-agents'),
|
|
||||||
getPrivacyUsageStats: () => get<any>('/admin/privacy/usage/stats'),
|
|
||||||
getBridgeConfig: () => get<any>('/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<any>('/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<any>(`/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<any>(`/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<any>(`/admin/promotion/promotions/${id}${sp.toString() ? `?${sp.toString()}` : ''}`);
|
|
||||||
},
|
|
||||||
deletePromotion: (id: string) => del<any>(`/admin/promotion/promotions/${id}`),
|
|
||||||
togglePromotion: (id: string) => post<any>(`/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<any>(`/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<any>(`/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<any>(`/admin/promotion/rewards${sp.toString() ? `?${sp.toString()}` : ''}`);
|
|
||||||
},
|
|
||||||
approveReward: (id: string) => post<any>(`/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<any>(`/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<any>(`/admin/promotion/leaderboard${sp.toString() ? `?${sp.toString()}` : ''}`);
|
|
||||||
},
|
|
||||||
regenerateReferralCode: (id: string) => post<any>(`/admin/promotion/referral-links/${id}/regenerate`),
|
|
||||||
getMyReferrals: () => get<any>('/admin/promotion/my-referrals'),
|
|
||||||
getMyRewards: () => get<any>('/admin/promotion/my-rewards'),
|
|
||||||
|
|
||||||
// 成就系统
|
|
||||||
getAchievements: (params?: string) => get<any>(`/admin/achievement/achievements${params || ''}`),
|
|
||||||
getAchievementDetail: (id: string) => get<any>(`/admin/achievement/achievements/${id}`),
|
|
||||||
createAchievement: (params: string) => post<any>(`/admin/achievement/achievements${params}`),
|
|
||||||
updateAchievement: (id: string, params: string) => put<any>(`/admin/achievement/achievements/${id}${params}`),
|
|
||||||
deleteAchievement: (id: string) => del<any>(`/admin/achievement/achievements/${id}`),
|
|
||||||
getUserAchievements: () => get<any>('/admin/achievement/user/achievements'),
|
|
||||||
claimAchievementReward: (id: string) => post<any>(`/admin/achievement/user/achievements/${id}/claim`),
|
|
||||||
checkAchievementProgress: () => post<any>('/admin/achievement/check-progress'),
|
|
||||||
getAchievementLeaderboard: (params?: string) => get<any>(`/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<any>(`/admin/tenant/list${sp.toString() ? `?${sp.toString()}` : ''}`);
|
|
||||||
},
|
|
||||||
createTenant: (params: string) => post<any>(`/admin/tenant/create${params}`),
|
|
||||||
getTenantDetail: (id: string) => get<any>(`/admin/tenant/${id}`),
|
|
||||||
updateTenant: (id: string, params: string) => put<any>(`/admin/tenant/${id}${params}`),
|
|
||||||
deleteTenant: (id: string) => del<any>(`/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<any>(`/admin/tenant/${tenantId}/members?${sp.toString()}`);
|
|
||||||
},
|
|
||||||
addTenantMember: (tenantId: string, params: string) => post<any>(`/admin/tenant/${tenantId}/members/add${params}`),
|
|
||||||
updateTenantMember: (tenantId: string, memberId: string, params: string) => put<any>(`/admin/tenant/${tenantId}/members/${memberId}${params}`),
|
|
||||||
removeTenantMember: (tenantId: string, memberId: string) => del<any>(`/admin/tenant/${tenantId}/members/${memberId}`),
|
|
||||||
getTenantQuotas: (tenantId: string) => get<any>(`/admin/tenant/${tenantId}/quotas`),
|
|
||||||
updateTenantQuota: (tenantId: string, params: string) => put<any>(`/admin/tenant/${tenantId}/quotas${params}`),
|
|
||||||
getTenantInvitations: (tenantId: string) => get<any>(`/admin/tenant/${tenantId}/invitations`),
|
|
||||||
createTenantInvitation: (tenantId: string, params: string) => post<any>(`/admin/tenant/${tenantId}/invitations${params}`),
|
|
||||||
getTenantStats: () => get<any>('/admin/tenant/stats/overview'),
|
|
||||||
|
|
||||||
// 计费与支付
|
|
||||||
getBillingRules: (page?: number) => get<any>(`/admin/billing/rules?page=${page || 1}&page_size=100`),
|
|
||||||
createBillingRule: (params: string) => post<any>(`/admin/billing/rules/create${params}`),
|
|
||||||
updateBillingRule: (id: string, params: string) => put<any>(`/admin/billing/rules/${id}${params}`),
|
|
||||||
deleteBillingRule: (id: string) => del<any>(`/admin/billing/rules/${id}`),
|
|
||||||
getBillingPackages: () => get<any>('/admin/billing/packages'),
|
|
||||||
createBillingPackage: (params: string) => post<any>(`/admin/billing/packages/create${params}`),
|
|
||||||
updateBillingPackage: (id: string, params: string) => put<any>(`/admin/billing/packages/${id}${params}`),
|
|
||||||
deleteBillingPackage: (id: string) => del<any>(`/admin/billing/packages/${id}`),
|
|
||||||
getBillingTransactions: (page?: number) => get<any>(`/admin/billing/transactions?page=${page || 1}&page_size=20`),
|
|
||||||
getInvoices: (page?: number) => get<any>(`/admin/billing/invoices?page=${page || 1}&page_size=20`),
|
|
||||||
generateInvoice: (params: string) => post<any>(`/admin/billing/invoices/generate${params}`),
|
|
||||||
getPaymentConfigs: () => get<any>('/admin/billing/payment-configs'),
|
|
||||||
updatePaymentConfig: (id: string, params: string) => put<any>(`/admin/billing/payment-configs/${id}${params}`),
|
|
||||||
getBillingStats: () => get<any>('/admin/billing/stats/overview'),
|
|
||||||
|
|
||||||
// 数据分析
|
|
||||||
getAnalyticsOverview: (days?: number) => get<any>(`/admin/analytics/overview?days=${days || 30}`),
|
|
||||||
getAnalyticsApiTrends: (days?: number) => get<any>(`/admin/analytics/trends/api-calls?days=${days || 7}`),
|
|
||||||
getAnalyticsTokenTrends: (days?: number) => get<any>(`/admin/analytics/trends/tokens?days=${days || 7}`),
|
|
||||||
getAnalyticsUserTrends: (days?: number) => get<any>(`/admin/analytics/trends/users?days=${days || 30}`),
|
|
||||||
getAnalyticsRevenueTrends: (days?: number) => get<any>(`/admin/analytics/trends/revenue?days=${days || 30}`),
|
|
||||||
getAnalyticsModelUsage: (days?: number) => get<any>(`/admin/analytics/models/usage?days=${days || 30}`),
|
|
||||||
getAnalyticsDashboards: () => get<any>('/admin/analytics/dashboards'),
|
|
||||||
createAnalyticsDashboard: (params: string) => post<any>(`/admin/analytics/dashboards/create${params}`),
|
|
||||||
deleteAnalyticsDashboard: (id: string) => del<any>(`/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<any>(`/admin/analytics/events${sp.toString() ? `?${sp.toString()}` : ''}`);
|
|
||||||
},
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
// ===== 前台用户个人微信 (iLink 协议 / 微信 ClawBot 插件) =====
|
|
||||||
export const imUserAPI = {
|
|
||||||
getStatus: () => get<any>('/im/wechat/status'),
|
|
||||||
qrcode: () => post<any>('/im/wechat/qrcode'),
|
|
||||||
qrcodeStatus: (qrcode: string) => post<any>(`/im/wechat/qrcode/status?qrcode=${encodeURIComponent(qrcode)}`),
|
|
||||||
disconnect: () => post<any>('/im/wechat/disconnect'),
|
|
||||||
history: () => get<any>('/im/wechat/history'),
|
|
||||||
};
|
};
|
||||||
Reference in new issue
Block a user