# Suite 02 Pipeline

Интеграционный набор тестов для режимов:

- `router_only`
- `router_rag`
- `full_chain`

## Что входит в suite

- `pipeline_intent_rag/` — тесты, fixtures и runtime пайплайна
- `cli/` — запускные скрипты для индексации и ручного прогона пайплайна

## Запуск тестов через pytest

Из корня проекта:

```bash
PYTHONPATH=. pytest tests/pipeline_setup/suite_02_pipeline/pipeline_intent_rag/test_intent_router_only_matrix.py -q
```

Для retrieval-режима:

```bash
PYTHONPATH=. RUN_INTENT_PIPELINE_ROUTER_RAG=1 pytest -m router_rag tests/pipeline_setup/suite_02_pipeline/pipeline_intent_rag/ -q
```

Для полной цепочки:

```bash
PYTHONPATH=. RUN_INTENT_PIPELINE_FULL_CHAIN=1 pytest -m full_chain tests/pipeline_setup/suite_02_pipeline/pipeline_intent_rag/ -q
```

## Запуск через CLI

### 1. Индексация репозитория

```bash
PYTHONPATH=. python -m tests.pipeline_setup.suite_02_pipeline.cli.index_repo --repo-path /abs/path/to/repo [--project-id ID]
```

Параметры:

- `--repo-path` — путь к индексируемому репозиторию
- `--project-id` — `project_id` для новой RAG-сессии

### 2. Router only

```bash
PYTHONPATH=. python -m tests.pipeline_setup.suite_02_pipeline.cli.run_router_only [--case-id ID ...] [--verbose] [--test-name PREFIX]
```

Параметры:

- `--case-id` — запуск только выбранных кейсов, можно передавать несколько раз
- `--verbose` — печатать полную диагностику
- `--test-name` — префикс имени артефакта

### 3. Router + RAG

```bash
PYTHONPATH=. python -m tests.pipeline_setup.suite_02_pipeline.cli.run_router_rag --rag-session-id <uuid> [--case-id ID ...] [--verbose] [--test-name PREFIX]
```

или с переиндексацией:

```bash
PYTHONPATH=. python -m tests.pipeline_setup.suite_02_pipeline.cli.run_router_rag --reindex-repo-path /abs/path/to/repo [--reindex-project-id ID] [--case-id ID ...] [--verbose]
```

Параметры:

- `--rag-session-id` — готовый `rag_session_id` для всех кейсов
- `--reindex-repo-path` — путь к репозиторию, который нужно проиндексировать перед прогоном
- `--reindex-project-id` — `project_id` для новой RAG-сессии
- `--case-id` — запуск только выбранных кейсов
- `--verbose` — печатать расширенную диагностику
- `--test-name` — префикс имени артефакта

### 4. Full chain

```bash
PYTHONPATH=. python -m tests.pipeline_setup.suite_02_pipeline.cli.run_full_chain --rag-session-id <uuid> [--case-id ID ...] [--verbose] [--test-name PREFIX]
```

или с переиндексацией:

```bash
PYTHONPATH=. python -m tests.pipeline_setup.suite_02_pipeline.cli.run_full_chain --reindex-repo-path /abs/path/to/repo [--reindex-project-id ID] [--case-id ID ...] [--verbose]
```

Параметры те же, что и у `run_router_rag`.

## Переменные окружения

- `RUN_INTENT_PIPELINE_ROUTER_RAG=1` — включает тесты и прогоны `router_rag`
- `RUN_INTENT_PIPELINE_FULL_CHAIN=1` — включает тесты и прогоны `full_chain`
- `DATABASE_URL` — обязателен для retrieval и full chain
- `INTENT_PIPELINE_FORCE_RAG_SESSION_ID` — принудительный `rag_session_id` для всех кейсов
- `INTENT_PIPELINE_RAG_SESSION_ID` — дефолтный `rag_session_id`
- `INTENT_PIPELINE_REINDEX_REPO_PATH` — путь к репозиторию для автоиндексации
- `INTENT_PIPELINE_REINDEX_PROJECT_ID` — `project_id` для автоиндексации

Артефакты прогонов пишутся в:
[test_results](/Users/alex/Dev_projects_v2/ai driven app process/v2/agent/tests/pipeline_setup/test_results)

Детали по внутреннему устройству пайплайна:
[pipeline_intent_rag/README.md](/Users/alex/Dev_projects_v2/ai driven app process/v2/agent/tests/pipeline_setup/suite_02_pipeline/pipeline_intent_rag/README.md)
