Add Facebook Writer API with models, routers, and migration summary
Co-authored-by: ajay.calsoft <ajay.calsoft@gmail.com>
This commit is contained in:
51
backend/api/facebook_writer/models/carousel_models.py
Normal file
51
backend/api/facebook_writer/models/carousel_models.py
Normal file
@@ -0,0 +1,51 @@
|
||||
"""Pydantic models for Facebook Carousel functionality."""
|
||||
|
||||
from typing import Optional, List, Dict, Any
|
||||
from pydantic import BaseModel, Field
|
||||
from enum import Enum
|
||||
|
||||
|
||||
class CarouselType(str, Enum):
|
||||
"""Carousel type options."""
|
||||
PRODUCT_SHOWCASE = "Product showcase"
|
||||
STEP_BY_STEP = "Step-by-step guide"
|
||||
BEFORE_AFTER = "Before/After"
|
||||
TESTIMONIALS = "Customer testimonials"
|
||||
FEATURES_BENEFITS = "Features & Benefits"
|
||||
PORTFOLIO = "Portfolio showcase"
|
||||
EDUCATIONAL = "Educational content"
|
||||
CUSTOM = "Custom"
|
||||
|
||||
|
||||
class CarouselSlide(BaseModel):
|
||||
"""Individual carousel slide content."""
|
||||
title: str = Field(..., description="Slide title")
|
||||
content: str = Field(..., description="Slide content/description")
|
||||
image_description: Optional[str] = Field(None, description="Description of the image for this slide")
|
||||
|
||||
|
||||
class FacebookCarouselRequest(BaseModel):
|
||||
"""Request model for Facebook carousel generation."""
|
||||
business_type: str = Field(..., description="Type of business")
|
||||
target_audience: str = Field(..., description="Target audience description")
|
||||
carousel_type: CarouselType = Field(..., description="Type of carousel to create")
|
||||
custom_carousel_type: Optional[str] = Field(None, description="Custom carousel type if 'Custom' is selected")
|
||||
topic: str = Field(..., description="Main topic or theme of the carousel")
|
||||
num_slides: int = Field(default=5, ge=3, le=10, description="Number of slides (3-10)")
|
||||
include_cta: bool = Field(default=True, description="Include call-to-action in final slide")
|
||||
cta_text: Optional[str] = Field(None, description="Custom call-to-action text")
|
||||
brand_colors: Optional[str] = Field(None, description="Brand colors to mention for design")
|
||||
include: Optional[str] = Field(None, description="Elements to include")
|
||||
avoid: Optional[str] = Field(None, description="Elements to avoid")
|
||||
|
||||
|
||||
class FacebookCarouselResponse(BaseModel):
|
||||
"""Response model for Facebook carousel generation."""
|
||||
success: bool = Field(..., description="Whether the generation was successful")
|
||||
main_caption: Optional[str] = Field(None, description="Main caption for the carousel post")
|
||||
slides: Optional[List[CarouselSlide]] = Field(None, description="Generated carousel slides")
|
||||
design_suggestions: Optional[List[str]] = Field(None, description="Design and layout suggestions")
|
||||
hashtag_suggestions: Optional[List[str]] = Field(None, description="Hashtag suggestions")
|
||||
engagement_tips: Optional[List[str]] = Field(None, description="Engagement optimization tips")
|
||||
error: Optional[str] = Field(None, description="Error message if generation failed")
|
||||
metadata: Optional[Dict[str, Any]] = Field(None, description="Additional metadata about the generation")
|
||||
Reference in New Issue
Block a user