- session: set_tenant use bound param (SQL injection fix)
- health: text('SELECT 1'), REDIS_URL from config
- deps: re-export get_db from session, use settings.ENABLE_DEV_AUTH (default False)
- routes: all get_db from app.api.deps; conftest overrides deps.get_db
- main: register exception handlers from app.api.exceptions
- next.config: enable ESLint and TypeScript checks
- .eslintrc: drop @typescript-eslint/recommended; fix no-console (logger, ws-client, regulations)
- backend/.env.example added
- frontend: export apiFetch; dashboard, profile, settings, risks use api-client
- docs/ANALYSIS_AND_RECOMMENDATIONS.md
Co-authored-by: Cursor <cursoragent@cursor.com>
45 lines
2.0 KiB
TypeScript
45 lines
2.0 KiB
TypeScript
export const dynamic = "force-dynamic";
|
||
import { NextResponse } from 'next/server';
|
||
import { logInfo } from '@/lib/logger';
|
||
|
||
// Эндпоинт для обновления нормативных документов
|
||
// Должен вызываться автоматически раз в месяц через cron job или scheduled task
|
||
export async function POST(request: Request) {
|
||
try {
|
||
const { source } = await request.json().catch(() => ({}));
|
||
|
||
logInfo(`Начато обновление нормативных документов для источника: ${source || 'все'}`);
|
||
|
||
// В реальном приложении здесь будет:
|
||
// 1. Загрузка документов с официальных сайтов (ICAO, EASA, FAA, МАК, АРМАК)
|
||
// 2. Парсинг и извлечение актуальной информации
|
||
// 3. Сохранение в базу данных
|
||
// 4. Версионирование документов
|
||
|
||
const updateResults = {
|
||
timestamp: new Date().toISOString(),
|
||
sources: [
|
||
{ name: 'ICAO', status: 'updated', documents: 19 },
|
||
{ name: 'EASA', status: 'updated', documents: 15 },
|
||
{ name: 'FAA', status: 'updated', documents: 12 },
|
||
{ name: 'MAK', status: 'updated', documents: 8 },
|
||
{ name: 'ARMAC', status: 'updated', documents: 10 },
|
||
{ name: 'RUSSIAN_RULES', status: 'updated', documents: 25 },
|
||
{ name: 'AIR_CODE', status: 'updated', documents: 1 },
|
||
],
|
||
};
|
||
|
||
return NextResponse.json({
|
||
success: true,
|
||
message: 'Нормативные документы успешно обновлены',
|
||
results: updateResults,
|
||
});
|
||
} catch (error: any) {
|
||
console.error('Ошибка обновления нормативных документов:', error);
|
||
return NextResponse.json(
|
||
{ error: 'Ошибка при обновлении документов', message: error.message },
|
||
{ status: 500 }
|
||
);
|
||
}
|
||
}
|