import React, { useState } from 'react';
import {
BarChart, Bar, XAxis, YAxis, CartesianGrid, Tooltip, ResponsiveContainer, Cell
} from 'recharts';
import {
Zap, ArrowRight
} from 'lucide-react';
// NOTA DE SEGURANÇA:
// Em produção, FATURAMENTO_MAP e FRASES_GARGALO devem ser movidos para /api/diagnostico
// O frontend não deve conhecer os valores financeiros reais para evitar engenharia reversa.
export default function App() {
const [step, setStep] = useState(0);
const [loading, setLoading] = useState(false);
const [error, setError] = useState(null);
const [formData, setFormData] = useState({
nome: '', email: '', whatsapp: '', empresa: '',
tipo_negocio: 'Clínica médica',
faturamento: '$15k–$50k',
funcionarios: '1–3',
p1: 10, p2: 10, p3: 10,
p4: 10, p5: 10, p6: 10,
p7: 10, p8: 10, p9: 10,
p10: 10, p11: 10, p12: 10
});
const [resultado, setResultado] = useState(null);
// --- INTEGRAÇÃO COM BACKEND ---
const processarDiagnostico = async () => {
setLoading(true);
setError(null);
try {
/**
* EM PRODUÇÃO:
* Substitua o bloco abaixo por:
* const response = await fetch('/api/diagnostico', {
* method: 'POST',
* body: JSON.stringify(formData)
* });
* const data = await response.json();
*/
// Simulando chamada de API (Backend Seguro)
await new Promise(resolve => setTimeout(resolve, 2000));
// Simulando a resposta que viria do servidor
// No backend, usaríamos a lógica do seu arquivo 'calcularDiagnostico.ts'
const mockBackendResponse = {
success: true,
data: {
scores: [
{ name: 'S1', value: 3.5 },
{ name: 'S2', value: 5.0 },
{ name: 'S3', value: 2.1 },
{ name: 'S4', value: 7.8 },
],
gargalo: 'STEP3',
frase: 'A falha está na execução. A estrutura existe, mas a conversão é ineficiente.',
injicao: 'Execution',
ineficiencia: '34.5',
perda: '$10,350.00'
}
};
setResultado(mockBackendResponse.data);
setStep(5);
} catch (err) {
setError("Falha na comunicação com o servidor de segurança. Tente novamente.");
} finally {
setLoading(false);
}
};
const nextStep = () => setStep(s => s + 1);
const prevStep = () => setStep(s => s - 1);
return (
{step === 0 && (
PARE DE VAZAR LUCRO.
Diagnóstico técnico para identificar falhas sistêmicas em operações brasileiras nos EUA.
)}
{step >= 1 && step <= 4 && (
Fase {step} de 4
{Math.round((step / 4) * 100)}% processado
{error && (
{error}
)}
{step === 1 && (
Perfil Corporativo
setFormData({...formData, empresa: e.target.value})}
/>
Revenue Range
Time
)}
{step === 2 && (
S1 & S2: Dados e Sistemas
setFormData({...formData, p1: v})}
/>
)}
{step === 3 && (
S3: Execução e Protocolos
setFormData({...formData, p7: v})}
/>
)}
{step === 4 && (
)}
{step > 1 && (
)}
)}
{step === 5 && resultado && (
Vetor de Ineficiência
Perda de {resultado.ineficiencia}% em {resultado.gargalo}
"{resultado.frase}"
{resultado.scores.map((entry, index) => (
|
))}
Custo Operacional Oculto
{resultado.perda}
Mensal / Estimado
Engine Patch
{resultado.injicao}
Protocolo de Injeção
Estancar vazamento?
Implemente sistemas autónomos para recuperar o revenue cycle da sua operação.
)}
);
}
function QuestionRow({ label, options, value, onChange }) {
return (
{label}
{options.map((opt, i) => (
))}
);
}