feat: Add review events persistence, version display, and auto-versioning system

This commit is contained in:
Primakov Alexandr Alexandrovich
2025-10-13 14:18:37 +03:00
parent cfba28f913
commit 2db1225618
56 changed files with 750 additions and 436 deletions
+181
View File
@@ -0,0 +1,181 @@
# Тестирование LangGraph Streaming
Эти скрипты помогут проверить, как работает стриминг событий из LangGraph.
## Скрипты
### 1. `test_simple_graph.py` - Простой тест (БЕЗ БД)
**Рекомендуется запустить ПЕРВЫМ** для понимания как работает стриминг.
Тестирует простой граф с 3 нодами без реального review.
```bash
# Активировать venv
cd backend
source venv/Scripts/activate # Windows Git Bash
# или
source venv/bin/activate # Linux/Mac
# Запустить
python ../test_simple_graph.py
```
**Что тестирует:**
-`stream_mode=['updates']` - обновления нод
-`stream_mode=['messages']` - сообщения (LLM calls)
-`stream_mode=['updates', 'messages']` - оба режима
-`stream_mode=['values']` - значения состояния
-`stream_mode=['debug']` - режим отладки
- ✅ Callback обработка событий
**Ожидаемый результат:**
Должны появиться события для каждой ноды (node_1, node_2, node_3).
---
### 2. `test_langgraph_events.py` - Полный тест (С БД)
Тестирует реальный ReviewerAgent с настоящими данными из БД.
⚠️ **Требует:**
- Работающую БД с данными
- Существующий Review ID, PR Number, Repository ID
- Настроенный `.env` файл
```bash
# Активировать venv
cd backend
source venv/Scripts/activate # Windows
# или
source venv/bin/activate # Linux/Mac
# Запустить
python ../test_langgraph_events.py
```
**Перед запуском:**
Отредактируйте в файле `test_langgraph_events.py`:
```python
TEST_REVIEW_ID = 1 # ID существующего review
TEST_PR_NUMBER = 5 # Номер PR
TEST_REPOSITORY_ID = 1 # ID репозитория
```
**Что тестирует:**
- ✅ Полный цикл review с callback
- ✅ RAW стриминг напрямую из графа
- ✅ Все режимы: `updates`, `messages`, `updates + messages`
---
## Запуск локально (быстрый старт)
### Шаг 1: Простой тест
```bash
cd backend
source venv/Scripts/activate
python ../test_simple_graph.py
```
Смотрите вывод - должны быть события от каждой ноды.
### Шаг 2: Проверка формата событий
Обратите внимание на **тип** и **структуру** событий:
```
📨 Event #1
Type: <class 'dict'>
Keys: ['node_1']
Content: {'node_1': {...}}
```
или
```
📨 Event #1
Type: <class 'tuple'>
Tuple[0]: 'messages'
Tuple[1]: [AIMessage(...)]
```
### Шаг 3: Полный тест (если нужно)
Отредактируйте параметры в `test_langgraph_events.py` и запустите:
```bash
python ../test_langgraph_events.py
```
---
## Что искать в выводе
### ✅ ХОРОШО:
```
📨 Event #1
Type: <class 'dict'>
Content: {'node_1': {...}}
📨 Event #2
Type: <class 'dict'>
Content: {'node_2': {...}}
```
**События приходят!** Граф работает.
### ❌ ПЛОХО:
```
✅ Получено событий: 0
```
**События НЕ приходят!** Проблема с графом или версией LangGraph.
---
## Отладка
Если события не приходят:
1. **Проверьте версию LangGraph:**
```bash
pip show langgraph
```
Должна быть >= 0.1.0
2. **Проверьте, что граф компилируется:**
```python
graph = workflow.compile()
print(graph) # Должен вывести информацию о графе
```
3. **Попробуйте `ainvoke` вместо `astream`:**
```python
result = await graph.ainvoke(initial_state)
print(result) # Должен вернуть финальное состояние
```
4. **Проверьте логи:**
Включите DEBUG логирование:
```python
import logging
logging.basicConfig(level=logging.DEBUG)
```
---
## Результаты
После запуска тестов вы узнаете:
1.**Работает ли стриминг вообще?**
2.**Какой формат у событий?**
3.**Какие режимы стриминга поддерживаются?**
4.**Как правильно обрабатывать события?**
Это поможет понять, почему события не доходят до фронтенда.