Spaces:
Sleeping
Sleeping
| """ | |
| 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 | |