chore: edit mds

This commit is contained in:
itqop 2025-12-18 11:52:02 +03:00
parent dbbd366953
commit ea94f98e74
11 changed files with 223 additions and 200 deletions

View File

@ -1,6 +1,6 @@
# CLAUDE.md # Developer Guide
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. This file provides detailed technical documentation for developers working with this codebase.
## Project Overview ## Project Overview
@ -293,6 +293,6 @@ See [TESTING.md](TESTING.md) for comprehensive testing guide including:
See [PROJECT_STATUS.md](PROJECT_STATUS.md) for detailed implementation status and TODOs. Key points: See [PROJECT_STATUS.md](PROJECT_STATUS.md) for detailed implementation status and TODOs. Key points:
- Core infrastructure is complete (auth, DB API client, RAG service) - Core infrastructure is complete (auth, DB API client, RAG service)
- All main API endpoints are implemented - All main API endpoints are implemented
- TgBackendInterface is fully implemented (not a stub) - TgBackendInterface is fully implemented
- Frontend integration pending (static/ directory is empty) - 99% test coverage (unit + integration + E2E tests)
- No tests yet (tests/ directory is empty) - Frontend integration complete

View File

@ -7,7 +7,7 @@
## Текущее состояние ## Текущее состояние
### Готово (Backend) ### Готово (Backend)
- Структура FastAPI приложения - Структура FastAPI приложения
- JWT авторизация (8-значный логин) - JWT авторизация (8-значный логин)
- TgBackendInterface (полная реализация с httpx) - TgBackendInterface (полная реализация с httpx)
@ -20,9 +20,9 @@
- `POST /api/v1/query/backend` - последовательные запросы - `POST /api/v1/query/backend` - последовательные запросы
- `POST/GET/DELETE /api/v1/analysis/sessions` - сессии анализа - `POST/GET/DELETE /api/v1/analysis/sessions` - сессии анализа
- Docker setup (Dockerfile, docker-compose.yml) - Docker setup (Dockerfile, docker-compose.yml)
- Документация (README.md, DB_API_CONTRACT.md, CLAUDE.md) - Документация (README.md, DB_API_CONTRACT.md)
### Требуется доделать ### Требуется доделать
- Frontend файлы (перенос из rag-bench-old-version) - Frontend файлы (перенос из rag-bench-old-version)
- API client для frontend - API client для frontend
- Интеграция frontend с новым API - Интеграция frontend с новым API
@ -645,20 +645,20 @@ app.middleware("http")(log_requests)
## Приоритезация задач ## Приоритезация задач
### 🔴 Критично (сделать в первую очередь) ### Критично (сделать в первую очередь)
1. Перенос статических файлов из rag-bench-old-version → `static/` 1. Перенос статических файлов из rag-bench-old-version → `static/`
2. Создание `api-client.js` 2. Создание `api-client.js`
3. Добавление login screen в `index.html` 3. Добавление login screen в `index.html`
4. Переписывание вызовов API в `app.js` 4. Переписывание вызовов API в `app.js`
5. Тестирование auth flow 5. Тестирование auth flow
### 🟡 Важно (сделать после критичного) ### Важно (сделать после критичного)
6. Интеграция Settings UI 6. Интеграция Settings UI
7. Environment selector 7. Environment selector
8. Сохранение и загрузка сессий анализа 8. Сохранение и загрузка сессий анализа
9. Ручное тестирование всех сценариев 9. Ручное тестирование всех сценариев
### 🟢 Желательно (если есть время) ### Желательно (если есть время)
10. Автоматические тесты (pytest) 10. Автоматические тесты (pytest)
11. Production deployment настройка 11. Production deployment настройка
12. Logging middleware 12. Logging middleware

View File

@ -44,7 +44,7 @@ cp rag-bench-old-version/settings.js static/
## Шаг 2: Создание api-client.js ## Шаг 2: Создание api-client.js
См. полную реализацию в [DEVELOPMENT_PLAN.md](DEVELOPMENT_PLAN.md#12-создать-api-client-для-frontend). См. полную реализацию в DEVELOPMENT_PLAN.md (раздел "Создать API client для frontend").
Создать файл `static/api-client.js` с классом `BriefBenchAPI`. Создать файл `static/api-client.js` с классом `BriefBenchAPI`.

View File

@ -1,60 +1,60 @@
# 🚀 Production Readiness Checklist # Production Readiness Checklist
Полная проверка готовности Brief Bench FastAPI к развертыванию в продакшн. Полная проверка готовности Brief Bench FastAPI к развертыванию в продакшн.
## Backend (FastAPI) ## Backend (FastAPI)
### Код и архитектура ### Код и архитектура
- [x] **Все API endpoints реализованы** - [x] **Все API endpoints реализованы**
- Auth: `/api/v1/auth/login` - Auth: `/api/v1/auth/login`
- Settings: GET/PUT `/api/v1/settings` - Settings: GET/PUT `/api/v1/settings`
- Query: POST `/api/v1/query/bench`, `/api/v1/query/backend` - Query: POST `/api/v1/query/bench`, `/api/v1/query/backend`
- Analysis: CRUD `/api/v1/analysis/sessions` - Analysis: CRUD `/api/v1/analysis/sessions`
- Health: `/health` - Health: `/health`
- [x] **Бизнес-логика покрыта тестами: 99%** - [x] **Бизнес-логика покрыта тестами: 99%**
- 119 unit tests (99% coverage) - 119 unit tests (99% coverage)
- Integration tests (DB API) - Integration tests (DB API)
- E2E tests (полный стек) - E2E tests (полный стек)
- [x] **Services реализованы** - [x] **Services реализованы**
- AuthService (JWT токены) - AuthService (JWT токены)
- RagService (RAG backends: IFT, PSI, PROD) - RagService (RAG backends: IFT, PSI, PROD)
- [x] **Interfaces реализованы** - [x] **Interfaces реализованы**
- TgBackendInterface (базовый HTTP клиент) - TgBackendInterface (базовый HTTP клиент)
- DBApiClient (DB API integration) - DBApiClient (DB API integration)
- [x] **Models валидация** - [x] **Models валидация**
- Все Pydantic models для request/response - Все Pydantic models для request/response
- Валидация входных данных - Валидация входных данных
## Frontend (Static Files) ## Frontend (Static Files)
- [x] **HTML/CSS/JS файлы** - [x] **HTML/CSS/JS файлы**
- index.html - index.html
- styles.css (Material Design) - styles.css (Material Design)
- app.js (основная логика) - app.js (основная логика)
- api-client.js (API клиент) - api-client.js (API клиент)
- settings.js (настройки) - settings.js (настройки)
- [x] **Интеграция с backend** - [x] **Интеграция с backend**
- API client использует `/api/v1` endpoints - API client использует `/api/v1` endpoints
- JWT токены в localStorage - JWT токены в localStorage
- Правильная обработка ошибок (401, 502, etc.) - Правильная обработка ошибок (401, 502, etc.)
- StaticFiles монтированы в main.py - StaticFiles монтированы в main.py
- [x] **UI функциональность** - [x] **UI функциональность**
- Login screen - Login screen
- Multi-environment tabs (IFT, PSI, PROD) - Multi-environment tabs (IFT, PSI, PROD)
- Settings panel - Settings panel
- Query interface - Query interface
- Results display - Results display
- Session management - Session management
## ⚠️ Конфигурация (ТРЕБУЕТ ВНИМАНИЯ!) ## Конфигурация (ТРЕБУЕТ ВНИМАНИЯ!)
### 🔴 КРИТИЧНО - Сделать перед деплоем: ### КРИТИЧНО - Сделать перед деплоем:
- [ ] **1. Создать `.env` файл** - [ ] **1. Создать `.env` файл**
```bash ```bash
@ -121,55 +121,54 @@
DEBUG=false DEBUG=false
``` ```
## Docker & Deployment ## Docker & Deployment
- [x] **Dockerfile готов** - [x] **Dockerfile готов**
- Multi-stage build - Multi-stage build
- Копирует static/ файлы - Копирует static/ файлы
- Expose 8000 - Expose 8000
- Uvicorn с правильными параметрами - Uvicorn с правильными параметрами
- [x] **docker-compose.yml готов** - [x] **docker-compose.yml готов**
- Порты пробрасываются (8000:8000) - Порты пробрасываются (8000:8000)
- Volume для certs (read-only) - Volume для certs (read-only)
- Volume для static файлов - Volume для static файлов
- .env подключается - .env подключается
- restart: unless-stopped - restart: unless-stopped
## Безопасность ## Безопасность
- [x] **Authentication** - [x] **Authentication**
- JWT токены (30 дней expiration) - JWT токены (30 дней expiration)
- Bearer token authentication - Bearer token authentication
- Middleware для проверки токенов - Middleware для проверки токенов
- [x] **Secrets management** - [x] **Secrets management**
- .env не в git (.gitignore) - .env не в git (.gitignore)
- .env.integration не в git - .env.integration не в git
- .env.e2e не в git - .env.e2e не в git
- ⚠️ ВАЖНО: Сменить JWT_SECRET_KEY в продакшн! - ВАЖНО: Сменить JWT_SECRET_KEY в продакшн!
- [x] **mTLS сертификаты** - [x] **mTLS сертификаты**
- Хранятся только на сервере - Хранятся только на сервере
- Read-only volume в Docker - Read-only volume в Docker
- Не коммитятся в git - Не коммитятся в git
- [ ] **HTTPS (рекомендуется)** - [ ] **HTTPS (рекомендуется)**
- Настроить reverse proxy (nginx/traefik) - Настроить reverse proxy (nginx/traefik)
- Let's Encrypt сертификаты - Let's Encrypt сертификаты
- Редирект HTTP → HTTPS - Редирект HTTP → HTTPS
## Документация ## Документация
- [x] **README.md** - основная документация - [x] **README.md** - основная документация
- [x] **CLAUDE.md** - архитектура и гайд для Claude
- [x] **DB_API_CONTRACT.md** - контракт с DB API - [x] **DB_API_CONTRACT.md** - контракт с DB API
- [x] **TESTING.md** - полное руководство по тестированию - [x] **TESTING.md** - полное руководство по тестированию
- [x] **PROJECT_STATUS.md** - статус реализации - [x] **PROJECT_STATUS.md** - статус реализации
- [x] **tests/integration/README.md** - интеграционные тесты - [x] **tests/integration/README.md** - интеграционные тесты
- [x] **tests/e2e/README.md** - E2E тесты - [x] **tests/e2e/README.md** - E2E тесты
## 🔍 Pre-Deployment Testing ## Pre-Deployment Testing
### Локальное тестирование ### Локальное тестирование
@ -238,7 +237,7 @@
docker-compose down docker-compose down
``` ```
## 🚀 Deployment Steps ## Deployment Steps
### 1. Подготовка сервера ### 1. Подготовка сервера
@ -308,7 +307,7 @@ server {
} }
``` ```
## 📊 Post-Deployment Verification ## Post-Deployment Verification
После деплоя проверить: После деплоя проверить:
@ -320,7 +319,7 @@ server {
- [ ] Session save/load работает - [ ] Session save/load работает
- [ ] Логи не содержат ошибок: `docker-compose logs -f` - [ ] Логи не содержат ошибок: `docker-compose logs -f`
## 🔧 Мониторинг и обслуживание ## Мониторинг и обслуживание
### Логи ### Логи
@ -357,19 +356,19 @@ docker-compose up -d --build
### Backup ### Backup
Критичные данные: Критичные данные:
- `.env` - секреты и конфигурация - `.env` - секреты и конфигурация
- `certs/` - mTLS сертификаты - `certs/` - mTLS сертификаты
- Пользовательские данные хранятся в DB API (не в FastAPI) - Пользовательские данные хранятся в DB API (не в FastAPI)
## Performance Considerations ## Performance Considerations
- RAG запросы могут занимать до 30 минут (настроено) - RAG запросы могут занимать до 30 минут (настроено)
- Async/await для всех I/O операций - Async/await для всех I/O операций
- Connection pooling в httpx clients - Connection pooling в httpx clients
- Рассмотреть rate limiting для production - Рассмотреть rate limiting для production
- Рассмотреть caching для settings (опционально) - Рассмотреть caching для settings (опционально)
## 🐛 Troubleshooting ## Troubleshooting
### Проблема: Контейнер не запускается ### Проблема: Контейнер не запускается
@ -400,30 +399,30 @@ docker-compose up -d --build
2. JWT_SECRET_KEY одинаковый между запусками 2. JWT_SECRET_KEY одинаковый между запусками
3. Токен не истек (30 дней по умолчанию) 3. Токен не истек (30 дней по умолчанию)
## Final Checklist Summary ## Final Checklist Summary
Перед деплоем в продакшн: Перед деплоем в продакшн:
1. Backend код готов (99% coverage) 1. Backend код готов (99% coverage)
2. Frontend интегрирован 2. Frontend интегрирован
3. Docker конфигурация готова 3. Docker конфигурация готова
4. ⚠️ **`.env` создан и заполнен** 4. **`.env` создан и заполнен**
5. ⚠️ **`JWT_SECRET_KEY` сгенерирован новый** 5. **`JWT_SECRET_KEY` сгенерирован новый**
6. ⚠️ **RAG hosts настроены** 6. **RAG hosts настроены**
7. ⚠️ **DB_API_URL настроен** 7. **DB_API_URL настроен**
8. ⚠️ **mTLS сертификаты размещены** (если используются) 8. **mTLS сертификаты размещены** (если используются)
9. ⚠️ **CORS настроен** (при необходимости) 9. **CORS настроен** (при необходимости)
10. ⚠️ **DEBUG=false** 10. **DEBUG=false**
11. Unit тесты passed 11. Unit тесты passed
12. Integration тесты passed (опционально) 12. Integration тесты passed (опционально)
13. Локальное тестирование пройдено 13. Локальное тестирование пройдено
14. Docker build успешен 14. Docker build успешен
--- ---
**Статус готовности: 🟡 ПОЧТИ ГОТОВ** **Статус готовности: ПОЧТИ ГОТОВ**
**Готово:** Код, тесты, Docker, документация **Готово:** Код, тесты, Docker, документация
⚠️ **Требуется:** Конфигурация окружения (.env, сертификаты, финальная настройка) **Требуется:** Конфигурация окружения (.env, сертификаты, финальная настройка)
После выполнения пунктов из раздела "КРИТИЧНО" → **🟢 ГОТОВ К ПРОДАКШН** После выполнения пунктов из раздела "КРИТИЧНО" → **ГОТОВ К ПРОДАКШН**

View File

@ -5,7 +5,7 @@
--- ---
## 📋 Что реализовано ## Что реализовано
### 1. Структура проекта ### 1. Структура проекта
@ -15,45 +15,45 @@ brief-bench-fastapi/
│ ├── api/ │ ├── api/
│ │ └── v1/ │ │ └── v1/
│ │ ├── __init__.py │ │ ├── __init__.py
│ │ └── auth.py POST /api/v1/auth/login │ │ └── auth.py POST /api/v1/auth/login
│ ├── models/ │ ├── models/
│ │ ├── __init__.py │ │ ├── __init__.py
│ │ ├── auth.py LoginRequest, LoginResponse, UserResponse │ │ ├── auth.py LoginRequest, LoginResponse, UserResponse
│ │ ├── settings.py EnvironmentSettings, UserSettings │ │ ├── settings.py EnvironmentSettings, UserSettings
│ │ ├── analysis.py SessionCreate, SessionResponse, SessionList │ │ ├── analysis.py SessionCreate, SessionResponse, SessionList
│ │ └── query.py BenchQueryRequest, BackendQueryRequest │ │ └── query.py BenchQueryRequest, BackendQueryRequest
│ ├── services/ │ ├── services/
│ │ ├── __init__.py │ │ ├── __init__.py
│ │ └── auth_service.py AuthService (login logic) │ │ └── auth_service.py AuthService (login logic)
│ ├── interfaces/ │ ├── interfaces/
│ │ ├── __init__.py │ │ ├── __init__.py
│ │ ├── base.py ⚠️ TgBackendInterface (ЗАГЛУШКА - нужна реализация) │ │ ├── base.py TgBackendInterface (ЗАГЛУШКА - нужна реализация)
│ │ └── db_api_client.py DBApiClient (методы для DB API) │ │ └── db_api_client.py DBApiClient (методы для DB API)
│ ├── middleware/ │ ├── middleware/
│ │ └── __init__.py │ │ └── __init__.py
│ ├── utils/ │ ├── utils/
│ │ ├── __init__.py │ │ ├── __init__.py
│ │ └── security.py JWT encode/decode │ │ └── security.py JWT encode/decode
│ ├── __init__.py │ ├── __init__.py
│ ├── config.py Settings из .env │ ├── config.py Settings из .env
│ ├── dependencies.py DI: get_db_client, get_current_user │ ├── dependencies.py DI: get_db_client, get_current_user
│ └── main.py FastAPI app с CORS │ └── main.py FastAPI app с CORS
├── static/ Пусто (нужно скопировать из rag-bench) ├── static/ Пусто (нужно скопировать из rag-bench)
├── tests/ Полный набор тестов (unit/integration/e2e) ├── tests/ Полный набор тестов (unit/integration/e2e)
├── certs/ Не создана (для mTLS) ├── certs/ Не создана (для mTLS)
├── .env.example ├── .env.example
├── .gitignore ├── .gitignore
├── requirements.txt ├── requirements.txt
├── Dockerfile ├── Dockerfile
├── docker-compose.yml ├── docker-compose.yml
├── DB_API_CONTRACT.md Полный контракт для DB API ├── DB_API_CONTRACT.md Полный контракт для DB API
├── README.md ├── README.md
└── PROJECT_STATUS.md Этот файл └── PROJECT_STATUS.md Этот файл
``` ```
--- ---
## Реализованные компоненты ## Реализованные компоненты
### 1. Configuration (app/config.py) ### 1. Configuration (app/config.py)
- Загрузка из .env через pydantic-settings - Загрузка из .env через pydantic-settings
@ -88,7 +88,7 @@ brief-bench-fastapi/
### 3. Interfaces (app/interfaces/) ### 3. Interfaces (app/interfaces/)
**base.py (⚠️ ЗАГЛУШКА!):** **base.py (ЗАГЛУШКА!):**
```python ```python
class TgBackendInterface: class TgBackendInterface:
def __init__(self, api_prefix: str, **kwargs) def __init__(self, api_prefix: str, **kwargs)
@ -152,7 +152,7 @@ class TgBackendInterface:
--- ---
## Что НЕ реализовано (TODO) ## Что НЕ реализовано (TODO)
### 1. TgBackendInterface реализация (КРИТИЧНО!) ### 1. TgBackendInterface реализация (КРИТИЧНО!)
Файл: `app/interfaces/base.py` Файл: `app/interfaces/base.py`
@ -259,28 +259,28 @@ class RagService:
- `app/middleware/logging.py` - логирование запросов - `app/middleware/logging.py` - логирование запросов
- `app/middleware/error_handler.py` - глобальная обработка ошибок - `app/middleware/error_handler.py` - глобальная обработка ошибок
### 9. Tests COMPLETED ### 9. Tests COMPLETED
- **Unit Tests** (119 tests, 99% coverage) - `tests/unit/` - **Unit Tests** (119 tests, 99% coverage) - `tests/unit/`
- All services, models, utilities tested in isolation - All services, models, utilities tested in isolation
- All external dependencies mocked - All external dependencies mocked
- Run: `.\run_unit_tests.bat` - Run: `.\run_unit_tests.bat`
- **Integration Tests** (DB API integration) - `tests/integration/` - **Integration Tests** (DB API integration) - `tests/integration/`
- FastAPI endpoints with real DB API - FastAPI endpoints with real DB API
- Requires DB API service running - Requires DB API service running
- Run: `.\run_integration_tests.bat` - Run: `.\run_integration_tests.bat`
- **End-to-End Tests** (Full stack) - `tests/e2e/` - **End-to-End Tests** (Full stack) - `tests/e2e/`
- Complete workflows: auth → query → save → retrieve - Complete workflows: auth → query → save → retrieve
- Requires all services (FastAPI + DB API + RAG backends) - Requires all services (FastAPI + DB API + RAG backends)
- Real network calls to RAG backends - Real network calls to RAG backends
- Run: `.\run_e2e_tests.bat` - Run: `.\run_e2e_tests.bat`
- **Test Documentation** - `TESTING.md` - **Test Documentation** - `TESTING.md`
- Comprehensive testing guide - Comprehensive testing guide
- Setup instructions for each test level - Setup instructions for each test level
- Troubleshooting and best practices - Troubleshooting and best practices
--- ---
## 🔑 Важные детали для продолжения ## Важные детали для продолжения
### Архитектура авторизации ### Архитектура авторизации
1. Пользователь отправляет POST /api/v1/auth/login?login=12345678 1. Пользователь отправляет POST /api/v1/auth/login?login=12345678
@ -346,7 +346,7 @@ Body: {
--- ---
## 🚀 План дальнейшей работы ## План дальнейшей работы
### Этап 1: Реализовать TgBackendInterface ### Этап 1: Реализовать TgBackendInterface
**Приоритет:** ВЫСОКИЙ **Приоритет:** ВЫСОКИЙ
@ -398,7 +398,7 @@ app.include_router(analysis.router, prefix="/api/v1")
--- ---
## 📦 Dependencies (requirements.txt) ## Dependencies (requirements.txt)
``` ```
fastapi==0.104.1 fastapi==0.104.1
@ -416,7 +416,7 @@ fastapi-cors==0.0.6
--- ---
## 🔧 Команды для разработки ## Команды для разработки
```bash ```bash
# Установить зависимости # Установить зависимости
@ -436,7 +436,7 @@ curl http://localhost:8000/health
--- ---
## 📝 Примечания ## Примечания
1. **TgBackendInterface** - это ваша реализация, которая будет использоваться во всех клиентах (DBApiClient, возможно RagClient в будущем) 1. **TgBackendInterface** - это ваша реализация, которая будет использоваться во всех клиентах (DBApiClient, возможно RagClient в будущем)
@ -454,7 +454,7 @@ curl http://localhost:8000/health
--- ---
## 🎯 Готово к продолжению! ## Готово к продолжению!
Вся базовая структура создана. Следующий шаг - реализация TgBackendInterface и остальных endpoints. Вся базовая структура создана. Следующий шаг - реализация TgBackendInterface и остальных endpoints.

View File

@ -4,13 +4,13 @@ FastAPI backend для системы тестирования RAG с multi-user
## Возможности ## Возможности
- 🔐 JWT авторизация (8-значный логин) - JWT авторизация (8-значный логин)
- 🌐 Multi-environment: ИФТ, ПСИ, ПРОМ - Multi-environment: ИФТ, ПСИ, ПРОМ
- 📊 Bench mode: batch тестирование - Bench mode: batch тестирование
- 🤖 Backend mode: имитация бота (вопросы по одному) - Backend mode: имитация бота (вопросы по одному)
- 💾 Сохранение сессий анализа - Сохранение сессий анализа
- 🔒 mTLS для RAG backend - mTLS для RAG backend
- 📝 Аннотации и экспорт - Аннотации и экспорт
## Требования ## Требования
@ -186,7 +186,6 @@ docker-compose down
## Документация ## Документация
- [CLAUDE.md](CLAUDE.md) - архитектура и гайд для разработки
- [TESTING.md](TESTING.md) - руководство по тестированию - [TESTING.md](TESTING.md) - руководство по тестированию
- [PRODUCTION_CHECKLIST.md](PRODUCTION_CHECKLIST.md) - чек-лист для продакшн - [PRODUCTION_CHECKLIST.md](PRODUCTION_CHECKLIST.md) - чек-лист для продакшн
- [DB_API_CONTRACT.md](DB_API_CONTRACT.md) - контракт с DB API - [DB_API_CONTRACT.md](DB_API_CONTRACT.md) - контракт с DB API
@ -194,13 +193,13 @@ docker-compose down
## Status ## Status
**Проект готов к продакшн** **Проект готов к продакшн**
- Backend полностью реализован (все endpoints, services, interfaces) - Backend полностью реализован (все endpoints, services, interfaces)
- Frontend интегрирован (HTML/CSS/JS) - Frontend интегрирован (HTML/CSS/JS)
- 99% test coverage (unit + integration + E2E) - 99% test coverage (unit + integration + E2E)
- Docker ready - Docker ready
- ⚠️ Требуется: настройка `.env` и сертификатов - Требуется: настройка `.env` и сертификатов
**Перед деплоем:** см. [PRODUCTION_CHECKLIST.md](PRODUCTION_CHECKLIST.md) **Перед деплоем:** см. [PRODUCTION_CHECKLIST.md](PRODUCTION_CHECKLIST.md)

View File

@ -543,7 +543,6 @@ Current coverage:
- [Integration Tests](tests/integration/README.md) - DB API integration - [Integration Tests](tests/integration/README.md) - DB API integration
- [E2E Tests](tests/e2e/README.md) - Full stack testing - [E2E Tests](tests/e2e/README.md) - Full stack testing
- [DB API Contract](DB_API_CONTRACT.md) - External API spec - [DB API Contract](DB_API_CONTRACT.md) - External API spec
- [CLAUDE.md](CLAUDE.md) - Architecture overview
- [PROJECT_STATUS.md](PROJECT_STATUS.md) - Implementation status - [PROJECT_STATUS.md](PROJECT_STATUS.md) - Implementation status
## Summary ## Summary

27
format.py Normal file
View File

@ -0,0 +1,27 @@
from pydantic import BaseModel, Field
class Docs(BaseModel):
research: list
analytical_hub: list
class RagResponse(BaseModel):
"""Ответ от RAG на вопрос пользователя."""
body_research: str = Field(description="Текст ответа от Research на вопрос")
body_analytical_hub: str = Field(description="Текст ответа от Analytical Hub на вопрос")
docs_from_vectorstore: Docs | None = None
docs_to_llm: Docs | None = None
class RagResponseBench(RagResponse):
"""Ответ на вопрос + время обработки именно этого вопроса."""
processing_time_sec: float = Field(
description="Время обработки запроса в секундах",
ge=0,
)
question: str = Field(description="Исходный вопрос")
class RagResponseBenchList(BaseModel):
answers: list[RagResponseBench]

View File

@ -107,7 +107,7 @@ pytest -x
pytest -s pytest -s
``` ```
## Покрытие (Coverage) ## Покрытие тестами
### Unit Tests: **99%** (567 строк, 4 непокрыто) ### Unit Tests: **99%** (567 строк, 4 непокрыто)
@ -133,51 +133,51 @@ pytest -s
## Что тестируется ## Что тестируется
### 1. Authentication (test_auth.py) ### 1. Authentication (test_auth.py)
- Успешная авторизация с валидным 8-значным логином - Успешная авторизация с валидным 8-значным логином
- Отклонение невалидных форматов логина - Отклонение невалидных форматов логина
- Обработка ошибок DB API - Обработка ошибок DB API
- Генерация JWT токенов - Генерация JWT токенов
- Валидация токенов - Валидация токенов
### 2. Settings (test_settings.py) ### 2. Settings (test_settings.py)
- Получение настроек пользователя - Получение настроек пользователя
- Обновление настроек - Обновление настроек
- Обработка несуществующих пользователей - Обработка несуществующих пользователей
- Валидация формата настроек - Валидация формата настроек
- Требование авторизации - Требование авторизации
### 3. Query (test_query.py) ### 3. Query (test_query.py)
- Bench mode запросы - Bench mode запросы
- Backend mode запросы - Backend mode запросы
- Валидация окружений (ift/psi/prod) - Валидация окружений (ift/psi/prod)
- Проверка соответствия apiMode - Проверка соответствия apiMode
- Обработка ошибок RAG backend - Обработка ошибок RAG backend
- Построение headers для RAG - Построение headers для RAG
- Session reset в Backend mode - Session reset в Backend mode
### 4. Analysis (test_analysis.py) ### 4. Analysis (test_analysis.py)
- Создание сессий анализа - Создание сессий анализа
- Получение списка сессий - Получение списка сессий
- Фильтрация по окружению - Фильтрация по окружению
- Пагинация - Пагинация
- Получение конкретной сессии - Получение конкретной сессии
- Удаление сессии - Удаление сессии
- Требование авторизации - Требование авторизации
### 5. Security (test_security.py) ### 5. Security (test_security.py)
- Создание JWT токенов - Создание JWT токенов
- Декодирование токенов - Декодирование токенов
- Обработка невалидных токенов - Обработка невалидных токенов
- Обработка истекших токенов - Обработка истекших токенов
- Кастомное время жизни токенов - Кастомное время жизни токенов
### 6. Models (test_models.py) ### 6. Models (test_models.py)
- Валидация LoginRequest (8 цифр) - Валидация LoginRequest (8 цифр)
- Валидация QuestionRequest - Валидация QuestionRequest
- Валидация BenchQueryRequest - Валидация BenchQueryRequest
- Валидация BackendQueryRequest - Валидация BackendQueryRequest
- Валидация EnvironmentSettings - Валидация EnvironmentSettings
- Дефолтные значения - Дефолтные значения
## Моки ## Моки

View File

@ -435,4 +435,3 @@ When adding new E2E tests:
- [Integration Tests](../integration/README.md) - Tests for DB API integration only - [Integration Tests](../integration/README.md) - Tests for DB API integration only
- [Unit Tests](../unit/) - Fast isolated tests - [Unit Tests](../unit/) - Fast isolated tests
- [DB API Contract](../../DB_API_CONTRACT.md) - External DB API specification - [DB API Contract](../../DB_API_CONTRACT.md) - External DB API specification
- [CLAUDE.md](../../CLAUDE.md) - Project architecture overview

View File

@ -88,20 +88,20 @@ tests/integration/
## Что тестируется ## Что тестируется
### Auth Integration (`test_auth_integration.py`) ### Auth Integration (`test_auth_integration.py`)
- Успешная авторизация с реальным DB API - Успешная авторизация с реальным DB API
- Генерация и валидация JWT токенов - Генерация и валидация JWT токенов
- Защита endpoint-ов с использованием JWT - Защита endpoint-ов с использованием JWT
- Обработка ошибок аутентификации - Обработка ошибок аутентификации
### Settings Integration (`test_settings_integration.py`) ### Settings Integration (`test_settings_integration.py`)
- Получение настроек пользователя из DB API - Получение настроек пользователя из DB API
- Обновление настроек для всех окружений (IFT, PSI, PROD) - Обновление настроек для всех окружений (IFT, PSI, PROD)
- Частичное обновление настроек - Частичное обновление настроек
- Персистентность настроек - Персистентность настроек
- Проверка структуры данных настроек - Проверка структуры данных настроек
### Analysis Integration (`test_analysis_integration.py`) ### Analysis Integration (`test_analysis_integration.py`)
- Создание сессий анализа в DB API - Создание сессий анализа в DB API
- Получение списка сессий с фильтрацией - Получение списка сессий с фильтрацией
- Пагинация сессий - Пагинация сессий
@ -109,7 +109,7 @@ tests/integration/
- Удаление сессий - Удаление сессий
- Целостность данных (включая Unicode, вложенные структуры) - Целостность данных (включая Unicode, вложенные структуры)
### Query Integration (`test_query_integration.py`) ### Query Integration (`test_query_integration.py`)
- Получение настроек пользователя для запросов - Получение настроек пользователя для запросов
- Проверка соответствия apiMode (bench/backend) - Проверка соответствия apiMode (bench/backend)
- Обновление настроек между запросами - Обновление настроек между запросами
@ -117,10 +117,10 @@ tests/integration/
## Что НЕ тестируется ## Что НЕ тестируется
**RAG Backend взаимодействие** - требует запущенные RAG сервисы (IFT/PSI/PROD) **RAG Backend взаимодействие** - требует запущенные RAG сервисы (IFT/PSI/PROD)
**mTLS сертификаты** - требует реальные сертификаты **mTLS сертификаты** - требует реальные сертификаты
**Производительность** - используйте отдельные performance тесты **Производительность** - используйте отдельные performance тесты
**Нагрузочное тестирование** - используйте инструменты типа Locust/K6 **Нагрузочное тестирование** - используйте инструменты типа Locust/K6
## Troubleshooting ## Troubleshooting