feat: Implement LLM streaming support and enhance event handling in review process

This commit is contained in:
Primakov Alexandr Alexandrovich
2025-10-13 17:48:03 +03:00
parent 2f29ccff74
commit 1d953f554b
6 changed files with 107 additions and 45 deletions

View File

@@ -227,21 +227,22 @@ class ReviewTaskWorker:
print(f" Prepared event_data: {event_data}")
logger.info(f" 🔔 Broadcasting event: type={event.get('type')}, connections={len(manager.active_connections)}")
# Save event to database
from app.models.review_event import ReviewEvent
db_event = ReviewEvent(
review_id=review.id,
event_type=event.get("type", "agent_update"),
step=event.get("step"),
message=event.get("message"),
data=event
)
db.add(db_event)
await db.commit()
print(f" ✓ Event saved to DB: {db_event.id}")
logger.debug(f" 💾 Event saved to DB: {db_event.id}")
# Save event to database (НЕ сохраняем llm_chunk - их слишком много)
if event.get("type") != "llm_chunk":
from app.models.review_event import ReviewEvent
db_event = ReviewEvent(
review_id=review.id,
event_type=event.get("type", "agent_update"),
step=event.get("step"),
message=event.get("message"),
data=event
)
db.add(db_event)
await db.commit()
print(f" Event saved to DB: {db_event.id}")
logger.debug(f" 💾 Event saved to DB: {db_event.id}")
# Broadcast to all connected clients
# Broadcast to all connected clients (отправляем все, включая llm_chunk)
print(f" Broadcasting to {len(manager.active_connections)} connections...")
await manager.broadcast(event_data)
print(f" ✓ Broadcast completed")
@@ -250,6 +251,9 @@ class ReviewTaskWorker:
if event.get("type") == "agent_step":
step = event.get("step", "unknown")
logger.info(f" 📍 Step: {step}")
elif event.get("type") == "llm_chunk":
# Не логируем каждый chunk, слишком много
pass
elif event.get("type") == "llm_message":
message = event.get("message", "")[:100]
logger.info(f" 💬 LLM: {message}...")