Initial commit: VKUS vitrina MVP (frontend + backend).
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
from dataclasses import dataclass, field
|
||||
from datetime import datetime, timezone
|
||||
|
||||
from app.models import AnalyticsSummary, FeedbackRequest
|
||||
|
||||
|
||||
@dataclass
|
||||
class FeedbackEvent:
|
||||
message_id: str
|
||||
helped: bool
|
||||
query: str
|
||||
system: str | None
|
||||
confidence: float
|
||||
created_at: str
|
||||
|
||||
|
||||
class AnalyticsStore:
|
||||
def __init__(self) -> None:
|
||||
self._events: list[FeedbackEvent] = []
|
||||
|
||||
def record(self, request: FeedbackRequest) -> FeedbackEvent:
|
||||
event = FeedbackEvent(
|
||||
message_id=request.message_id,
|
||||
helped=request.helped,
|
||||
query=request.query,
|
||||
system=request.system,
|
||||
confidence=request.confidence,
|
||||
created_at=datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%S"),
|
||||
)
|
||||
self._events.append(event)
|
||||
return event
|
||||
|
||||
def summary(self) -> AnalyticsSummary:
|
||||
total = len(self._events)
|
||||
helped = sum(1 for e in self._events if e.helped)
|
||||
not_helped = total - helped
|
||||
deflection = round((helped / total) * 100, 1) if total else 0.0
|
||||
return AnalyticsSummary(
|
||||
total_feedback=total,
|
||||
helped_count=helped,
|
||||
not_helped_count=not_helped,
|
||||
deflection_rate=deflection,
|
||||
)
|
||||
|
||||
|
||||
analytics_store = AnalyticsStore()
|
||||
Reference in New Issue
Block a user