feat: add sidebar stats Pydantic schemas
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
45
backend/app/schemas/sidebar.py
Normal file
45
backend/app/schemas/sidebar.py
Normal file
@@ -0,0 +1,45 @@
|
||||
"""Schemas for sidebar stats endpoint."""
|
||||
|
||||
from datetime import datetime
|
||||
from typing import Optional
|
||||
from uuid import UUID
|
||||
|
||||
from pydantic import BaseModel
|
||||
|
||||
|
||||
class SidebarActiveSession(BaseModel):
|
||||
"""An active or paused session for the activity feed."""
|
||||
session_id: UUID
|
||||
tree_name: str
|
||||
tree_id: UUID
|
||||
tree_type: str
|
||||
started_at: datetime
|
||||
ticket_number: Optional[str] = None
|
||||
psa_ticket_id: Optional[str] = None
|
||||
|
||||
|
||||
class SidebarRecentSession(BaseModel):
|
||||
"""A recently completed session for the activity feed."""
|
||||
session_id: UUID
|
||||
tree_name: str
|
||||
tree_id: UUID
|
||||
tree_type: str
|
||||
completed_at: datetime
|
||||
|
||||
|
||||
class SidebarTreeCounts(BaseModel):
|
||||
"""Tree counts for All Flows sub-items."""
|
||||
total: int
|
||||
troubleshooting: int
|
||||
procedural: int
|
||||
maintenance: int
|
||||
|
||||
|
||||
class SidebarStatsResponse(BaseModel):
|
||||
"""Response for GET /sessions/sidebar-stats."""
|
||||
resolved_today: int
|
||||
active_count: int
|
||||
total_session_minutes_today: int
|
||||
tree_counts: SidebarTreeCounts
|
||||
active_sessions: list[SidebarActiveSession]
|
||||
recent_completions: list[SidebarRecentSession]
|
||||
Reference in New Issue
Block a user