deerflow-code/offline-backend-20260512/backend/app/report_collaboration/contracts/snapshots.py
2026-09-07 18:24:55 +08:00

28 lines
1.2 KiB
Python

"""``GET /sessions/{id}`` snapshot — the frontend's only fact source before SSE."""
from __future__ import annotations
from pydantic import BaseModel, ConfigDict, Field
from app.report_collaboration.contracts.agent_runs import AgentRun
from app.report_collaboration.contracts.commands import CollaborationCommand
from app.report_collaboration.contracts.messages import CollaborationMessage
from app.report_collaboration.contracts.nodes import CollaborationNodeState
from app.report_collaboration.contracts.plans import ReportPlanCandidate
from app.report_collaboration.contracts.reports import ReportVersion
from app.report_collaboration.contracts.runs import ReportRun, ReportSession
class SessionSnapshot(BaseModel):
model_config = ConfigDict(extra="forbid")
session: ReportSession
messages: list[CollaborationMessage] = Field(default_factory=list)
plans: list[ReportPlanCandidate] = Field(default_factory=list)
run: ReportRun | None = None
nodes: list[CollaborationNodeState] = Field(default_factory=list)
agent_runs: list[AgentRun] = Field(default_factory=list)
commands: list[CollaborationCommand] = Field(default_factory=list)
report_versions: list[ReportVersion] = Field(default_factory=list)
last_seq: int = 0