feat: добавлен тестовый режим X-Test-Mode

This commit is contained in:
2026-01-26 20:34:24 +03:00
parent 9b8a1c64bc
commit 67f3a1bb18

View File

@@ -5,7 +5,7 @@ FastAPI endpoints для RAG сервиса.
import logging import logging
from typing import Annotated 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 import __version__
from app.api.auth import AuthDep from app.api.auth import AuthDep
@@ -160,17 +160,33 @@ async def add_positive_example(
request: ExampleRequest, request: ExampleRequest,
service: RAGServiceDep, service: RAGServiceDep,
_auth: AuthDep, _auth: AuthDep,
x_test_mode: str | None = Header(default=None, alias="X-Test-Mode"),
) -> ExampleResponse: ) -> ExampleResponse:
""" """
Добавляет текст как положительный пример (опубликованный пост). Добавляет текст как положительный пример (опубликованный пост).
При наличии заголовка X-Test-Mode: true пример НЕ сохраняется (тестовый режим).
Args: Args:
request: Запрос с текстом request: Запрос с текстом
service: RAG сервис service: RAG сервис
x_test_mode: Заголовок тестового режима
Returns: Returns:
ExampleResponse: Результат добавления 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: try:
added = await service.add_positive_example(request.text) added = await service.add_positive_example(request.text)
@@ -209,17 +225,33 @@ async def add_negative_example(
request: ExampleRequest, request: ExampleRequest,
service: RAGServiceDep, service: RAGServiceDep,
_auth: AuthDep, _auth: AuthDep,
x_test_mode: str | None = Header(default=None, alias="X-Test-Mode"),
) -> ExampleResponse: ) -> ExampleResponse:
""" """
Добавляет текст как отрицательный пример (отклоненный пост). Добавляет текст как отрицательный пример (отклоненный пост).
При наличии заголовка X-Test-Mode: true пример НЕ сохраняется (тестовый режим).
Args: Args:
request: Запрос с текстом request: Запрос с текстом
service: RAG сервис service: RAG сервис
x_test_mode: Заголовок тестового режима
Returns: Returns:
ExampleResponse: Результат добавления 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: try:
added = await service.add_negative_example(request.text) added = await service.add_negative_example(request.text)