61 lines
3.2 KiB
Python
61 lines
3.2 KiB
Python
"""Pydantic models for Facebook Event functionality."""
|
|
|
|
from typing import Optional, List, Dict, Any
|
|
from pydantic import BaseModel, Field
|
|
from enum import Enum
|
|
from datetime import datetime
|
|
|
|
|
|
class EventType(str, Enum):
|
|
"""Event type options."""
|
|
WORKSHOP = "Workshop"
|
|
WEBINAR = "Webinar"
|
|
CONFERENCE = "Conference"
|
|
NETWORKING = "Networking event"
|
|
PRODUCT_LAUNCH = "Product launch"
|
|
SALE_PROMOTION = "Sale/Promotion"
|
|
COMMUNITY = "Community event"
|
|
EDUCATION = "Educational event"
|
|
CUSTOM = "Custom"
|
|
|
|
|
|
class EventFormat(str, Enum):
|
|
"""Event format options."""
|
|
IN_PERSON = "In-person"
|
|
VIRTUAL = "Virtual"
|
|
HYBRID = "Hybrid"
|
|
|
|
|
|
class FacebookEventRequest(BaseModel):
|
|
"""Request model for Facebook event generation."""
|
|
event_name: str = Field(..., description="Name of the event")
|
|
event_type: EventType = Field(..., description="Type of event")
|
|
custom_event_type: Optional[str] = Field(None, description="Custom event type if 'Custom' is selected")
|
|
event_format: EventFormat = Field(..., description="Format of the event")
|
|
business_type: str = Field(..., description="Type of business hosting the event")
|
|
target_audience: str = Field(..., description="Target audience for the event")
|
|
event_date: Optional[str] = Field(None, description="Event date (YYYY-MM-DD format)")
|
|
event_time: Optional[str] = Field(None, description="Event time")
|
|
location: Optional[str] = Field(None, description="Event location (physical address or virtual platform)")
|
|
duration: Optional[str] = Field(None, description="Event duration")
|
|
key_benefits: Optional[str] = Field(None, description="Key benefits or highlights of attending")
|
|
speakers: Optional[str] = Field(None, description="Key speakers or presenters")
|
|
agenda: Optional[str] = Field(None, description="Brief agenda or schedule")
|
|
ticket_info: Optional[str] = Field(None, description="Ticket pricing and availability")
|
|
special_offers: Optional[str] = Field(None, description="Special offers or early bird discounts")
|
|
include: Optional[str] = Field(None, description="Additional elements to include")
|
|
avoid: Optional[str] = Field(None, description="Elements to avoid")
|
|
|
|
|
|
class FacebookEventResponse(BaseModel):
|
|
"""Response model for Facebook event generation."""
|
|
success: bool = Field(..., description="Whether the generation was successful")
|
|
event_title: Optional[str] = Field(None, description="Generated event title")
|
|
event_description: Optional[str] = Field(None, description="Generated event description")
|
|
short_description: Optional[str] = Field(None, description="Short version for social media")
|
|
key_highlights: Optional[List[str]] = Field(None, description="Key event highlights")
|
|
call_to_action: Optional[str] = Field(None, description="Call-to-action text")
|
|
hashtag_suggestions: Optional[List[str]] = Field(None, description="Hashtag suggestions")
|
|
promotion_tips: Optional[List[str]] = Field(None, description="Event promotion 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") |