todo_chatbot / src /models /task_optimization.py
Awais68
Deploy FastAPI backend with MCP and OpenAI agents
cccf200
Raw
History Blame Contribute Delete
3.36 kB
"""
TaskOptimization model for storing optimization analysis results.
"""
from typing import Optional, List, Dict, Any
from datetime import datetime
from sqlmodel import SQLModel, Field, Column, JSON
class TaskOptimization(SQLModel, table=True):
"""Task optimization entity for storing AI analysis results."""
__tablename__ = "task_optimizations"
id: Optional[int] = Field(default=None, primary_key=True)
user_id: int = Field(foreign_key="users.id", index=True)
# Analysis metadata
analysis_type: str = Field(max_length=50, index=True) # duplicate, priority, time_estimate, grouping, automation
task_ids: List[int] = Field(sa_column=Column(JSON)) # Tasks analyzed
# Results
confidence: float = Field(default=0.0, ge=0.0, le=1.0) # Confidence score 0-1
suggestions: Dict[str, Any] = Field(sa_column=Column(JSON)) # Analysis results
# Status
applied: bool = Field(default=False) # Whether user applied the suggestion
rejected: bool = Field(default=False) # Whether user rejected the suggestion
# Timestamps
created_at: datetime = Field(default_factory=datetime.utcnow)
updated_at: datetime = Field(default_factory=datetime.utcnow)
class DuplicateDetection(SQLModel):
"""Schema for duplicate task detection result."""
task_ids: List[int]
similarity_score: float = Field(ge=0.0, le=1.0)
confidence: float = Field(ge=0.0, le=1.0)
suggestion: str
merge_recommendation: Optional[str] = None
class PriorityAnalysis(SQLModel):
"""Schema for priority recommendation result."""
task_id: int
priority: str # high, medium, low
confidence: float = Field(ge=0.0, le=1.0)
reasoning: str
keywords: List[str]
class TimeEstimate(SQLModel):
"""Schema for time estimation result."""
task_id: int
estimated_hours: float = Field(gt=0)
confidence_interval: Dict[str, float] # {min: X, max: Y}
confidence: float = Field(ge=0.0, le=1.0)
complexity_factors: List[str]
class TaskGrouping(SQLModel):
"""Schema for task grouping recommendation."""
name: str
task_ids: List[int]
category: str
confidence: float = Field(ge=0.0, le=1.0)
reasoning: str
class AutomationOpportunity(SQLModel):
"""Schema for automation detection result."""
task_ids: List[int]
automation_type: str # recurring, integration, api, scheduled
confidence: float = Field(ge=0.0, le=1.0)
suggestion: str
implementation: str
class OptimizationRequest(SQLModel):
"""Schema for optimization request."""
task_ids: Optional[List[int]] = None # Specific tasks to analyze, None = all tasks
analysis_types: Optional[List[str]] = None # Specific analyses, None = all types
class OptimizationResponse(SQLModel):
"""Schema for optimization response."""
duplicates: List[DuplicateDetection] = []
priorities: List[PriorityAnalysis] = []
time_estimates: List[TimeEstimate] = []
groups: List[TaskGrouping] = []
automations: List[AutomationOpportunity] = []
total_suggestions: int
analysis_timestamp: datetime
class OptimizationActionRequest(SQLModel):
"""Schema for applying/rejecting optimization suggestion."""
optimization_id: int
action: str # apply, reject
parameters: Optional[Dict[str, Any]] = None # Additional parameters for applying