- ai_service.py: единый AI-сервис (chat, chat_with_history, analyze_document) - routes/ai.py: POST /api/v1/ai/chat (chat, summarize, extract_risks, classify, translate) - config.py: ANTHROPIC_API_KEY, ANTHROPIC_MODEL - requirements.txt: anthropic>=0.42.0 - api-client.ts: aiApi (chat, summarize, extractRisks) - CSP: connect-src добавлен https://api.anthropic.com - app/api/ai-chat: прокси на бэкенд /api/v1/ai/chat (Anthropic) - legal_agents/llm_client.py: переведён на ai_service (Claude) - AIAccessSettings: только Claude (Sonnet 4, 3 Sonnet, 3 Opus) - k8s, .env.example: OPENAI → ANTHROPIC - package.json: удалена зависимость openai - Документация: OpenAI/GPT заменены на Claude/Anthropic Провайдер: исключительно Anthropic Claude Модель по умолчанию: claude-sonnet-4-20250514 Co-authored-by: Cursor <cursoragent@cursor.com>
5.7 KiB
5.7 KiB
Руководство для разработчиков
Начало работы
Требования
- Node.js 20+
- npm или yarn
- Git
Установка
# Клонирование репозитория
git clone <repository-url>
cd klg_asutk_app
# Установка зависимостей
npm install
# Создание файла окружения
cp .env.example .env.local
# Запуск в режиме разработки
npm run dev
Приложение будет доступно по адресу http://localhost:3000
Структура проекта
klg_asutk_app/
├── app/ # Next.js App Router
│ ├── api/ # API routes
│ ├── dashboard/ # Страницы
│ └── ...
├── components/ # React компоненты
├── lib/ # Утилиты и helpers
│ ├── validation.ts # Схемы валидации (Zod)
│ ├── logger.ts # Логирование (Winston)
│ ├── error-handler.ts # Обработка ошибок
│ ├── sanitize.ts # Санитизация данных
│ └── ...
├── __tests__/ # Unit и Integration тесты
├── e2e/ # E2E тесты (Playwright)
├── docs/ # Документация
└── scripts/ # Скрипты
Разработка
Создание нового API endpoint
- Создайте файл в
app/api/[route]/route.ts - Используйте валидацию из
lib/validation.ts - Используйте обработку ошибок из
lib/error-handler.ts - Добавьте логирование через
lib/logger.ts
Пример:
import { NextRequest, NextResponse } from 'next/server';
import { aircraftSchema } from '@/lib/validation';
import { handleError } from '@/lib/error-handler';
import { rateLimit, getRateLimitIdentifier } from '@/lib/rate-limit';
import { logAudit } from '@/lib/logger';
export async function POST(request: NextRequest) {
try {
// Rate limiting
const identifier = getRateLimitIdentifier(request);
const limitCheck = rateLimit(identifier, 100, 60000);
if (!limitCheck.allowed) {
return NextResponse.json({ error: 'Rate limit exceeded' }, { status: 429 });
}
// Валидация
const body = await request.json();
const validated = aircraftSchema.parse(body);
// Логирование
logAudit('CREATE_AIRCRAFT', 'aircraft', { identifier });
// Обработка
// ...
return NextResponse.json({ success: true });
} catch (error) {
return handleError(error, { path: '/api/aircraft', method: 'POST' });
}
}
Создание нового компонента
- Создайте файл в
components/[ComponentName].tsx - Используйте TypeScript для типизации
- Добавьте обработку ошибок
- Используйте SWR для загрузки данных
Пример:
'use client';
import { useState } from 'react';
import useSWR from 'swr';
import { fetcher } from '@/lib/swr-config';
export default function AircraftList() {
const { data, error, isLoading } = useSWR('/api/aircraft', fetcher);
if (isLoading) return <div>Загрузка...</div>;
if (error) return <div>Ошибка: {error.message}</div>;
return (
<div>
{data?.map(aircraft => (
<div key={aircraft.id}>{aircraft.registrationNumber}</div>
))}
</div>
);
}
Тестирование
Unit тесты
npm run test:unit
Тесты находятся в __tests__/ и используют Jest.
Integration тесты
npm run test:integration
Тесты API endpoints.
E2E тесты
npm run test:e2e
Тесты с использованием Playwright.
Запуск всех тестов
npm test
Линтинг и форматирование
# Проверка линтера
npm run lint
# Автоисправление
npm run lint -- --fix
# Форматирование кода
npm run format
# Проверка форматирования
npm run format:check
Переменные окружения
Создайте файл .env.local:
# API
NEXT_PUBLIC_API_URL=http://localhost:8000/api
NEXT_PUBLIC_USE_MOCK_DATA=false
NEXT_PUBLIC_USE_REGISTRY_DATA=true
# AI (Anthropic Claude)
ANTHROPIC_API_KEY=your-api-key
# Логирование
LOG_LEVEL=info
NODE_ENV=development
Git Workflow
- Создайте ветку от
develop:git checkout -b feature/your-feature - Внесите изменения
- Напишите тесты
- Убедитесь, что все тесты проходят
- Создайте Pull Request
Code Review
Все изменения должны пройти code review перед мерджем в main или develop.
Проверяйте:
- Соответствие стилю кода
- Наличие тестов
- Обработку ошибок
- Безопасность
- Производительность
Деплой
Staging
Автоматический деплой при пуше в develop ветку.
Production
Автоматический деплой при пуше в main ветку после успешного прохождения всех тестов.