Files
zeropost-tool/app/api/admin/autogen/route.js
T
Ник (Claude) 06340ab24e feat: AdminAutogen — blog autogeneration UI
AdminAutogen.js для каждой категории (ai-tools, ai-dev, automation, cybersec):
  - Toggle вкл/выкл + статус (статей за 7д, тем в банке, время след.запуска)
  - Настройки: статей/день, час, минута + кнопка Сохранить
  - Кнопка Запустить прямо сейчас (фоновая генерация)
  - Последний/следующий запуск с датами
Очередь тем: добавить тему с категорией и приоритетом, удалить
AdminPanel: раздел Автогенерация с BookOpen иконкой
API routes: /api/admin/autogen, /[category], /[category]/run, /queue/[id]
2026-06-13 10:36:38 +03:00

26 lines
1.1 KiB
JavaScript

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 || '';
const h = (uid) => ({ 'x-internal-secret': ENGINE_SECRET, 'x-user-id': String(uid) });
export async function GET() {
const user = await requireUser();
if (!user?.isAdmin) return NextResponse.json({ error: 'Forbidden' }, { status: 403 });
const res = await fetch(`${ENGINE_URL}/api/admin/autogen`, { headers: h(user.id), cache: 'no-store' });
return NextResponse.json(await res.json());
}
export async function POST(req) {
const user = await requireUser();
if (!user?.isAdmin) return NextResponse.json({ error: 'Forbidden' }, { status: 403 });
const body = await req.json();
const res = await fetch(`${ENGINE_URL}/api/admin/autogen/queue`, {
method: 'POST',
headers: { ...h(user.id), 'Content-Type': 'application/json' },
body: JSON.stringify(body),
});
return NextResponse.json(await res.json(), { status: res.status });
}