diff --git a/app/api/routes.py b/app/api/routes.py index e2e7940..ec35408 100644 --- a/app/api/routes.py +++ b/app/api/routes.py @@ -5,7 +5,7 @@ FastAPI endpoints для RAG сервиса. import logging from typing import Annotated -from fastapi import APIRouter, Depends, HTTPException, status +from fastapi import APIRouter, Depends, Header, HTTPException, status from app import __version__ from app.api.auth import AuthDep @@ -160,17 +160,33 @@ async def add_positive_example( request: ExampleRequest, service: RAGServiceDep, _auth: AuthDep, + x_test_mode: str | None = Header(default=None, alias="X-Test-Mode"), ) -> ExampleResponse: """ Добавляет текст как положительный пример (опубликованный пост). + При наличии заголовка X-Test-Mode: true пример НЕ сохраняется (тестовый режим). + Args: request: Запрос с текстом service: RAG сервис + x_test_mode: Заголовок тестового режима Returns: ExampleResponse: Результат добавления """ + # Тестовый режим — не сохраняем примеры + is_test = x_test_mode and x_test_mode.lower() == "true" + + if is_test: + logger.info("Тестовый режим: положительный пример НЕ сохранён") + return ExampleResponse( + success=True, + message="Тестовый режим: пример не сохранён", + positive_count=service.vector_store.positive_count, + negative_count=service.vector_store.negative_count, + ) + try: added = await service.add_positive_example(request.text) @@ -209,17 +225,33 @@ async def add_negative_example( request: ExampleRequest, service: RAGServiceDep, _auth: AuthDep, + x_test_mode: str | None = Header(default=None, alias="X-Test-Mode"), ) -> ExampleResponse: """ Добавляет текст как отрицательный пример (отклоненный пост). + При наличии заголовка X-Test-Mode: true пример НЕ сохраняется (тестовый режим). + Args: request: Запрос с текстом service: RAG сервис + x_test_mode: Заголовок тестового режима Returns: ExampleResponse: Результат добавления """ + # Тестовый режим — не сохраняем примеры + is_test = x_test_mode and x_test_mode.lower() == "true" + + if is_test: + logger.info("Тестовый режим: отрицательный пример НЕ сохранён") + return ExampleResponse( + success=True, + message="Тестовый режим: пример не сохранён", + positive_count=service.vector_store.positive_count, + negative_count=service.vector_store.negative_count, + ) + try: added = await service.add_negative_example(request.text)