import { apiRequest, ApiResponse } from './api-utils'; export interface DashboardSummary { projectTotal: number; projectActive: number; projectDisabled: number; deviceTotal: number; deviceOnline: number; deviceOffline: number; customerTotal: number; tokenBalanceTotal?: number; contentLibraryTotal?: number; } export interface ProjectOverviewRow { id: number; companyId: number; name: string; status: number; account: string; phone: string; username?: string; deviceCount: number; deviceOnline: number; customerCount: number; subUserCount: number; health: 'ok' | 'warn' | 'error'; createTime: string; } export async function getDashboardOverview( page = 1, limit = 10, keyword = '' ): Promise< ApiResponse<{ summary: DashboardSummary; projects: { list: ProjectOverviewRow[]; total: number; page: number; limit: number }; }> > { const params = new URLSearchParams({ page: String(page), limit: String(limit) }); if (keyword) params.append('keyword', keyword); return apiRequest(`/dashboard/overview?${params.toString()}`); } export async function getUnifiedAccounts(projectId: number): Promise> { return apiRequest(`/company/accounts/${projectId}`); } /* ============ 工作手机对接方案 A/B(§一) ============ */ export interface WorkphoneProviderConfig { companyId: number; provider: 'workphone_sdk' | 's2_legacy'; providerLabel: string; s2BaseUrl: string; options: { code: string; label: string; desc: string }[]; } export async function getWorkphoneProvider(projectId: number): Promise> { return apiRequest(`/company/workphone-provider?projectId=${projectId}`); } export async function setWorkphoneProvider(payload: { projectId: number; provider: 'workphone_sdk' | 's2_legacy'; s2BaseUrl?: string; }): Promise> { return apiRequest('/company/workphone-provider', 'POST', payload); } export async function saveUnifiedAccounts(payload: { projectId: number; scope: 'master' | 'sub'; userId?: number; account?: string; username?: string; phone?: string; password?: string; status?: number; typeId?: number; }): Promise> { return apiRequest('/company/accounts/save', 'POST', payload); }