Claude Code - Backend Implementation Specialist
Add complete FastAPI Todo application with Docker support
1941764 | """ | |
| AI-powered task management endpoints using Cohere. | |
| This module provides REST API endpoints for AI features: | |
| - Task suggestions | |
| - Smart auto-completion | |
| - Task categorization | |
| - Description enhancement | |
| - Complexity analysis | |
| """ | |
| from fastapi import APIRouter, HTTPException, Depends | |
| from pydantic import BaseModel, Field | |
| from typing import List, Dict, Optional | |
| from src.services.cohere_ai import cohere_service | |
| from src.middleware.jwt_auth import get_current_user | |
| router = APIRouter() | |
| # Request/Response Models | |
| class TaskSuggestionRequest(BaseModel): | |
| context: str = Field(..., description="Context to generate suggestions from") | |
| count: int = Field(default=5, ge=1, le=10, description="Number of suggestions") | |
| class TaskSuggestionResponse(BaseModel): | |
| suggestions: List[str] | |
| class EnhanceDescriptionRequest(BaseModel): | |
| title: str = Field(..., description="Task title") | |
| description: str = Field(default="", description="Current description") | |
| class EnhanceDescriptionResponse(BaseModel): | |
| enhanced_description: str | |
| class CategorizeTaskRequest(BaseModel): | |
| title: str = Field(..., description="Task title") | |
| description: str = Field(default="", description="Task description") | |
| class CategorizeTaskResponse(BaseModel): | |
| category: str | |
| priority: str | |
| tags: List[str] | |
| class AutoCompleteRequest(BaseModel): | |
| partial_title: str = Field(..., description="Partial task title") | |
| class AutoCompleteResponse(BaseModel): | |
| completions: List[str] | |
| class AnalyzeComplexityRequest(BaseModel): | |
| title: str = Field(..., description="Task title") | |
| description: str = Field(default="", description="Task description") | |
| class AnalyzeComplexityResponse(BaseModel): | |
| complexity: str | |
| estimated_time: str | |
| needs_subtasks: bool | |
| # Endpoints | |
| async def generate_task_suggestions( | |
| request: TaskSuggestionRequest, | |
| current_user: dict = Depends(get_current_user) | |
| ): | |
| """ | |
| Generate AI-powered task suggestions based on context. | |
| Requires authentication. | |
| """ | |
| try: | |
| suggestions = cohere_service.generate_task_suggestions( | |
| context=request.context, | |
| count=request.count | |
| ) | |
| if not suggestions: | |
| raise HTTPException( | |
| status_code=500, | |
| detail="Failed to generate suggestions. Please try again." | |
| ) | |
| return TaskSuggestionResponse(suggestions=suggestions) | |
| except Exception as e: | |
| raise HTTPException( | |
| status_code=500, | |
| detail=f"Error generating suggestions: {str(e)}" | |
| ) | |
| async def enhance_task_description( | |
| request: EnhanceDescriptionRequest, | |
| current_user: dict = Depends(get_current_user) | |
| ): | |
| """ | |
| Enhance a task description with AI to make it more clear and actionable. | |
| Requires authentication. | |
| """ | |
| try: | |
| enhanced = cohere_service.enhance_task_description( | |
| title=request.title, | |
| description=request.description | |
| ) | |
| return EnhanceDescriptionResponse(enhanced_description=enhanced) | |
| except Exception as e: | |
| raise HTTPException( | |
| status_code=500, | |
| detail=f"Error enhancing description: {str(e)}" | |
| ) | |
| async def categorize_task( | |
| request: CategorizeTaskRequest, | |
| current_user: dict = Depends(get_current_user) | |
| ): | |
| """ | |
| Categorize a task and suggest priority level using AI. | |
| Requires authentication. | |
| """ | |
| try: | |
| result = cohere_service.categorize_task( | |
| title=request.title, | |
| description=request.description | |
| ) | |
| return CategorizeTaskResponse(**result) | |
| except Exception as e: | |
| raise HTTPException( | |
| status_code=500, | |
| detail=f"Error categorizing task: {str(e)}" | |
| ) | |
| async def autocomplete_task( | |
| request: AutoCompleteRequest, | |
| current_user: dict = Depends(get_current_user) | |
| ): | |
| """ | |
| Provide smart auto-completion suggestions for task titles. | |
| Requires authentication. | |
| """ | |
| try: | |
| completions = cohere_service.smart_complete_task( | |
| partial_title=request.partial_title | |
| ) | |
| return AutoCompleteResponse(completions=completions) | |
| except Exception as e: | |
| raise HTTPException( | |
| status_code=500, | |
| detail=f"Error generating completions: {str(e)}" | |
| ) | |
| async def analyze_task_complexity( | |
| request: AnalyzeComplexityRequest, | |
| current_user: dict = Depends(get_current_user) | |
| ): | |
| """ | |
| Analyze task complexity and provide time estimates using AI. | |
| Requires authentication. | |
| """ | |
| try: | |
| result = cohere_service.analyze_task_complexity( | |
| title=request.title, | |
| description=request.description | |
| ) | |
| return AnalyzeComplexityResponse(**result) | |
| except Exception as e: | |
| raise HTTPException( | |
| status_code=500, | |
| detail=f"Error analyzing complexity: {str(e)}" | |
| ) | |
| async def ai_health_check(): | |
| """ | |
| Check if AI service is properly configured. | |
| Does not require authentication. | |
| """ | |
| try: | |
| import os | |
| api_key = os.getenv("COHERE_API_KEY") | |
| if not api_key: | |
| return { | |
| "status": "error", | |
| "message": "COHERE_API_KEY not configured" | |
| } | |
| return { | |
| "status": "healthy", | |
| "message": "AI service is configured and ready", | |
| "provider": "Cohere" | |
| } | |
| except Exception as e: | |
| return { | |
| "status": "error", | |
| "message": str(e) | |
| } | |