feat: AdminLogs — error log viewer
AdminLogs.js:
Топ-5 частых ошибок с прогресс-баром
Фильтр по источнику (все/генерация/AI/публикация)
Список с раскрываемыми карточками:
- Левая граница цветом по типу (timeout/auth/model/other)
- Краткое и полное описание ошибки
- Контекстные подсказки (ссылка на настройки, объяснение причины)
Классификация: Таймаут/Rate limit/Модель/Пустой ответ/Сеть/Авторизация
AdminPanel: раздел Логи ошибок с AlertTriangle иконкой
API route: /api/admin/logs
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
import { NextResponse } from 'next/server';
|
||||
import { requireUser } from '@/lib/session';
|
||||
|
||||
const ENGINE_URL = process.env.ENGINE_URL || 'http://127.0.0.1:3030';
|
||||
const ENGINE_SECRET = process.env.ENGINE_SECRET || '';
|
||||
|
||||
export async function GET(req) {
|
||||
const user = await requireUser();
|
||||
if (!user?.isAdmin) return NextResponse.json({ error: 'Forbidden' }, { status: 403 });
|
||||
const { searchParams } = new URL(req.url);
|
||||
const res = await fetch(
|
||||
`${ENGINE_URL}/api/admin/logs?${searchParams}`,
|
||||
{
|
||||
headers: { 'x-internal-secret': ENGINE_SECRET, 'x-user-id': String(user.id) },
|
||||
cache: 'no-store',
|
||||
}
|
||||
);
|
||||
return NextResponse.json(await res.json());
|
||||
}
|
||||
Reference in New Issue
Block a user