feat: add description field to boards and update related components for onboarding

This commit is contained in:
Abhimanyu Saharan
2026-02-11 18:19:29 +05:30
parent 25eb45bf54
commit c6417bcffb
15 changed files with 148 additions and 6 deletions

View File

@@ -175,6 +175,7 @@ async def start_onboarding(
prompt = (
"BOARD ONBOARDING REQUEST\n\n"
f"Board Name: {board.name}\n"
f"Board Description: {board.description or '(not provided)'}\n"
"You are the gateway agent. Ask the user 6-10 focused questions total:\n"
"- 3-6 questions to clarify the board goal.\n"
"- 1 question to choose a unique name for the board lead agent "

View File

@@ -23,6 +23,7 @@ class Board(TenantScoped, table=True):
organization_id: UUID = Field(foreign_key="organizations.id", index=True)
name: str
slug: str = Field(index=True)
description: str = Field(default="")
gateway_id: UUID | None = Field(default=None, foreign_key="gateways.id", index=True)
board_group_id: UUID | None = Field(
default=None,

View File

@@ -11,6 +11,7 @@ from sqlmodel import SQLModel
_ERR_GOAL_FIELDS_REQUIRED = "Confirmed goal boards require objective and success_metrics"
_ERR_GATEWAY_REQUIRED = "gateway_id is required"
_ERR_DESCRIPTION_REQUIRED = "description is required"
RUNTIME_ANNOTATION_TYPES = (datetime, UUID)
@@ -19,6 +20,7 @@ class BoardBase(SQLModel):
name: str
slug: str
description: str
gateway_id: UUID | None = None
board_group_id: UUID | None = None
board_type: str = "goal"
@@ -37,6 +39,10 @@ class BoardCreate(BoardBase):
@model_validator(mode="after")
def validate_goal_fields(self) -> Self:
"""Require gateway and goal details when creating a confirmed goal board."""
description = self.description.strip()
if not description:
raise ValueError(_ERR_DESCRIPTION_REQUIRED)
self.description = description
if self.gateway_id is None:
raise ValueError(_ERR_GATEWAY_REQUIRED)
if (
@@ -53,6 +59,7 @@ class BoardUpdate(SQLModel):
name: str | None = None
slug: str | None = None
description: str | None = None
gateway_id: UUID | None = None
board_group_id: UUID | None = None
board_type: str | None = None
@@ -68,6 +75,13 @@ class BoardUpdate(SQLModel):
# Treat explicit null like "unset" is invalid for patch updates.
if "gateway_id" in self.model_fields_set and self.gateway_id is None:
raise ValueError(_ERR_GATEWAY_REQUIRED)
if "description" in self.model_fields_set:
if self.description is None:
raise ValueError(_ERR_DESCRIPTION_REQUIRED)
description = self.description.strip()
if not description:
raise ValueError(_ERR_DESCRIPTION_REQUIRED)
self.description = description
return self