From 67f3a1bb182aa60d22e19838d112f7ed491d6af9 Mon Sep 17 00:00:00 2001 From: Andrey Date: Mon, 26 Jan 2026 20:34:24 +0300 Subject: [PATCH] =?UTF-8?q?feat:=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20=D1=82=D0=B5=D1=81=D1=82=D0=BE=D0=B2=D1=8B=D0=B9?= =?UTF-8?q?=20=D1=80=D0=B5=D0=B6=D0=B8=D0=BC=20X-Test-Mode?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/routes.py | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) 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)