Files
ALwrity/backend/api/content_planning/strategy_copilot.py
2025-08-28 20:46:42 +05:30

72 lines
2.3 KiB
Python

from fastapi import APIRouter, HTTPException, Depends
from sqlalchemy.orm import Session
from typing import Dict, Any, List
from services.database import get_db
from services.strategy_copilot_service import StrategyCopilotService
router = APIRouter(prefix="/api/content-planning/strategy", tags=["strategy-copilot"])
@router.post("/generate-category-data")
async def generate_category_data(
request: Dict[str, Any],
db: Session = Depends(get_db)
):
"""Generate data for a specific category based on user description."""
try:
service = StrategyCopilotService(db)
result = await service.generate_category_data(
category=request["category"],
user_description=request["userDescription"],
current_form_data=request["currentFormData"]
)
return {"success": True, "data": result}
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
@router.post("/validate-field")
async def validate_field(
request: Dict[str, Any],
db: Session = Depends(get_db)
):
"""Validate a specific strategy field."""
try:
service = StrategyCopilotService(db)
result = await service.validate_field(
field_id=request["fieldId"],
value=request["value"]
)
return result
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
@router.post("/analyze")
async def analyze_strategy(
request: Dict[str, Any],
db: Session = Depends(get_db)
):
"""Analyze complete strategy for completeness and coherence."""
try:
service = StrategyCopilotService(db)
result = await service.analyze_strategy(
form_data=request["formData"]
)
return result
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
@router.post("/generate-suggestions")
async def generate_suggestions(
request: Dict[str, Any],
db: Session = Depends(get_db)
):
"""Generate suggestions for a specific field."""
try:
service = StrategyCopilotService(db)
result = await service.generate_field_suggestions(
field_id=request["fieldId"],
current_form_data=request["currentFormData"]
)
return result
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))