Spaces:
Running
Running
File size: 3,357 Bytes
cccf200 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 | """
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
|