"""
Constants for Content Planning API
Centralized constants and business rules extracted from the main content_planning.py file.
"""

from fastapi import status

# API Endpoints
API_PREFIX = "/api/content-planning"
API_TAGS = ["content-planning"]

# HTTP Status Codes
HTTP_STATUS_CODES = {
    "OK": status.HTTP_200_OK,
    "CREATED": status.HTTP_201_CREATED,
    "NO_CONTENT": status.HTTP_204_NO_CONTENT,
    "BAD_REQUEST": status.HTTP_400_BAD_REQUEST,
    "UNAUTHORIZED": status.HTTP_401_UNAUTHORIZED,
    "FORBIDDEN": status.HTTP_403_FORBIDDEN,
    "NOT_FOUND": status.HTTP_404_NOT_FOUND,
    "CONFLICT": status.HTTP_409_CONFLICT,
    "UNPROCESSABLE_ENTITY": status.HTTP_422_UNPROCESSABLE_ENTITY,
    "INTERNAL_SERVER_ERROR": status.HTTP_500_INTERNAL_SERVER_ERROR,
    "SERVICE_UNAVAILABLE": status.HTTP_503_SERVICE_UNAVAILABLE
}

# Error Messages
ERROR_MESSAGES = {
    "strategy_not_found": "Content strategy not found",
    "calendar_event_not_found": "Calendar event not found",
    "gap_analysis_not_found": "Content gap analysis not found",
    "user_not_found": "User not found",
    "invalid_request": "Invalid request data",
    "database_connection": "Database connection failed",
    "ai_service_unavailable": "AI service is currently unavailable",
    "validation_failed": "Request validation failed",
    "permission_denied": "Permission denied",
    "rate_limit_exceeded": "Rate limit exceeded",
    "internal_server_error": "Internal server error",
    "service_unavailable": "Service temporarily unavailable"
}

# Success Messages
SUCCESS_MESSAGES = {
    "strategy_created": "Content strategy created successfully",
    "strategy_updated": "Content strategy updated successfully",
    "strategy_deleted": "Content strategy deleted successfully",
    "calendar_event_created": "Calendar event created successfully",
    "calendar_event_updated": "Calendar event updated successfully",
    "calendar_event_deleted": "Calendar event deleted successfully",
    "gap_analysis_created": "Content gap analysis created successfully",
    "gap_analysis_completed": "Content gap analysis completed successfully",
    "ai_analytics_generated": "AI analytics generated successfully",
    "calendar_generated": "Calendar generated successfully",
    "content_optimized": "Content optimized successfully",
    "performance_predicted": "Performance prediction completed successfully"
}

# Business Rules
BUSINESS_RULES = {
    "max_strategies_per_user": 10,
    "max_calendar_events_per_strategy": 100,
    "max_gap_analyses_per_user": 5,
    "max_ai_analytics_per_user": 20,
    "default_page_size": 10,
    "max_page_size": 100,
    "cache_duration_hours": 24,
    "max_processing_time_seconds": 30,
    "min_confidence_score": 0.7,
    "max_competitor_urls": 10,
    "max_target_keywords": 50
}

# Content Types
CONTENT_TYPES = [
    "blog_post",
    "social_media_post",
    "video",
    "infographic",
    "case_study",
    "whitepaper",
    "newsletter",
    "webinar",
    "podcast",
    "live_stream"
]

# Platforms
PLATFORMS = [
    "linkedin",
    "twitter",
    "facebook",
    "instagram",
    "youtube",
    "tiktok",
    "website",
    "email",
    "medium",
    "quora"
]

# Industries
INDUSTRIES = [
    "technology",
    "healthcare",
    "finance",
    "education",
    "retail",
    "manufacturing",
    "consulting",
    "real_estate",
    "legal",
    "non_profit"
]

# Business Sizes
BUSINESS_SIZES = [
    "startup",
    "sme",
    "enterprise"
]

# Calendar Types
CALENDAR_TYPES = [
    "monthly",
    "weekly",
    "custom"
]

# Time Periods
TIME_PERIODS = [
    "7d",
    "30d",
    "90d",
    "1y"
]

# AI Service Status
AI_SERVICE_STATUS = {
    "operational": "operational",
    "degraded": "degraded",
    "unavailable": "unavailable",
    "fallback": "fallback"
}

# Data Sources
DATA_SOURCES = {
    "ai_analysis": "ai_analysis",
    "database_cache": "database_cache",
    "fallback": "fallback"
}

# Priority Levels
PRIORITY_LEVELS = [
    "high",
    "medium",
    "low"
]

# Content Pillars
DEFAULT_CONTENT_PILLARS = [
    "Educational Content",
    "Thought Leadership",
    "Product Updates",
    "Industry Insights",
    "Customer Stories",
    "Behind the Scenes"
]

# Performance Metrics
PERFORMANCE_METRICS = [
    "engagement_rate",
    "reach",
    "conversion_rate",
    "click_through_rate",
    "time_on_page",
    "bounce_rate",
    "social_shares",
    "comments",
    "likes"
]

# Validation Rules
VALIDATION_RULES = {
    "min_title_length": 3,
    "max_title_length": 100,
    "min_description_length": 10,
    "max_description_length": 1000,
    "min_url_length": 10,
    "max_url_length": 500,
    "min_keyword_length": 2,
    "max_keyword_length": 50
}

# Logging Levels
LOGGING_LEVELS = {
    "debug": "DEBUG",
    "info": "INFO",
    "warning": "WARNING",
    "error": "ERROR",
    "critical": "CRITICAL"
}

# Cache Keys
CACHE_KEYS = {
    "strategies": "content_planning:strategies",
    "calendar_events": "content_planning:calendar_events",
    "gap_analyses": "content_planning:gap_analyses",
    "ai_analytics": "content_planning:ai_analytics",
    "calendar_generation": "content_planning:calendar_generation"
}

# API Rate Limits
RATE_LIMITS = {
    "strategies_per_minute": 10,
    "calendar_events_per_minute": 20,
    "gap_analyses_per_hour": 5,
    "ai_analytics_per_hour": 10,
    "calendar_generation_per_hour": 3
} 