Add typed request model for today workflow task status updates

This commit is contained in:
ي
2026-03-06 21:45:48 +05:30
parent 5d49351c2d
commit 62d5cf773e

View File

@@ -1,7 +1,9 @@
from fastapi import APIRouter, Depends, HTTPException from fastapi import APIRouter, Depends, HTTPException
from typing import Any, Dict, Optional from typing import Any, Dict, Optional
from datetime import datetime from datetime import datetime
from enum import Enum
from loguru import logger from loguru import logger
from pydantic import BaseModel, Field
from sqlalchemy.orm import Session from sqlalchemy.orm import Session
@@ -15,6 +17,23 @@ from services.intelligence.txtai_service import TxtaiIntelligenceService
router = APIRouter(prefix="/api/today-workflow", tags=["Today Workflow"]) router = APIRouter(prefix="/api/today-workflow", tags=["Today Workflow"])
class TaskStatusEnum(str, Enum):
pending = "pending"
in_progress = "in_progress"
completed = "completed"
skipped = "skipped"
dismissed = "dismissed"
class TaskStatusUpdateRequest(BaseModel):
status: TaskStatusEnum = Field(..., description="New task status")
completion_notes: Optional[str] = Field(
None,
max_length=4000,
description="Optional notes about task completion or outcome",
)
async def _index_tasks_to_sif(user_id: str, date: str, tasks: list[dict], label: str): async def _index_tasks_to_sif(user_id: str, date: str, tasks: list[dict], label: str):
svc = TxtaiIntelligenceService(user_id) svc = TxtaiIntelligenceService(user_id)
items = [] items = []
@@ -172,15 +191,13 @@ from services.task_memory_service import TaskMemoryService
@router.post("/tasks/{task_id}/status") @router.post("/tasks/{task_id}/status")
async def set_task_status( async def set_task_status(
task_id: int, task_id: int,
body: Dict[str, Any], body: TaskStatusUpdateRequest,
current_user: dict = Depends(get_current_user), current_user: dict = Depends(get_current_user),
db: Session = Depends(get_db), db: Session = Depends(get_db),
) -> Dict[str, Any]: ) -> Dict[str, Any]:
user_id = str(current_user.get("id")) user_id = str(current_user.get("id"))
status = body.get("status") status = body.status.value
if not status: completion_notes = body.completion_notes
raise HTTPException(status_code=400, detail="status is required")
completion_notes = body.get("completion_notes")
task = update_task_status(db, user_id, task_id, status=status, completion_notes=completion_notes) task = update_task_status(db, user_id, task_id, status=status, completion_notes=completion_notes)
if not task: if not task: