diff --git a/.env.example b/.env.example index 0437563..21f156e 100644 --- a/.env.example +++ b/.env.example @@ -1,6 +1,8 @@ ADMIN_USERNAME=admin ADMIN_PASSWORD=сложный-пароль-админки DB_PASSWORD=случайная-длинная-строка +# Лимит размера загружаемого на восстановление бэкапа, МБ (по умолчанию 500) +BACKUP_UPLOAD_LIMIT_MB=500 # Hugging Face token (нужен для закрытых/приватных репозиториев моделей) HUGGINGFACE_TOKEN= diff --git a/docker-compose.yml b/docker-compose.yml index 8bb4dad..61a80c6 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -29,6 +29,7 @@ services: DATABASE_URL: postgres://app:${DB_PASSWORD}@db:5432/whereldo ADMIN_PASSWORD: ${ADMIN_PASSWORD} ADMIN_USERNAME: ${ADMIN_USERNAME:-admin} + BACKUP_UPLOAD_LIMIT_MB: ${BACKUP_UPLOAD_LIMIT_MB:-500} AI_MODEL: ${AI_MODEL:-qwen2.5-1.5b-instruct-q4_k_m.gguf} AI_PROMPT: ${AI_PROMPT:-} NODE_ENV: production diff --git a/public/admin.css b/public/admin.css index feff405..b3e3575 100644 --- a/public/admin.css +++ b/public/admin.css @@ -373,6 +373,12 @@ body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;b .ai-badge-skipped,.ai-badge-reverted{background:rgba(148,163,184,.18);color:var(--muted)} .ai-badge-ic.ai-badge-processing .lucide-loader{animation:spin 1s linear infinite} @keyframes spin{to{transform:rotate(360deg)}} +.ai-details{background:none;border:none;padding:0;margin:0;color:var(--accent);font-size:.8rem;cursor:pointer;white-space:nowrap} +.ai-details:hover{text-decoration:underline} +.ai-detail-block{margin-top:4px} +.ai-detail-block + .ai-detail-block{margin-top:14px} +.ai-detail-label{font-size:.75rem;color:var(--muted);margin-bottom:6px;font-weight:600} +.ai-detail-block pre{margin:0;background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:12px;white-space:pre-wrap;word-break:break-word;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.78rem;line-height:1.45;color:var(--text);max-height:34vh;overflow:auto} .ai-status{margin-top:6px;font-size:.78rem;color:var(--muted)} .ai-queue{margin-top:8px;font-size:.78rem;color:var(--muted)} diff --git a/public/js/worker.js b/public/js/worker.js index 0a74edb..fa50f6c 100644 --- a/public/js/worker.js +++ b/public/js/worker.js @@ -17,6 +17,7 @@ const STATUS_BADGE = { let state = null; let refreshTimer = null; let busy = false; +let recentRows = []; function fmtDur(ms) { if (ms === null || ms === undefined || ms < 0) return '—'; @@ -141,13 +142,15 @@ function renderRecent() { const empty = document.getElementById('recentEmpty'); if (!rows.length) { tbody.innerHTML = ''; empty.style.display = 'block'; return; } empty.style.display = 'none'; - tbody.innerHTML = rows.map(r => ` + recentRows = rows; + tbody.innerHTML = rows.map((r, i) => `
| Проверено | Ученик | Группа | Статус | Изменения | |
|---|---|---|---|---|---|
| Проверено | Ученик | Группа | Статус | Изменения | Детали |