diff --git a/apps/web/src/pages/admin/index.astro b/apps/web/src/pages/admin/index.astro index c49757e..0a86c73 100644 --- a/apps/web/src/pages/admin/index.astro +++ b/apps/web/src/pages/admin/index.astro @@ -40,7 +40,7 @@ const apiUrl = import.meta.env.PUBLIC_API_URL || "http://localhost:8000"; const sourceLabels: Record = {healthy:"Работает",waiting:"Ожидает",stale:"Устарел",disabled:"Отключён",source_changed:"Изменился",temporarily_limited:"Временно недоступен"}; const sourceRows = (sources as Record[]).map(source => { const state = String(source.status); const safeState = Object.hasOwn(sourceLabels, state) ? state : "waiting"; const cooldown = Number(source.cooldown_seconds ?? 0); const detail = cooldown > 0 ? ` · cooldown ${Math.ceil(cooldown / 60)} мин` : source.backoff_recommended ? " · backoff рекомендован" : ""; return `
  • ${esc(source.name)}${esc(detail)}${sourceLabels[safeState]}
  • `; }).join(""); const importLabels: Record = {running:"Выполняется",success:"Успешно",partial:"Частично",failed:"Ошибка"}; - const importRows = (imports as Record[]).map(run => { const status = String(run.status); const rows = Number(run.rows_seen ?? 0); const result = rows ? ` · ${rows} строк` : ""; return `
  • ${esc(importLabels[status] ?? status)}${esc(result)}
  • `; }).join(""); + const importRows = (imports as Record[]).map(run => { const status = String(run.status); const rows = Number(run.rows_seen ?? 0); const created = Number(run.rows_created ?? 0); const updated = Number(run.rows_updated ?? 0); const result = rows ? ` · ${rows} строк · +${created}/↻${updated}` : ""; const finished = run.finished_at ? ` · завершён ${new Date(String(run.finished_at)).toLocaleString("ru-RU")}` : ""; return `
  • ${esc(importLabels[status] ?? status)}${esc(result)}
  • `; }).join(""); const actionLabels: Record = {approved:"Одобрено",rejected:"Отклонено",pending:"Возвращено на проверку",published:"Опубликовано",mapped:"Сопоставлено",ready:"Готово"}; const typeLabels: Record = {catch_report:"Улов",external_observation:"Внешнее наблюдение"}; const historyRows = (history as Record[]).map(event => { const action = String(event.action); const type = String(event.entity_type); return `
  • ${esc(typeLabels[type] ?? "Запись")} · ${esc(actionLabels[action] ?? action)}${event.reason ? `${esc(event.reason)}` : ""}
  • `; }).join("");