| |
|
|
| from fastapi import FastAPI, HTTPException, Depends |
| from pydantic import BaseModel |
| from typing import Dict, List, Optional |
| from core.monetization import MonetizationEngine |
| from core.models import Task |
| import asyncio |
| import logging |
|
|
| logger = logging.getLogger(__name__) |
|
|
| app = FastAPI(title="AutoSEO Engine API", version="0.1.0") |
|
|
| |
| monetization_engine = MonetizationEngine() |
|
|
| class CustomerCreateRequest(BaseModel): |
| name: str |
| tier: str |
|
|
| class TaskCreateRequest(BaseModel): |
| agent: str |
| task_type: str |
| description: str |
| priority: int = 1 |
|
|
| @app.on_event('startup') |
| async def startup_event(): |
| """Initialize the monetization engine with sample data""" |
| global monetization_engine |
| await monetization_engine.add_customer({"name": "Acme Corp", "tier": "professional"}) |
| await monetization_engine.add_customer({"name": "Globex Inc", "tier": "enterprise"}) |
| await monetization_engine.add_customer({"name": "Wayne Enterprises", "tier": "starter"}) |
| logger.info("AutoSEO Engine API started") |
|
|
| @app.get("/") |
| async def root(): |
| return {"message": "Welcome to AutoSEO Engine API"} |
|
|
| @app.get("/stats") |
| async def get_system_stats(): |
| """Get overall system statistics""" |
| dashboard_data = await monetization_engine.get_monetization_dashboard() |
| return dashboard_data |
|
|
| @app.post("/customers") |
| async def create_customer(customer: CustomerCreateRequest): |
| """Create a new customer""" |
| customer_dict = customer.dict() |
| await monetization_engine.add_customer(customer_dict) |
| return {"message": f"Customer {customer.name} added successfully", "id": f"cust_{len(monetization_engine.customers)}"} |
|
|
| @app.get("/customers") |
| async def get_customers(): |
| """Get all customers""" |
| return {"customers": monetization_engine.customers} |
|
|
| @app.get("/revenue/projection") |
| async def get_revenue_projection(months: int = 12): |
| """Get revenue projection for the next N months""" |
| projection = await monetization_engine.get_revenue_projection(months) |
| return {"projection": projection} |
|
|
| @app.get("/revenue/dashboard") |
| async def get_revenue_dashboard(): |
| """Get comprehensive revenue dashboard""" |
| dashboard = await monetization_engine.get_monetization_dashboard() |
| return dashboard |
|
|
| @app.post("/tasks") |
| async def create_task(task: TaskCreateRequest): |
| """Create a new task for an agent (placeholder - actual task execution would be more complex)""" |
| |
| task_obj = Task( |
| type=task.task_type, |
| description=task.description, |
| priority=task.priority |
| ) |
| return { |
| "message": f"Task '{task.description}' created for agent {task.agent}", |
| "task_id": task_obj.id, |
| "status": "created" |
| } |
|
|
| @app.get("/tasks/{agent_name}") |
| async def get_agent_tasks(agent_name: str): |
| """Get tasks for a specific agent (placeholder)""" |
| |
| return { |
| "agent": agent_name, |
| "tasks": [], |
| "message": "This endpoint would return actual tasks in a full implementation" |
| } |
|
|
| @app.get("/health") |
| async def health_check(): |
| """Health check endpoint""" |
| return { |
| "status": "healthy", |
| "monetization_engine_ready": True, |
| "customers_count": len(monetization_engine.customers) |
| } |