advanced-reasoning / api /venture_api.py
nananie143's picture
Upload folder using huggingface_hub
dcb2a99 verified
raw
history blame
6.47 kB
"""API endpoints for venture strategies and analysis."""
from fastapi import APIRouter, HTTPException, Depends
from typing import List, Dict, Any, Optional
from pydantic import BaseModel, Field
from datetime import datetime
from reasoning.venture_strategies import (
AIStartupStrategy, SaaSVentureStrategy, AutomationVentureStrategy,
DataVentureStrategy, APIVentureStrategy, MarketplaceVentureStrategy,
AIInfrastructureStrategy, AIConsultingStrategy, AIProductStrategy,
FinTechStrategy, HealthTechStrategy, EdTechStrategy,
BlockchainStrategy, AIMarketplaceStrategy
)
from reasoning.market_analysis import MarketAnalyzer
from reasoning.portfolio_optimization import PortfolioOptimizer
from reasoning.monetization import MonetizationOptimizer
router = APIRouter(prefix="/api/ventures", tags=["ventures"])
# Models
class VentureRequest(BaseModel):
"""Venture analysis request."""
venture_type: str
query: str
context: Dict[str, Any] = Field(default_factory=dict)
class MarketRequest(BaseModel):
"""Market analysis request."""
segment: str
context: Dict[str, Any] = Field(default_factory=dict)
class PortfolioRequest(BaseModel):
"""Portfolio optimization request."""
ventures: List[str]
context: Dict[str, Any] = Field(default_factory=dict)
class MonetizationRequest(BaseModel):
"""Monetization optimization request."""
venture_type: str
context: Dict[str, Any] = Field(default_factory=dict)
# Strategy mapping
VENTURE_STRATEGIES = {
"ai_startup": AIStartupStrategy(),
"saas": SaaSVentureStrategy(),
"automation": AutomationVentureStrategy(),
"data": DataVentureStrategy(),
"api": APIVentureStrategy(),
"marketplace": MarketplaceVentureStrategy(),
"ai_infrastructure": AIInfrastructureStrategy(),
"ai_consulting": AIConsultingStrategy(),
"ai_product": AIProductStrategy(),
"fintech": FinTechStrategy(),
"healthtech": HealthTechStrategy(),
"edtech": EdTechStrategy(),
"blockchain": BlockchainStrategy(),
"ai_marketplace": AIMarketplaceStrategy()
}
# Endpoints
@router.post("/analyze")
async def analyze_venture(request: VentureRequest):
"""Analyze venture opportunity."""
try:
strategy = VENTURE_STRATEGIES.get(request.venture_type)
if not strategy:
raise HTTPException(
status_code=400,
detail=f"Invalid venture type: {request.venture_type}"
)
result = await strategy.reason(request.query, request.context)
return {
"success": True,
"result": result,
"timestamp": datetime.now().isoformat()
}
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
@router.post("/market")
async def analyze_market(request: MarketRequest):
"""Analyze market opportunity."""
try:
analyzer = MarketAnalyzer()
result = await analyzer.analyze_market(request.segment, request.context)
return {
"success": True,
"result": result,
"timestamp": datetime.now().isoformat()
}
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
@router.post("/portfolio")
async def optimize_portfolio(request: PortfolioRequest):
"""Optimize venture portfolio."""
try:
optimizer = PortfolioOptimizer()
result = await optimizer.optimize_portfolio(request.ventures, request.context)
return {
"success": True,
"result": result,
"timestamp": datetime.now().isoformat()
}
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
@router.post("/monetization")
async def optimize_monetization(request: MonetizationRequest):
"""Optimize venture monetization."""
try:
optimizer = MonetizationOptimizer()
result = await optimizer.optimize_monetization(
request.venture_type, request.context)
return {
"success": True,
"result": result,
"timestamp": datetime.now().isoformat()
}
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
@router.get("/strategies")
async def list_strategies():
"""List available venture strategies."""
return {
"success": True,
"strategies": list(VENTURE_STRATEGIES.keys()),
"timestamp": datetime.now().isoformat()
}
@router.get("/metrics/{venture_type}")
async def get_venture_metrics(venture_type: str):
"""Get venture performance metrics."""
try:
strategy = VENTURE_STRATEGIES.get(venture_type)
if not strategy:
raise HTTPException(
status_code=400,
detail=f"Invalid venture type: {venture_type}"
)
metrics = strategy.get_venture_metrics()
return {
"success": True,
"metrics": metrics,
"timestamp": datetime.now().isoformat()
}
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
@router.get("/insights")
async def get_market_insights():
"""Get comprehensive market insights."""
try:
analyzer = MarketAnalyzer()
insights = analyzer.get_market_insights()
return {
"success": True,
"insights": insights,
"timestamp": datetime.now().isoformat()
}
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
@router.get("/portfolio/insights")
async def get_portfolio_insights():
"""Get comprehensive portfolio insights."""
try:
optimizer = PortfolioOptimizer()
insights = optimizer.get_portfolio_insights()
return {
"success": True,
"insights": insights,
"timestamp": datetime.now().isoformat()
}
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
@router.get("/monetization/metrics")
async def get_monetization_metrics():
"""Get comprehensive monetization metrics."""
try:
optimizer = MonetizationOptimizer()
metrics = optimizer.get_monetization_metrics()
return {
"success": True,
"metrics": metrics,
"timestamp": datetime.now().isoformat()
}
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))