"""Запуск тестового пайплайна «полная цепочка»: intent router + retrieval + LLM.

Цепочка: intent_router_v2 → RAG retrieval → ответ GigaChat (или другой LLM). Нужны БД и индексированный репозиторий.

Запуск из корня проекта (agent):

  python -m tests.pipeline_setup.suite_02_pipeline.cli.run_full_chain --rag-session-id <uuid> [--case-id ID ...] [--verbose]

  Или с индексацией перед прогоном:
  python -m tests.pipeline_setup.suite_02_pipeline.cli.run_full_chain --reindex-repo-path /path/to/repo [--reindex-project-id ID]

Параметры:
  --rag-session-id       (рекомендуется) UUID RAG-сессии (после индексации через index_repo или run с --reindex-repo-path).
  --reindex-repo-path    Индексировать указанный репозиторий перед прогоном и использовать новую сессию.
  --reindex-project-id   project_id для новой сессии при использовании --reindex-repo-path.
  --case-id              (повторяемый) Запустить только указанные кейсы.
  --verbose              Выводить диагностику по каждому кейсу.
  --test-name            Префикс имени файла с результатами (по умолчанию cli_full_chain).

Переменные окружения:
  RUN_INTENT_PIPELINE_FULL_CHAIN=1  — включить маркер full_chain (иначе тесты с этим маркером пропускаются).
  DATABASE_URL                       — подключение к БД (обязательно для retrieval).
  (и переменные для доступа к LLM, см. .env и pipeline_intent_rag/.env.test)
"""

from __future__ import annotations

import sys
from pathlib import Path

_agent_root = Path(__file__).resolve().parents[4]
if str(_agent_root) not in sys.path:
    sys.path.insert(0, str(_agent_root))
_src = _agent_root / "src"
if _src.exists() and str(_src) not in sys.path:
    sys.path.insert(0, str(_src))


def main() -> int:
    argv = ["run", "--mode", "full_chain", *sys.argv[1:]]
    from tests.pipeline_setup.suite_02_pipeline.pipeline_intent_rag.cli import main as cli_main
    return cli_main(argv)


if __name__ == "__main__":
    raise SystemExit(main())
