feat: add is_chat field to board memory and task_id to approvals, update pagination and response models

This commit is contained in:
Abhimanyu Saharan
2026-02-06 19:11:11 +05:30
parent d86fe0a7a6
commit 6c14af0451
76 changed files with 2070 additions and 571 deletions

View File

@@ -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

View File

@@ -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

View 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),
),
]

View 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