import { getUser } from './auth'; import { apiRequest } from '../services/api-request'; import { legacyWorksheet, memberStats, type MemberPage, } from '../services/member-api'; import { generateUUID } from './uuid'; export interface DownloadLogRecord { _id: string; worksheetId: string; exportId?: string | null; createdAt: string; worksheet?: { _id: string; title: string; subtitle: string; category: string; subcategory: string; path: string; ageMin?: number; ageMax?: number; difficulty?: number; previewImg: string; } | null; } /** 一次成功保存沿用同一个 exportId,服务端保证记录及下载计数幂等。 */ export async function addDownloadLog( worksheetId: string, exportId = generateUUID(), expectedUserId?: string, ): Promise { if (!worksheetId) return false; try { const user = await getUser(); if (expectedUserId && user.id !== expectedUserId) return false; await apiRequest('/me/downloads', { method: 'POST', data: { worksheetId, exportId }, }); return true; } catch { return false; } } export const DOWNLOAD_HISTORY_MAX = 30; export async function getDownloadLogs( page = 1, pageSize = DOWNLOAD_HISTORY_MAX, ): Promise { const result = await apiRequest('/me/downloads', { data: { page, pageSize }, }); return result.items.map((row) => ({ ...row, _id: row.id, worksheet: legacyWorksheet(row.worksheet), })); } export async function getDownloadLogCount(): Promise { return (await memberStats()).downloadCount; }