generated from coulomb/repo-seed
66 lines
1.6 KiB
Python
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
|