codenuk_backend_mine/services/architecture-designer/src/main.py

143 lines
5.1 KiB
Python

# ARCHITECTURE DESIGNER V2 - TECHNOLOGY-SPECIFIC SPECIALISTS
# Main FastAPI application with technology routing
import os
import sys
import json
import uuid
from datetime import datetime
from typing import Dict, Any, Optional
from fastapi import FastAPI, HTTPException, Request
from fastapi.middleware.cors import CORSMiddleware
from loguru import logger
# Import our technology specialists
from core.router import TechnologyRouter
from core.combiner import ArchitectureCombiner
from models.request_models import ArchitectureDesignRequest
from config.settings import Settings
# Configure logging
logger.remove()
logger.add(sys.stdout, level="INFO", format="{time} | {level} | {message}")
# Initialize settings
settings = Settings()
app = FastAPI(
title="Architecture Designer v2 - Technology Specialists",
description="Technology-specific architecture design with React, Node.js, PostgreSQL specialists",
version="2.0.0"
)
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
# Initialize core components
technology_router = TechnologyRouter()
architecture_combiner = ArchitectureCombiner()
@app.get("/health")
async def health_check():
"""Health check endpoint"""
return {
"status": "healthy",
"service": "architecture-designer-v2",
"version": "2.0.0",
"specialists": {
"frontend": ["React"],
"backend": ["Node.js"],
"database": ["PostgreSQL"]
},
"features": {
"technology_specific_design": True,
"expert_level_architecture": True,
"claude_ai_powered": True,
"100_percent_implementation_ready": True
}
}
@app.post("/api/v1/design-architecture")
async def design_architecture(request: ArchitectureDesignRequest):
"""Design complete architecture using technology-specific specialists"""
try:
project_id = str(uuid.uuid4())
logger.info("🏗️ Starting technology-specific architecture design")
logger.info(f" Project ID: {project_id}")
# Extract technology stack from tech-stack-selector output
tech_stack = technology_router.extract_technology_stack(
request.tech_stack_recommendations
)
logger.info(f" Frontend: {tech_stack.frontend_framework}")
logger.info(f" Backend: {tech_stack.backend_language}")
logger.info(f" Database: {tech_stack.database_system}")
# Route to technology-specific specialists
design_results = await technology_router.route_to_specialists(
tech_stack=tech_stack,
functional_requirements=request.tech_stack_recommendations.get('functional_requirements', {}),
business_context=request.tech_stack_recommendations.get('claude_recommendations', {})
)
# Combine specialist outputs into unified architecture
combined_architecture = architecture_combiner.combine_architecture_outputs(
frontend_result=design_results['frontend'],
backend_result=design_results['backend'],
database_result=design_results['database'],
tech_stack=tech_stack
)
# Build final response
response = {
"success": True,
"project_metadata": {
"project_id": project_id,
"project_name": request.tech_stack_recommendations.get('functional_requirements', {}).get('feature_name', 'Unknown Project'),
"complexity": request.tech_stack_recommendations.get('functional_requirements', {}).get('complexity_level', 'medium'),
"technology_specialists_used": {
"frontend": tech_stack.frontend_framework,
"backend": tech_stack.backend_language,
"database": tech_stack.database_system
},
"architecture_generated_at": datetime.utcnow().isoformat()
},
"technology_specifications": tech_stack.__dict__,
"architecture_design": combined_architecture,
"code_generation_ready": {
"ready_for_generation": True,
"implementation_complete": True,
"technology_specific": True,
"specialist_designed": True
}
}
logger.info("✅ Technology-specific architecture design completed")
return response
except Exception as e:
logger.error(f"❌ Architecture design failed: {e}")
raise HTTPException(status_code=500, detail=f"Architecture design failed: {str(e)}")
if __name__ == "__main__":
import uvicorn
logger.info("="*80)
logger.info("🏗️ ARCHITECTURE DESIGNER v2.0 - TECHNOLOGY SPECIALISTS")
logger.info("="*80)
logger.info("✅ React Frontend Specialist")
logger.info("✅ Node.js Backend Specialist")
logger.info("✅ PostgreSQL Database Specialist")
logger.info("✅ 100% Implementation Ready")
logger.info("✅ AI Powered")
logger.info("="*80)
uvicorn.run("main:app", host="0.0.0.0", port=8003, log_level="info")