diff --git a/frontend/src/components/ReviewStream.tsx b/frontend/src/components/ReviewStream.tsx index 20c7347..ed727a1 100644 --- a/frontend/src/components/ReviewStream.tsx +++ b/frontend/src/components/ReviewStream.tsx @@ -33,46 +33,58 @@ export const ReviewStream: React.FC = ({ reviewId }) => { const [llmMessages, setLlmMessages] = useState([]); useEffect(() => { + console.log('🔌 Connecting to WebSocket:', WS_URL); + console.log('👀 Watching for review ID:', reviewId); + const ws = new WebSocket(WS_URL); ws.onopen = () => { - console.log('WebSocket connected for streaming'); + console.log('✅ WebSocket connected for streaming'); setIsConnected(true); }; ws.onmessage = (event) => { try { + console.log('📨 WebSocket message received:', event.data); const data: StreamEvent = JSON.parse(event.data); + console.log('📦 Parsed event:', data); + console.log(`🔍 Event review_id: ${data.review_id}, Expected: ${reviewId}`); // Filter events for this review if (data.review_id === reviewId) { + console.log('✅ Event matches review ID, adding to events'); setEvents((prev) => [...prev, data]); // Update current step if (data.data.type === 'agent_step') { + console.log('🚶 Agent step:', data.data.step); setCurrentStep(data.data.step || ''); } // Collect LLM messages if (data.data.type === 'llm_message') { + console.log('💬 LLM message:', data.data.message); setLlmMessages((prev) => [...prev, data.data.message || '']); } + } else { + console.log('⏭️ Event is for different review, skipping'); } } catch (error) { - console.error('Error parsing WebSocket message:', error); + console.error('❌ Error parsing WebSocket message:', error); } }; ws.onclose = () => { - console.log('WebSocket disconnected'); + console.log('🔌 WebSocket disconnected'); setIsConnected(false); }; ws.onerror = (error) => { - console.error('WebSocket error:', error); + console.error('❌ WebSocket error:', error); }; return () => { + console.log('🔌 Closing WebSocket'); ws.close(); }; }, [reviewId]); diff --git a/frontend/src/components/WebSocketStatus.tsx b/frontend/src/components/WebSocketStatus.tsx index 33a64f3..4d18869 100644 --- a/frontend/src/components/WebSocketStatus.tsx +++ b/frontend/src/components/WebSocketStatus.tsx @@ -18,7 +18,7 @@ export default function WebSocketStatus() { const statusColors = { connected: 'bg-green-500', - disconnected: 'bg-gray-500', + disconnected: 'bg-dark-text-muted', error: 'bg-red-500', }; @@ -29,9 +29,9 @@ export default function WebSocketStatus() { }; return ( -
+
- {statusLabels[status]} + {statusLabels[status]}
); } diff --git a/frontend/src/pages/Organizations.tsx b/frontend/src/pages/Organizations.tsx index 67ce3e5..140b163 100644 --- a/frontend/src/pages/Organizations.tsx +++ b/frontend/src/pages/Organizations.tsx @@ -140,23 +140,23 @@ export default function Organizations() { {data?.items.map((org) => (
-

{org.name}

- {org.name} + {org.is_active ? 'Активна' : 'Неактивна'} - + {org.platform.toUpperCase()}
-
+
🌐 {org.base_url}
{org.last_scan_at && (
@@ -166,8 +166,8 @@ export default function Organizations() { )}
-
- Webhook: {org.webhook_url} +
+ Webhook: {org.webhook_url}
@@ -181,13 +181,13 @@ export default function Organizations() { @@ -198,8 +198,8 @@ export default function Organizations() {
{data?.items.length === 0 && ( -
-

Нет организаций

+
+

Нет организаций