From ea94f98e74eda790475385e95605c10190dfde4b Mon Sep 17 00:00:00 2001 From: itqop Date: Thu, 18 Dec 2025 11:52:02 +0300 Subject: [PATCH] chore: edit mds --- CLAUDE.md | 10 +- DEVELOPMENT_PLAN.md | 12 +-- MIGRATION_GUIDE.md | 2 +- PRODUCTION_CHECKLIST.md | 179 ++++++++++++++++++------------------ PROJECT_STATUS.md | 76 +++++++-------- README.md | 27 +++--- TESTING.md | 1 - format.py | 27 ++++++ tests/README.md | 72 +++++++-------- tests/e2e/README.md | 1 - tests/integration/README.md | 16 ++-- 11 files changed, 223 insertions(+), 200 deletions(-) create mode 100644 format.py diff --git a/CLAUDE.md b/CLAUDE.md index 0b06659..606b480 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -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 @@ -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: - Core infrastructure is complete (auth, DB API client, RAG service) - All main API endpoints are implemented -- TgBackendInterface is fully implemented (not a stub) -- Frontend integration pending (static/ directory is empty) -- No tests yet (tests/ directory is empty) +- TgBackendInterface is fully implemented +- 99% test coverage (unit + integration + E2E tests) +- Frontend integration complete diff --git a/DEVELOPMENT_PLAN.md b/DEVELOPMENT_PLAN.md index f53613d..7238e39 100644 --- a/DEVELOPMENT_PLAN.md +++ b/DEVELOPMENT_PLAN.md @@ -7,7 +7,7 @@ ## Текущее состояние -### ✅ Готово (Backend) +### Готово (Backend) - Структура FastAPI приложения - JWT авторизация (8-значный логин) - TgBackendInterface (полная реализация с httpx) @@ -20,9 +20,9 @@ - `POST /api/v1/query/backend` - последовательные запросы - `POST/GET/DELETE /api/v1/analysis/sessions` - сессии анализа - 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) - API client для frontend - Интеграция frontend с новым API @@ -645,20 +645,20 @@ app.middleware("http")(log_requests) ## Приоритезация задач -### 🔴 Критично (сделать в первую очередь) +### Критично (сделать в первую очередь) 1. Перенос статических файлов из rag-bench-old-version → `static/` 2. Создание `api-client.js` 3. Добавление login screen в `index.html` 4. Переписывание вызовов API в `app.js` 5. Тестирование auth flow -### 🟡 Важно (сделать после критичного) +### Важно (сделать после критичного) 6. Интеграция Settings UI 7. Environment selector 8. Сохранение и загрузка сессий анализа 9. Ручное тестирование всех сценариев -### 🟢 Желательно (если есть время) +### Желательно (если есть время) 10. Автоматические тесты (pytest) 11. Production deployment настройка 12. Logging middleware diff --git a/MIGRATION_GUIDE.md b/MIGRATION_GUIDE.md index b2f618d..39711b3 100644 --- a/MIGRATION_GUIDE.md +++ b/MIGRATION_GUIDE.md @@ -44,7 +44,7 @@ cp rag-bench-old-version/settings.js static/ ## Шаг 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`. diff --git a/PRODUCTION_CHECKLIST.md b/PRODUCTION_CHECKLIST.md index 2e916c8..81db19f 100644 --- a/PRODUCTION_CHECKLIST.md +++ b/PRODUCTION_CHECKLIST.md @@ -1,60 +1,60 @@ -# 🚀 Production Readiness Checklist +# Production Readiness Checklist Полная проверка готовности Brief Bench FastAPI к развертыванию в продакшн. -## ✅ Backend (FastAPI) +## Backend (FastAPI) ### Код и архитектура - [x] **Все API endpoints реализованы** - - ✅ Auth: `/api/v1/auth/login` - - ✅ Settings: GET/PUT `/api/v1/settings` - - ✅ Query: POST `/api/v1/query/bench`, `/api/v1/query/backend` - - ✅ Analysis: CRUD `/api/v1/analysis/sessions` - - ✅ Health: `/health` + - Auth: `/api/v1/auth/login` + - Settings: GET/PUT `/api/v1/settings` + - Query: POST `/api/v1/query/bench`, `/api/v1/query/backend` + - Analysis: CRUD `/api/v1/analysis/sessions` + - Health: `/health` - [x] **Бизнес-логика покрыта тестами: 99%** - - ✅ 119 unit tests (99% coverage) - - ✅ Integration tests (DB API) - - ✅ E2E tests (полный стек) + - 119 unit tests (99% coverage) + - Integration tests (DB API) + - E2E tests (полный стек) - [x] **Services реализованы** - - ✅ AuthService (JWT токены) - - ✅ RagService (RAG backends: IFT, PSI, PROD) + - AuthService (JWT токены) + - RagService (RAG backends: IFT, PSI, PROD) - [x] **Interfaces реализованы** - - ✅ TgBackendInterface (базовый HTTP клиент) - - ✅ DBApiClient (DB API integration) + - TgBackendInterface (базовый HTTP клиент) + - DBApiClient (DB API integration) - [x] **Models валидация** - - ✅ Все Pydantic models для request/response - - ✅ Валидация входных данных + - Все Pydantic models для request/response + - Валидация входных данных -## ✅ Frontend (Static Files) +## Frontend (Static Files) - [x] **HTML/CSS/JS файлы** - - ✅ index.html - - ✅ styles.css (Material Design) - - ✅ app.js (основная логика) - - ✅ api-client.js (API клиент) - - ✅ settings.js (настройки) + - index.html + - styles.css (Material Design) + - app.js (основная логика) + - api-client.js (API клиент) + - settings.js (настройки) - [x] **Интеграция с backend** - - ✅ API client использует `/api/v1` endpoints - - ✅ JWT токены в localStorage - - ✅ Правильная обработка ошибок (401, 502, etc.) - - ✅ StaticFiles монтированы в main.py + - API client использует `/api/v1` endpoints + - JWT токены в localStorage + - Правильная обработка ошибок (401, 502, etc.) + - StaticFiles монтированы в main.py - [x] **UI функциональность** - - ✅ Login screen - - ✅ Multi-environment tabs (IFT, PSI, PROD) - - ✅ Settings panel - - ✅ Query interface - - ✅ Results display - - ✅ Session management + - Login screen + - Multi-environment tabs (IFT, PSI, PROD) + - Settings panel + - Query interface + - Results display + - Session management -## ⚠️ Конфигурация (ТРЕБУЕТ ВНИМАНИЯ!) +## Конфигурация (ТРЕБУЕТ ВНИМАНИЯ!) -### 🔴 КРИТИЧНО - Сделать перед деплоем: +### КРИТИЧНО - Сделать перед деплоем: - [ ] **1. Создать `.env` файл** ```bash @@ -121,55 +121,54 @@ DEBUG=false ``` -## ✅ Docker & Deployment +## Docker & Deployment - [x] **Dockerfile готов** - - ✅ Multi-stage build - - ✅ Копирует static/ файлы - - ✅ Expose 8000 - - ✅ Uvicorn с правильными параметрами + - Multi-stage build + - Копирует static/ файлы + - Expose 8000 + - Uvicorn с правильными параметрами - [x] **docker-compose.yml готов** - - ✅ Порты пробрасываются (8000:8000) - - ✅ Volume для certs (read-only) - - ✅ Volume для static файлов - - ✅ .env подключается - - ✅ restart: unless-stopped + - Порты пробрасываются (8000:8000) + - Volume для certs (read-only) + - Volume для static файлов + - .env подключается + - restart: unless-stopped -## ✅ Безопасность +## Безопасность - [x] **Authentication** - - ✅ JWT токены (30 дней expiration) - - ✅ Bearer token authentication - - ✅ Middleware для проверки токенов + - JWT токены (30 дней expiration) + - Bearer token authentication + - Middleware для проверки токенов - [x] **Secrets management** - - ✅ .env не в git (.gitignore) - - ✅ .env.integration не в git - - ✅ .env.e2e не в git - - ⚠️ ВАЖНО: Сменить JWT_SECRET_KEY в продакшн! + - .env не в git (.gitignore) + - .env.integration не в git + - .env.e2e не в git + - ВАЖНО: Сменить JWT_SECRET_KEY в продакшн! - [x] **mTLS сертификаты** - - ✅ Хранятся только на сервере - - ✅ Read-only volume в Docker - - ✅ Не коммитятся в git + - Хранятся только на сервере + - Read-only volume в Docker + - Не коммитятся в git - [ ] **HTTPS (рекомендуется)** - Настроить reverse proxy (nginx/traefik) - Let's Encrypt сертификаты - Редирект HTTP → HTTPS -## ✅ Документация +## Документация - [x] **README.md** - основная документация -- [x] **CLAUDE.md** - архитектура и гайд для Claude - [x] **DB_API_CONTRACT.md** - контракт с DB API - [x] **TESTING.md** - полное руководство по тестированию - [x] **PROJECT_STATUS.md** - статус реализации - [x] **tests/integration/README.md** - интеграционные тесты - [x] **tests/e2e/README.md** - E2E тесты -## 🔍 Pre-Deployment Testing +## Pre-Deployment Testing ### Локальное тестирование @@ -238,7 +237,7 @@ docker-compose down ``` -## 🚀 Deployment Steps +## Deployment Steps ### 1. Подготовка сервера @@ -308,7 +307,7 @@ server { } ``` -## 📊 Post-Deployment Verification +## Post-Deployment Verification После деплоя проверить: @@ -320,7 +319,7 @@ server { - [ ] Session save/load работает - [ ] Логи не содержат ошибок: `docker-compose logs -f` -## 🔧 Мониторинг и обслуживание +## Мониторинг и обслуживание ### Логи @@ -357,19 +356,19 @@ docker-compose up -d --build ### Backup Критичные данные: -- ✅ `.env` - секреты и конфигурация -- ✅ `certs/` - mTLS сертификаты -- ℹ️ Пользовательские данные хранятся в DB API (не в FastAPI) +- `.env` - секреты и конфигурация +- `certs/` - mTLS сертификаты +- Пользовательские данные хранятся в DB API (не в FastAPI) -## ⚡ Performance Considerations +## Performance Considerations -- ✅ RAG запросы могут занимать до 30 минут (настроено) -- ✅ Async/await для всех I/O операций -- ✅ Connection pooling в httpx clients -- ℹ️ Рассмотреть rate limiting для production -- ℹ️ Рассмотреть caching для settings (опционально) +- RAG запросы могут занимать до 30 минут (настроено) +- Async/await для всех I/O операций +- Connection pooling в httpx clients +- Рассмотреть rate limiting для production +- Рассмотреть caching для settings (опционально) -## 🐛 Troubleshooting +## Troubleshooting ### Проблема: Контейнер не запускается @@ -400,30 +399,30 @@ docker-compose up -d --build 2. JWT_SECRET_KEY одинаковый между запусками 3. Токен не истек (30 дней по умолчанию) -## ✅ Final Checklist Summary +## Final Checklist Summary Перед деплоем в продакшн: -1. ✅ Backend код готов (99% coverage) -2. ✅ Frontend интегрирован -3. ✅ Docker конфигурация готова -4. ⚠️ **`.env` создан и заполнен** -5. ⚠️ **`JWT_SECRET_KEY` сгенерирован новый** -6. ⚠️ **RAG hosts настроены** -7. ⚠️ **DB_API_URL настроен** -8. ⚠️ **mTLS сертификаты размещены** (если используются) -9. ⚠️ **CORS настроен** (при необходимости) -10. ⚠️ **DEBUG=false** -11. ✅ Unit тесты passed -12. ✅ Integration тесты passed (опционально) -13. ✅ Локальное тестирование пройдено -14. ✅ Docker build успешен +1. Backend код готов (99% coverage) +2. Frontend интегрирован +3. Docker конфигурация готова +4. **`.env` создан и заполнен** +5. **`JWT_SECRET_KEY` сгенерирован новый** +6. **RAG hosts настроены** +7. **DB_API_URL настроен** +8. **mTLS сертификаты размещены** (если используются) +9. **CORS настроен** (при необходимости) +10. **DEBUG=false** +11. Unit тесты passed +12. Integration тесты passed (опционально) +13. Локальное тестирование пройдено +14. Docker build успешен --- -**Статус готовности: 🟡 ПОЧТИ ГОТОВ** +**Статус готовности: ПОЧТИ ГОТОВ** -✅ **Готово:** Код, тесты, Docker, документация -⚠️ **Требуется:** Конфигурация окружения (.env, сертификаты, финальная настройка) +**Готово:** Код, тесты, Docker, документация +**Требуется:** Конфигурация окружения (.env, сертификаты, финальная настройка) -После выполнения пунктов из раздела "КРИТИЧНО" → **🟢 ГОТОВ К ПРОДАКШН** +После выполнения пунктов из раздела "КРИТИЧНО" → **ГОТОВ К ПРОДАКШН** diff --git a/PROJECT_STATUS.md b/PROJECT_STATUS.md index d5be6b1..ba81646 100644 --- a/PROJECT_STATUS.md +++ b/PROJECT_STATUS.md @@ -5,7 +5,7 @@ --- -## 📋 Что реализовано +## Что реализовано ### 1. Структура проекта @@ -15,45 +15,45 @@ brief-bench-fastapi/ │ ├── api/ │ │ └── v1/ │ │ ├── __init__.py -│ │ └── auth.py ✅ POST /api/v1/auth/login +│ │ └── auth.py POST /api/v1/auth/login │ ├── models/ │ │ ├── __init__.py -│ │ ├── auth.py ✅ LoginRequest, LoginResponse, UserResponse -│ │ ├── settings.py ✅ EnvironmentSettings, UserSettings -│ │ ├── analysis.py ✅ SessionCreate, SessionResponse, SessionList -│ │ └── query.py ✅ BenchQueryRequest, BackendQueryRequest +│ │ ├── auth.py LoginRequest, LoginResponse, UserResponse +│ │ ├── settings.py EnvironmentSettings, UserSettings +│ │ ├── analysis.py SessionCreate, SessionResponse, SessionList +│ │ └── query.py BenchQueryRequest, BackendQueryRequest │ ├── services/ │ │ ├── __init__.py -│ │ └── auth_service.py ✅ AuthService (login logic) +│ │ └── auth_service.py AuthService (login logic) │ ├── interfaces/ │ │ ├── __init__.py -│ │ ├── base.py ⚠️ TgBackendInterface (ЗАГЛУШКА - нужна реализация) -│ │ └── db_api_client.py ✅ DBApiClient (методы для DB API) +│ │ ├── base.py TgBackendInterface (ЗАГЛУШКА - нужна реализация) +│ │ └── db_api_client.py DBApiClient (методы для DB API) │ ├── middleware/ │ │ └── __init__.py │ ├── utils/ │ │ ├── __init__.py -│ │ └── security.py ✅ JWT encode/decode +│ │ └── security.py JWT encode/decode │ ├── __init__.py -│ ├── config.py ✅ Settings из .env -│ ├── dependencies.py ✅ DI: get_db_client, get_current_user -│ └── main.py ✅ FastAPI app с CORS -├── static/ ❌ Пусто (нужно скопировать из rag-bench) -├── tests/ ✅ Полный набор тестов (unit/integration/e2e) -├── certs/ ❌ Не создана (для mTLS) -├── .env.example ✅ -├── .gitignore ✅ -├── requirements.txt ✅ -├── Dockerfile ✅ -├── docker-compose.yml ✅ -├── DB_API_CONTRACT.md ✅ Полный контракт для DB API -├── README.md ✅ -└── PROJECT_STATUS.md ✅ Этот файл +│ ├── config.py Settings из .env +│ ├── dependencies.py DI: get_db_client, get_current_user +│ └── main.py FastAPI app с CORS +├── static/ Пусто (нужно скопировать из rag-bench) +├── tests/ Полный набор тестов (unit/integration/e2e) +├── certs/ Не создана (для mTLS) +├── .env.example +├── .gitignore +├── requirements.txt +├── Dockerfile +├── docker-compose.yml +├── DB_API_CONTRACT.md Полный контракт для DB API +├── README.md +└── PROJECT_STATUS.md Этот файл ``` --- -## ✅ Реализованные компоненты +## Реализованные компоненты ### 1. Configuration (app/config.py) - Загрузка из .env через pydantic-settings @@ -88,7 +88,7 @@ brief-bench-fastapi/ ### 3. Interfaces (app/interfaces/) -**base.py (⚠️ ЗАГЛУШКА!):** +**base.py (ЗАГЛУШКА!):** ```python class TgBackendInterface: def __init__(self, api_prefix: str, **kwargs) @@ -152,7 +152,7 @@ class TgBackendInterface: --- -## ❌ Что НЕ реализовано (TODO) +## Что НЕ реализовано (TODO) ### 1. TgBackendInterface реализация (КРИТИЧНО!) Файл: `app/interfaces/base.py` @@ -259,28 +259,28 @@ class RagService: - `app/middleware/logging.py` - логирование запросов - `app/middleware/error_handler.py` - глобальная обработка ошибок -### 9. Tests ✅ COMPLETED -- ✅ **Unit Tests** (119 tests, 99% coverage) - `tests/unit/` +### 9. Tests COMPLETED +- **Unit Tests** (119 tests, 99% coverage) - `tests/unit/` - All services, models, utilities tested in isolation - All external dependencies mocked - 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 - Requires DB API service running - 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 - Requires all services (FastAPI + DB API + RAG backends) - Real network calls to RAG backends - Run: `.\run_e2e_tests.bat` -- ✅ **Test Documentation** - `TESTING.md` +- **Test Documentation** - `TESTING.md` - Comprehensive testing guide - Setup instructions for each test level - Troubleshooting and best practices --- -## 🔑 Важные детали для продолжения +## Важные детали для продолжения ### Архитектура авторизации 1. Пользователь отправляет POST /api/v1/auth/login?login=12345678 @@ -346,7 +346,7 @@ Body: { --- -## 🚀 План дальнейшей работы +## План дальнейшей работы ### Этап 1: Реализовать TgBackendInterface **Приоритет:** ВЫСОКИЙ @@ -398,7 +398,7 @@ app.include_router(analysis.router, prefix="/api/v1") --- -## 📦 Dependencies (requirements.txt) +## Dependencies (requirements.txt) ``` fastapi==0.104.1 @@ -416,7 +416,7 @@ fastapi-cors==0.0.6 --- -## 🔧 Команды для разработки +## Команды для разработки ```bash # Установить зависимости @@ -436,7 +436,7 @@ curl http://localhost:8000/health --- -## 📝 Примечания +## Примечания 1. **TgBackendInterface** - это ваша реализация, которая будет использоваться во всех клиентах (DBApiClient, возможно RagClient в будущем) @@ -454,7 +454,7 @@ curl http://localhost:8000/health --- -## 🎯 Готово к продолжению! +## Готово к продолжению! Вся базовая структура создана. Следующий шаг - реализация TgBackendInterface и остальных endpoints. diff --git a/README.md b/README.md index c7301df..36a9ab9 100644 --- a/README.md +++ b/README.md @@ -4,13 +4,13 @@ FastAPI backend для системы тестирования RAG с multi-user ## Возможности -- 🔐 JWT авторизация (8-значный логин) -- 🌐 Multi-environment: ИФТ, ПСИ, ПРОМ -- 📊 Bench mode: batch тестирование -- 🤖 Backend mode: имитация бота (вопросы по одному) -- 💾 Сохранение сессий анализа -- 🔒 mTLS для RAG backend -- 📝 Аннотации и экспорт +- JWT авторизация (8-значный логин) +- Multi-environment: ИФТ, ПСИ, ПРОМ +- Bench mode: batch тестирование +- Backend mode: имитация бота (вопросы по одному) +- Сохранение сессий анализа +- mTLS для RAG backend +- Аннотации и экспорт ## Требования @@ -186,7 +186,6 @@ docker-compose down ## Документация -- [CLAUDE.md](CLAUDE.md) - архитектура и гайд для разработки - [TESTING.md](TESTING.md) - руководство по тестированию - [PRODUCTION_CHECKLIST.md](PRODUCTION_CHECKLIST.md) - чек-лист для продакшн - [DB_API_CONTRACT.md](DB_API_CONTRACT.md) - контракт с DB API @@ -194,13 +193,13 @@ docker-compose down ## Status -✅ **Проект готов к продакшн** +**Проект готов к продакшн** -- ✅ Backend полностью реализован (все endpoints, services, interfaces) -- ✅ Frontend интегрирован (HTML/CSS/JS) -- ✅ 99% test coverage (unit + integration + E2E) -- ✅ Docker ready -- ⚠️ Требуется: настройка `.env` и сертификатов +- Backend полностью реализован (все endpoints, services, interfaces) +- Frontend интегрирован (HTML/CSS/JS) +- 99% test coverage (unit + integration + E2E) +- Docker ready +- Требуется: настройка `.env` и сертификатов **Перед деплоем:** см. [PRODUCTION_CHECKLIST.md](PRODUCTION_CHECKLIST.md) diff --git a/TESTING.md b/TESTING.md index 4786016..a4451f3 100644 --- a/TESTING.md +++ b/TESTING.md @@ -543,7 +543,6 @@ Current coverage: - [Integration Tests](tests/integration/README.md) - DB API integration - [E2E Tests](tests/e2e/README.md) - Full stack testing - [DB API Contract](DB_API_CONTRACT.md) - External API spec -- [CLAUDE.md](CLAUDE.md) - Architecture overview - [PROJECT_STATUS.md](PROJECT_STATUS.md) - Implementation status ## Summary diff --git a/format.py b/format.py new file mode 100644 index 0000000..3283a3a --- /dev/null +++ b/format.py @@ -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] diff --git a/tests/README.md b/tests/README.md index e2a5273..96b5858 100644 --- a/tests/README.md +++ b/tests/README.md @@ -107,7 +107,7 @@ pytest -x pytest -s ``` -## Покрытие (Coverage) +## Покрытие тестами ### Unit Tests: **99%** (567 строк, 4 непокрыто) @@ -133,51 +133,51 @@ pytest -s ## Что тестируется ### 1. Authentication (test_auth.py) -- ✅ Успешная авторизация с валидным 8-значным логином -- ✅ Отклонение невалидных форматов логина -- ✅ Обработка ошибок DB API -- ✅ Генерация JWT токенов -- ✅ Валидация токенов +- Успешная авторизация с валидным 8-значным логином +- Отклонение невалидных форматов логина +- Обработка ошибок DB API +- Генерация JWT токенов +- Валидация токенов ### 2. Settings (test_settings.py) -- ✅ Получение настроек пользователя -- ✅ Обновление настроек -- ✅ Обработка несуществующих пользователей -- ✅ Валидация формата настроек -- ✅ Требование авторизации +- Получение настроек пользователя +- Обновление настроек +- Обработка несуществующих пользователей +- Валидация формата настроек +- Требование авторизации ### 3. Query (test_query.py) -- ✅ Bench mode запросы -- ✅ Backend mode запросы -- ✅ Валидация окружений (ift/psi/prod) -- ✅ Проверка соответствия apiMode -- ✅ Обработка ошибок RAG backend -- ✅ Построение headers для RAG -- ✅ Session reset в Backend mode +- Bench mode запросы +- Backend mode запросы +- Валидация окружений (ift/psi/prod) +- Проверка соответствия apiMode +- Обработка ошибок RAG backend +- Построение headers для RAG +- Session reset в Backend mode ### 4. Analysis (test_analysis.py) -- ✅ Создание сессий анализа -- ✅ Получение списка сессий -- ✅ Фильтрация по окружению -- ✅ Пагинация -- ✅ Получение конкретной сессии -- ✅ Удаление сессии -- ✅ Требование авторизации +- Создание сессий анализа +- Получение списка сессий +- Фильтрация по окружению +- Пагинация +- Получение конкретной сессии +- Удаление сессии +- Требование авторизации ### 5. Security (test_security.py) -- ✅ Создание JWT токенов -- ✅ Декодирование токенов -- ✅ Обработка невалидных токенов -- ✅ Обработка истекших токенов -- ✅ Кастомное время жизни токенов +- Создание JWT токенов +- Декодирование токенов +- Обработка невалидных токенов +- Обработка истекших токенов +- Кастомное время жизни токенов ### 6. Models (test_models.py) -- ✅ Валидация LoginRequest (8 цифр) -- ✅ Валидация QuestionRequest -- ✅ Валидация BenchQueryRequest -- ✅ Валидация BackendQueryRequest -- ✅ Валидация EnvironmentSettings -- ✅ Дефолтные значения +- Валидация LoginRequest (8 цифр) +- Валидация QuestionRequest +- Валидация BenchQueryRequest +- Валидация BackendQueryRequest +- Валидация EnvironmentSettings +- Дефолтные значения ## Моки diff --git a/tests/e2e/README.md b/tests/e2e/README.md index 7c168a4..698586f 100644 --- a/tests/e2e/README.md +++ b/tests/e2e/README.md @@ -435,4 +435,3 @@ When adding new E2E tests: - [Integration Tests](../integration/README.md) - Tests for DB API integration only - [Unit Tests](../unit/) - Fast isolated tests - [DB API Contract](../../DB_API_CONTRACT.md) - External DB API specification -- [CLAUDE.md](../../CLAUDE.md) - Project architecture overview diff --git a/tests/integration/README.md b/tests/integration/README.md index 4561bef..f6af94d 100644 --- a/tests/integration/README.md +++ b/tests/integration/README.md @@ -88,20 +88,20 @@ tests/integration/ ## Что тестируется -### ✅ Auth Integration (`test_auth_integration.py`) +### Auth Integration (`test_auth_integration.py`) - Успешная авторизация с реальным DB API - Генерация и валидация JWT токенов - Защита endpoint-ов с использованием JWT - Обработка ошибок аутентификации -### ✅ Settings Integration (`test_settings_integration.py`) +### Settings Integration (`test_settings_integration.py`) - Получение настроек пользователя из DB API - Обновление настроек для всех окружений (IFT, PSI, PROD) - Частичное обновление настроек - Персистентность настроек - Проверка структуры данных настроек -### ✅ Analysis Integration (`test_analysis_integration.py`) +### Analysis Integration (`test_analysis_integration.py`) - Создание сессий анализа в DB API - Получение списка сессий с фильтрацией - Пагинация сессий @@ -109,7 +109,7 @@ tests/integration/ - Удаление сессий - Целостность данных (включая Unicode, вложенные структуры) -### ✅ Query Integration (`test_query_integration.py`) +### Query Integration (`test_query_integration.py`) - Получение настроек пользователя для запросов - Проверка соответствия apiMode (bench/backend) - Обновление настроек между запросами @@ -117,10 +117,10 @@ tests/integration/ ## Что НЕ тестируется -❌ **RAG Backend взаимодействие** - требует запущенные RAG сервисы (IFT/PSI/PROD) -❌ **mTLS сертификаты** - требует реальные сертификаты -❌ **Производительность** - используйте отдельные performance тесты -❌ **Нагрузочное тестирование** - используйте инструменты типа Locust/K6 +**RAG Backend взаимодействие** - требует запущенные RAG сервисы (IFT/PSI/PROD) +**mTLS сертификаты** - требует реальные сертификаты +**Производительность** - используйте отдельные performance тесты +**Нагрузочное тестирование** - используйте инструменты типа Locust/K6 ## Troubleshooting