feat: add is_chat field to board memory and task_id to approvals, update pagination and response models
This commit is contained in:
@@ -13,6 +13,7 @@ ApprovalStatus = Literal["pending", "approved", "rejected"]
|
||||
|
||||
class ApprovalBase(SQLModel):
|
||||
action_type: str
|
||||
task_id: UUID | None = None
|
||||
payload: dict[str, object] | None = None
|
||||
confidence: int
|
||||
rubric_scores: dict[str, int] | None = None
|
||||
|
||||
@@ -9,12 +9,18 @@ from app.schemas.common import NonEmptyStr
|
||||
|
||||
|
||||
class BoardMemoryCreate(SQLModel):
|
||||
# For writes, reject blank/whitespace-only content.
|
||||
content: NonEmptyStr
|
||||
tags: list[str] | None = None
|
||||
source: str | None = None
|
||||
|
||||
|
||||
class BoardMemoryRead(BoardMemoryCreate):
|
||||
class BoardMemoryRead(SQLModel):
|
||||
id: UUID
|
||||
board_id: UUID
|
||||
# For reads, allow legacy rows that may have empty content (avoid response validation 500s).
|
||||
content: str
|
||||
tags: list[str] | None = None
|
||||
source: str | None = None
|
||||
is_chat: bool = False
|
||||
created_at: datetime
|
||||
|
||||
21
backend/app/schemas/pagination.py
Normal file
21
backend/app/schemas/pagination.py
Normal file
@@ -0,0 +1,21 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import TypeVar
|
||||
|
||||
from fastapi import Query
|
||||
from fastapi_pagination.customization import CustomizedPage, UseParamsFields
|
||||
from fastapi_pagination.limit_offset import LimitOffsetPage
|
||||
|
||||
T = TypeVar("T")
|
||||
|
||||
|
||||
# Project-wide default pagination response model.
|
||||
# - Keep `limit` / `offset` naming (matches existing API conventions).
|
||||
# - Cap list endpoints to 200 items per request (matches prior route-level constraints).
|
||||
DefaultLimitOffsetPage = CustomizedPage[
|
||||
LimitOffsetPage[T],
|
||||
UseParamsFields(
|
||||
limit=Query(200, ge=1, le=200),
|
||||
offset=Query(0, ge=0),
|
||||
),
|
||||
]
|
||||
24
backend/app/schemas/view_models.py
Normal file
24
backend/app/schemas/view_models.py
Normal file
@@ -0,0 +1,24 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from sqlmodel import SQLModel
|
||||
|
||||
from app.schemas.agents import AgentRead
|
||||
from app.schemas.approvals import ApprovalRead
|
||||
from app.schemas.board_memory import BoardMemoryRead
|
||||
from app.schemas.boards import BoardRead
|
||||
from app.schemas.tasks import TaskRead
|
||||
|
||||
|
||||
class TaskCardRead(TaskRead):
|
||||
assignee: str | None = None
|
||||
approvals_count: int = 0
|
||||
approvals_pending_count: int = 0
|
||||
|
||||
|
||||
class BoardSnapshot(SQLModel):
|
||||
board: BoardRead
|
||||
tasks: list[TaskCardRead]
|
||||
agents: list[AgentRead]
|
||||
approvals: list[ApprovalRead]
|
||||
chat_messages: list[BoardMemoryRead]
|
||||
pending_approvals_count: int = 0
|
||||
Reference in New Issue
Block a user