Some checks failed
CI / Frontend Lint & Type Check (push) Has been cancelled
CI / Frontend Build (push) Has been cancelled
CI / Backend Lint (push) Has been cancelled
CI / Backend Tests (push) Has been cancelled
CI / Docker Build (push) Has been cancelled
CI / Security Scan (push) Has been cancelled
Deploy / Build & Push Images (push) Has been cancelled
Deploy / Deploy to Server (push) Has been cancelled
Deploy / Notify (push) Has been cancelled
48 lines
1.0 KiB
Python
48 lines
1.0 KiB
Python
"""
|
|
Telemetry schemas (4A.2).
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from datetime import datetime
|
|
from typing import Optional
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class TelemetryKpiWindow(BaseModel):
|
|
days: int = Field(ge=1, le=365)
|
|
start: datetime
|
|
end: datetime
|
|
|
|
|
|
class DealFunnelKpis(BaseModel):
|
|
listing_views: int = 0
|
|
inquiries_created: int = 0
|
|
seller_replied_inquiries: int = 0
|
|
inquiry_reply_rate: float = 0.0
|
|
|
|
listings_with_inquiries: int = 0
|
|
listings_sold: int = 0
|
|
inquiry_to_sold_listing_rate: float = 0.0
|
|
|
|
median_reply_seconds: Optional[float] = None
|
|
median_time_to_sold_seconds: Optional[float] = None
|
|
|
|
|
|
class YieldFunnelKpis(BaseModel):
|
|
connected_domains: int = 0
|
|
clicks: int = 0
|
|
conversions: int = 0
|
|
conversion_rate: float = 0.0
|
|
|
|
payouts_paid: int = 0
|
|
payouts_paid_amount_total: float = 0.0
|
|
|
|
|
|
class TelemetryKpisResponse(BaseModel):
|
|
window: TelemetryKpiWindow
|
|
deal: DealFunnelKpis
|
|
yield_: YieldFunnelKpis = Field(alias="yield")
|
|
|