import { apiRequest } from './api-request'; import { generateUUID } from '../utils/uuid'; import type { ApiWorksheet } from './content-api'; export interface UserStats { favoriteCount: number; downloadCount: number; totalDownloads: string; } export interface MemberRecord { id: string; worksheetId: string; exportId?: string | null; createdAt: string; worksheet: ApiWorksheet | null; } export interface MemberPage { items: MemberRecord[]; total: number; page: number; pageSize: number; hasNext: boolean; } export const memberStats = () => apiRequest('/me/stats'); /** uploadId 在一次操作中固定;401 重发沿用同一 ID,网络失败不自动重复上传。 */ export async function uploadAsset( filePath: string, purpose: 'avatar' | 'preview', ) { return apiRequest<{ id: string; url: string; mimeType: string; sizeBytes: number; }>( purpose === 'avatar' ? '/me/avatar-upload' : '/admin/assets/preview-upload', { method: 'POST', upload: { filePath, uploadId: generateUUID() } }, ); } export function legacyWorksheet(row: ApiWorksheet | null) { return row ? { ...row, _id: row.id, subcategory: (row as ApiWorksheet & { subcategory?: string | null }) .subcategory || '', tags: (row as ApiWorksheet & { tags?: string[] }).tags || [], previewImg: row.previewImg || '', } : null; }