Files
ALwrity/backend/api/content_planning/api/models/responses.py
2025-08-06 12:48:02 +05:30

135 lines
4.0 KiB
Python

"""
Response Models for Content Planning API
Extracted from the main content_planning.py file for better organization.
"""
from pydantic import BaseModel, Field
from typing import Dict, Any, List, Optional
from datetime import datetime
# Content Strategy Response Models
class ContentStrategyResponse(BaseModel):
id: int
name: str
industry: str
target_audience: Dict[str, Any]
content_pillars: List[Dict[str, Any]]
ai_recommendations: Dict[str, Any]
created_at: datetime
updated_at: datetime
# Calendar Event Response Models
class CalendarEventResponse(BaseModel):
id: int
strategy_id: int
title: str
description: str
content_type: str
platform: str
scheduled_date: datetime
status: str
ai_recommendations: Optional[Dict[str, Any]] = None
created_at: datetime
updated_at: datetime
# Content Gap Analysis Response Models
class ContentGapAnalysisResponse(BaseModel):
id: int
user_id: int
website_url: str
competitor_urls: List[str]
target_keywords: Optional[List[str]] = None
industry: Optional[str] = None
analysis_results: Optional[Dict[str, Any]] = None
recommendations: Optional[Dict[str, Any]] = None
opportunities: Optional[Dict[str, Any]] = None
created_at: datetime
updated_at: datetime
class ContentGapAnalysisFullResponse(BaseModel):
website_analysis: Dict[str, Any]
competitor_analysis: Dict[str, Any]
gap_analysis: Dict[str, Any]
recommendations: List[Dict[str, Any]]
opportunities: List[Dict[str, Any]]
created_at: datetime
# AI Analytics Response Models
class AIAnalyticsResponse(BaseModel):
analysis_type: str
strategy_id: int
results: Dict[str, Any]
recommendations: List[Dict[str, Any]]
analysis_date: datetime
# Calendar Generation Response Models
class CalendarGenerationResponse(BaseModel):
user_id: int
strategy_id: Optional[int]
calendar_type: str
industry: str
business_size: str
generated_at: datetime
content_pillars: List[str]
platform_strategies: Dict[str, Any]
content_mix: Dict[str, float]
daily_schedule: List[Dict[str, Any]]
weekly_themes: List[Dict[str, Any]]
content_recommendations: List[Dict[str, Any]]
optimal_timing: Dict[str, Any]
performance_predictions: Dict[str, Any]
trending_topics: List[Dict[str, Any]]
repurposing_opportunities: List[Dict[str, Any]]
ai_insights: List[Dict[str, Any]]
competitor_analysis: Dict[str, Any]
gap_analysis_insights: Dict[str, Any]
strategy_insights: Dict[str, Any]
onboarding_insights: Dict[str, Any]
processing_time: float
ai_confidence: float
class ContentOptimizationResponse(BaseModel):
user_id: int
event_id: Optional[int]
original_content: Dict[str, Any]
optimized_content: Dict[str, Any]
platform_adaptations: List[str]
visual_recommendations: List[str]
hashtag_suggestions: List[str]
keyword_optimization: Dict[str, Any]
tone_adjustments: Dict[str, Any]
length_optimization: Dict[str, Any]
performance_prediction: Dict[str, Any]
optimization_score: float
created_at: datetime
class PerformancePredictionResponse(BaseModel):
user_id: int
strategy_id: Optional[int]
content_type: str
platform: str
predicted_engagement_rate: float
predicted_reach: int
predicted_conversions: int
predicted_roi: float
confidence_score: float
recommendations: List[str]
created_at: datetime
class ContentRepurposingResponse(BaseModel):
user_id: int
strategy_id: Optional[int]
original_content: Dict[str, Any]
platform_adaptations: List[Dict[str, Any]]
transformations: List[Dict[str, Any]]
implementation_tips: List[str]
gap_addresses: List[str]
created_at: datetime
class TrendingTopicsResponse(BaseModel):
user_id: int
industry: str
trending_topics: List[Dict[str, Any]]
gap_relevance_scores: Dict[str, float]
audience_alignment_scores: Dict[str, float]
created_at: datetime