"""
Frontend Web para o Sistema MCP - Análise de Dados Automotivos
"""
import os
import sys
from flask import Flask, render_template, request, jsonify
from flask_cors import CORS
class MCPWebApp:
"""Aplicação Web para o Sistema MCP"""
def __init__(self):
self.app = Flask(__name__)
self.cors = CORS(self.app)
self.mcp = None
self.setup_routes()
def initialize_mcp(self):
"""Inicializa o MCP de forma lazy"""
if self.mcp is None:
try:
# Adiciona o backend ao path
backend_path = os.path.join(os.path.dirname(__file__), '..', 'backend', 'src')
sys.path.append(backend_path)
from mcp_gemini import MCPGemini
self.mcp = MCPGemini()
print("✅ MCP inicializado com sucesso")
except ImportError as e:
print(f"❌ Erro ao importar MCP: {e}")
return False
except Exception as e:
print(f"❌ Erro ao inicializar MCP: {e}")
return False
return True
def setup_routes(self):
"""Configura as rotas da aplicação"""
@self.app.route('/')
def index():
"""Página principal"""
return render_template('index.html')
@self.app.route('/api/ask', methods=['POST'])
def ask_question():
"""API para processar perguntas"""
try:
data = request.get_json()
question = data.get('question', '').strip()
if not question:
return jsonify({
'success': False,
'error': 'Pergunta não pode estar vazia'
}), 400
# Inicializa o MCP
if not self.initialize_mcp():
return jsonify({
'success': False,
'error': 'Erro ao inicializar o sistema de análise'
}), 500
# Processa a pergunta
response = self.mcp.process_question(question)
return jsonify({
'success': True,
'question': question,
'response': response,
'timestamp': 'agora'
})
except Exception as e:
return jsonify({
'success': False,
'error': f'Erro interno: {str(e)}'
}), 500
@self.app.route('/api/health', methods=['GET'])
def health_check():
"""Endpoint de health check"""
return jsonify({
'status': 'healthy',
'service': 'MCP Web App',
'version': '1.0.0'
})
def run(self, host='0.0.0.0', port=5000, debug=True):
"""Executa a aplicação Flask"""
print(f"🚀 Iniciando MCP Web App em http://{host}:{port}")
self.app.run(host=host, port=port, debug=debug)
# Execução direta
if __name__ == '__main__':
app = MCPWebApp()
app.run()