feat: add boards and tasks management endpoints

This commit is contained in:
Abhimanyu Saharan
2026-02-04 02:28:51 +05:30
parent 23faa0865b
commit 1abc8f68f3
170 changed files with 6860 additions and 10706 deletions

View File

@@ -0,0 +1,20 @@
from app.schemas.activity_events import ActivityEventRead
from app.schemas.agents import AgentCreate, AgentRead, AgentUpdate
from app.schemas.boards import BoardCreate, BoardRead, BoardUpdate
from app.schemas.tasks import TaskCreate, TaskRead, TaskUpdate
from app.schemas.users import UserCreate, UserRead
__all__ = [
"ActivityEventRead",
"AgentCreate",
"AgentRead",
"AgentUpdate",
"BoardCreate",
"BoardRead",
"BoardUpdate",
"TaskCreate",
"TaskRead",
"TaskUpdate",
"UserCreate",
"UserRead",
]

View File

@@ -0,0 +1,15 @@
from __future__ import annotations
from datetime import datetime
from uuid import UUID
from sqlmodel import SQLModel
class ActivityEventRead(SQLModel):
id: UUID
event_type: str
message: str | None
agent_id: UUID | None
task_id: UUID | None
created_at: datetime

View File

@@ -0,0 +1,36 @@
from __future__ import annotations
from datetime import datetime
from uuid import UUID
from sqlmodel import SQLModel
class AgentBase(SQLModel):
name: str
status: str = "online"
class AgentCreate(AgentBase):
pass
class AgentUpdate(SQLModel):
name: str | None = None
status: str | None = None
class AgentRead(AgentBase):
id: UUID
openclaw_session_id: str | None = None
last_seen_at: datetime
created_at: datetime
updated_at: datetime
class AgentHeartbeat(SQLModel):
status: str | None = None
class AgentHeartbeatCreate(AgentHeartbeat):
name: str

View File

@@ -0,0 +1,26 @@
from __future__ import annotations
from datetime import datetime
from uuid import UUID
from sqlmodel import SQLModel
class BoardBase(SQLModel):
name: str
slug: str
class BoardCreate(BoardBase):
pass
class BoardUpdate(SQLModel):
name: str | None = None
slug: str | None = None
class BoardRead(BoardBase):
id: UUID
created_at: datetime
updated_at: datetime

View File

@@ -1,53 +0,0 @@
from __future__ import annotations
from sqlmodel import SQLModel
class DepartmentCreate(SQLModel):
name: str
head_employee_id: int | None = None
class DepartmentUpdate(SQLModel):
name: str | None = None
head_employee_id: int | None = None
class TeamCreate(SQLModel):
name: str
department_id: int
lead_employee_id: int | None = None
class TeamUpdate(SQLModel):
name: str | None = None
department_id: int | None = None
lead_employee_id: int | None = None
class EmployeeCreate(SQLModel):
name: str
employee_type: str
department_id: int | None = None
team_id: int | None = None
manager_id: int | None = None
title: str | None = None
status: str = "active"
# OpenClaw integration
openclaw_session_key: str | None = None
notify_enabled: bool = True
class EmployeeUpdate(SQLModel):
name: str | None = None
employee_type: str | None = None
department_id: int | None = None
team_id: int | None = None
manager_id: int | None = None
title: str | None = None
status: str | None = None
# OpenClaw integration
openclaw_session_key: str | None = None
notify_enabled: bool | None = None

View File

@@ -1,15 +0,0 @@
from __future__ import annotations
from sqlmodel import SQLModel
class ProjectCreate(SQLModel):
name: str
status: str = "active"
team_id: int | None = None
class ProjectUpdate(SQLModel):
name: str | None = None
status: str | None = None
team_id: int | None = None

View File

@@ -0,0 +1,34 @@
from __future__ import annotations
from datetime import datetime
from uuid import UUID
from sqlmodel import SQLModel
class TaskBase(SQLModel):
title: str
description: str | None = None
status: str = "inbox"
priority: str = "medium"
due_at: datetime | None = None
class TaskCreate(TaskBase):
created_by_user_id: UUID | None = None
class TaskUpdate(SQLModel):
title: str | None = None
description: str | None = None
status: str | None = None
priority: str | None = None
due_at: datetime | None = None
class TaskRead(TaskBase):
id: UUID
board_id: UUID | None
created_by_user_id: UUID | None
created_at: datetime
updated_at: datetime

View File

@@ -0,0 +1,20 @@
from __future__ import annotations
from uuid import UUID
from sqlmodel import SQLModel
class UserBase(SQLModel):
clerk_user_id: str
email: str | None = None
name: str | None = None
class UserCreate(UserBase):
pass
class UserRead(UserBase):
id: UUID
is_super_admin: bool

View File

@@ -1,33 +0,0 @@
from __future__ import annotations
from sqlmodel import SQLModel
class TaskCreate(SQLModel):
project_id: int
title: str
description: str | None = None
status: str = "backlog"
assignee_employee_id: int | None = None
reviewer_employee_id: int | None = None
created_by_employee_id: int | None = None
class TaskUpdate(SQLModel):
title: str | None = None
description: str | None = None
status: str | None = None
assignee_employee_id: int | None = None
reviewer_employee_id: int | None = None
class TaskCommentCreate(SQLModel):
task_id: int
author_employee_id: int | None = None
reply_to_comment_id: int | None = None
body: str
class TaskReviewDecision(SQLModel):
decision: str # approve | changes
comment_body: str