// Admin Activity Module (ESM) // Depends on globals: axios, window.API_BASE, window.authToken function escapeHtml(text) { if (!text) return '-'; const div = document.createElement('div'); div.textContent = text; return div.innerHTML; } async function populateActivityUserSelect() { try { const resp = await axios.get(`${window.API_BASE}/admin/users`, { headers: { Authorization: `Bearer ${window.authToken}` } }); const payload = resp.data || {}; const users = Array.isArray(payload.items) ? payload.items : []; const activitySelect = document.getElementById('activityUserId'); if (activitySelect) { activitySelect.innerHTML = '' + users.map(u => ``).join(''); } } catch (e) { console.error('Failed to load users for activity:', e); } } function getActionBadgeClass(action) { const classes = { 'document_create': 'bg-blue-100 text-blue-800', 'document_delete': 'bg-red-100 text-red-800', 'ocr': 'bg-purple-100 text-purple-800', 'translate': 'bg-green-100 text-green-800' }; return classes[action] || 'bg-gray-100 text-gray-800'; } function formatActionName(action) { const names = { 'document_create': '创建文档', 'document_delete': '删除文档', 'ocr': 'OCR 处理', 'translate': '翻译' }; return names[action] || action; } function formatMetadata(metadata) { if (!metadata) return '-'; if (typeof metadata === 'string') return metadata; const obj = typeof metadata === 'object' ? metadata : {}; const parts = []; if (obj.fileName) parts.push(`文件: ${escapeHtml(obj.fileName)}`); if (obj.fileType) parts.push(`类型: ${escapeHtml(obj.fileType)}`); return parts.length > 0 ? parts.join(', ') : escapeHtml(JSON.stringify(obj).substring(0, 50)); } async function loadUserActivity() { const userId = document.getElementById('activityUserId')?.value; const limit = document.getElementById('activityLimit')?.value || '50'; const tbody = document.getElementById('activityLogsList'); if (!tbody) return; if (!userId) { tbody.innerHTML = `