Files
state-hub/api/schemas/recently_on_scope.py

66 lines
1.6 KiB
Python

from __future__ import annotations
import uuid
from datetime import datetime
from pydantic import BaseModel, Field
class RecentlyOnScopeGenerate(BaseModel):
range: str = Field(default="1h", description="Time range such as 15m, 1h, 6h, or 1d")
since: datetime | None = None
until: datetime | None = None
class RecentlyOnScopeSourceCounts(BaseModel):
progress_events: int = 0
decisions: int = 0
workstreams: int = 0
tasks: int = 0
repos: int = 0
attention_items: int = 0
class RecentlyOnScopeReportMetadata(BaseModel):
id: str
domain_slug: str
range: str
since: datetime
until: datetime
generated_at: datetime
path: str
source_counts: RecentlyOnScopeSourceCounts
class RecentlyOnScopeGeneratedReport(RecentlyOnScopeReportMetadata):
markdown: str
class RecentlyOnScopeHourlyGenerate(RecentlyOnScopeGenerate):
active_only: bool = True
include_attention: bool = False
class RecentlyOnScopeSkippedDomain(BaseModel):
domain_slug: str
reason: str
source_counts: RecentlyOnScopeSourceCounts
class RecentlyOnScopeFailedDomain(BaseModel):
domain_slug: str
error: str
class RecentlyOnScopeHourlyRun(BaseModel):
range: str
since: datetime
until: datetime
generated_at: datetime
active_only: bool
include_attention: bool
generated: list[RecentlyOnScopeReportMetadata] = Field(default_factory=list)
skipped: list[RecentlyOnScopeSkippedDomain] = Field(default_factory=list)
failed: list[RecentlyOnScopeFailedDomain] = Field(default_factory=list)
progress_event_id: uuid.UUID | None = None