From b6bbdd40fe26e075dd1621b57945ca5d6bbb85e9 Mon Sep 17 00:00:00 2001 From: Leopoldadmin Date: Thu, 4 Jun 2026 00:06:22 +0000 Subject: [PATCH] Upload app/schemas/dashboard.py --- app/schemas/dashboard.py | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 app/schemas/dashboard.py diff --git a/app/schemas/dashboard.py b/app/schemas/dashboard.py new file mode 100644 index 0000000..0fe22f2 --- /dev/null +++ b/app/schemas/dashboard.py @@ -0,0 +1,40 @@ +"""Pydantic schemas for Dashboard endpoints.""" + +from __future__ import annotations + +from datetime import datetime +from typing import Optional + +from pydantic import BaseModel, ConfigDict + +from app.models.activity import ActivityType + + +class KPIOut(BaseModel): + """Headline KPIs for the org dashboard.""" + + open_deals_count: int + pipeline_value: float + won_this_month: int + conversion_rate: float + + +class ActivityFeedItem(BaseModel): + """One item in the activity feed.""" + + model_config = ConfigDict(from_attributes=True) + + id: int + type: ActivityType + subject: str + body: Optional[str] = None + account_id: Optional[int] = None + contact_id: Optional[int] = None + deal_id: Optional[int] = None + owner_id: int + completed_at: Optional[datetime] = None + due_date: Optional[datetime] = None + created_at: datetime + + +__all__ = ["ActivityFeedItem", "KPIOut"]