feat: Add review events persistence, version display, and auto-versioning system
This commit is contained in:
@@ -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. ✅ **Как правильно обрабатывать события?**
|
||||
|
||||
Это поможет понять, почему события не доходят до фронтенда.
|
||||
|
||||
Reference in New Issue
Block a user