import React, { useState, useEffect, Component, ErrorInfo, ReactNode } from 'react'; import { createRoot } from 'react-dom/client'; import { Building2, Menu, X, ArrowRight, TrendingUp, ShieldCheck, Clock, Check, Loader2, CheckCircle, AlertTriangle, FileText, Download, Briefcase, Cpu, Users, BarChart, Mail, Phone, Send, MoreVertical } from 'lucide-react'; import { PieChart, Pie, Cell, ResponsiveContainer, Label } from 'recharts'; import { GoogleGenAI, Type } from "@google/genai"; // --- 1. TIPOS --- type ViewState = 'home' | 'assessment' | 'analysis' | 'contact' | 'solutions'; interface Question { id: number; text: string; options: string[]; } interface AssessmentAnswers { [key: number]: string; } interface AnalysisData { score: number; summary: string; strengths: string[]; weaknesses: string[]; recommendations: string[]; financialMaturityLevel: 'Iniciante' | 'Em Desenvolvimento' | 'Profissional' | 'Otimizado'; } // --- 2. DADOS ESTÁTICOS --- const QUESTIONS_DATA: Question[] = [ { id: 1, text: "Como é realizado o processo de conciliação bancária na sua empresa?", options: [ "Totalmente manual (planilhas e extratos impressos).", "Parcialmente automatizado (importação de OFX no ERP, mas com ajustes manuais).", "Totalmente automatizado (integração direta via API/CNAB sem intervenção manual diária).", ] }, { id: 2, text: "Qual a frequência de atualização do seu Fluxo de Caixa?", options: [ "Não possuímos fluxo de caixa estruturado.", "Mensalmente, apenas para fechamento.", "Semanalmente.", "Diariamente, com projeção futura (Forecast).", ] }, { id: 3, text: "Como são gerenciadas as aprovações de pagamentos?", options: [ "Assinatura física em cheques ou bordereaux impressos.", "E-mail ou WhatsApp solicitando aprovação.", "Sistema bancário com alçadas e tokens (approver digital).", "Plataforma integrada de gestão de pagamentos com workflow automatizado.", ] }, { id: 4, text: "Quantas contas bancárias a empresa movimenta ativamente?", options: [ "1 a 2 bancos.", "3 a 5 bancos.", "Mais de 5 bancos.", ] }, { id: 5, text: "Sua equipe financeira dedica quanto tempo a tarefas operacionais (digitação, conferência)?", options: [ "Mais de 80% do tempo.", "Entre 50% e 80% do tempo.", "Menos de 50%, o foco é estratégico.", ] }, { id: 6, text: "A empresa realiza cotação de taxas bancárias e produtos financeiros regularmente?", options: [ "Nunca, aceitamos o que o banco oferece.", "Raramente, apenas em grandes operações.", "Sim, temos uma rotina constante de negociação com múltiplos bancos.", ] } ]; // --- 3. SERVIÇOS --- const analyzeWithAI = async (answers: AssessmentAnswers): Promise => { const ai = new GoogleGenAI({ apiKey: process.env.API_KEY }); let promptContext = "Analise as seguintes respostas de um diagnóstico financeiro industrial:\n\n"; QUESTIONS_DATA.forEach((q) => { promptContext += `Pergunta: ${q.text}\nResposta: ${answers[q.id]}\n\n`; }); try { const response = await ai.models.generateContent({ model: 'gemini-3-pro-preview', contents: promptContext, config: { thinkingConfig: { thinkingBudget: 4096 }, systemInstruction: "Você é um CFO consultor. Analise ineficiências, riscos e automação. Retorne JSON.", responseMimeType: "application/json", responseSchema: { type: Type.OBJECT, properties: { score: { type: Type.INTEGER }, summary: { type: Type.STRING }, strengths: { type: Type.ARRAY, items: { type: Type.STRING } }, weaknesses: { type: Type.ARRAY, items: { type: Type.STRING } }, recommendations: { type: Type.ARRAY, items: { type: Type.STRING } }, financialMaturityLevel: { type: Type.STRING, enum: ['Iniciante', 'Em Desenvolvimento', 'Profissional', 'Otimizado'] } }, required: ["score", "summary", "strengths", "weaknesses", "recommendations", "financialMaturityLevel"], }, }, }); return JSON.parse(response.text || '{}'); } catch (error) { console.error("Erro AI:", error); return { score: 45, summary: "Processos manuais detectados com risco operacional moderado.", strengths: ["Consciência da necessidade de mudança"], weaknesses: ["Alta dependência de planilhas"], recommendations: ["Implementar API Bancária", "Revisar fluxos de aprovação"], financialMaturityLevel: 'Iniciante' }; } }; // --- 4. COMPONENTES --- const Header = ({ setView, currentView }: { setView: (v: ViewState) => void, currentView: ViewState }) => { const [isOpen, setIsOpen] = useState(false); const navItems: { label: string; value: ViewState }[] = [ { label: 'Início', value: 'home' }, { label: 'Soluções', value: 'solutions' }, { label: 'Contato', value: 'contact' }, ]; const handleNav = (v: ViewState) => { setView(v); setIsOpen(false); }; return (
{/* Logo */}
handleNav('home')}> FinAdmin Audit
{/* Desktop Nav */} {/* Mobile Toggle (Pontinhos / Hambúrguer) */}
{/* Mobile Menu Overlay */} {isOpen && (
{navItems.map(item => ( ))}
)}
); }; const Hero = ({ onStart }: { onStart: () => void }) => (

O seu setor Administrativo Financeiro atua como um banco na sua empresa?

Receba um diagnóstico imediato sobre a maturidade da sua tesouraria e automação bancária.

); const AssessmentForm = ({ onSubmit, isAnalyzing }: { onSubmit: (a: AssessmentAnswers) => void, isAnalyzing: boolean }) => { const [answers, setAnswers] = useState({}); const [step, setStep] = useState(0); if (isAnalyzing) return (

Processando sua análise...

Nossa IA está avaliando seus fluxos financeiros.

); const currentQ = QUESTIONS_DATA[step]; const progress = ((step + 1) / QUESTIONS_DATA.length) * 100; return (
Questão {step + 1} de {QUESTIONS_DATA.length} {Math.round(progress)}%

{currentQ.text}

{currentQ.options.map((opt, i) => ( ))}
); }; const AnalysisResult = ({ data, onContact }: { data: AnalysisData, onContact: () => void }) => { const chartData = [{ v: data.score }, { v: 100 - data.score }]; const color = data.score > 75 ? '#22c55e' : data.score > 50 ? '#eab308' : '#ef4444'; return (

Diagnóstico Concluído

Veja os insights da sua operação financeira

Pontuação Geral

{data.financialMaturityLevel}

Resumo Estratégico

{data.summary}

Pontos Fortes

    {data.strengths.map((s,i) =>
  • • {s}
  • )}

Atenção

    {data.weaknesses.map((w,i) =>
  • • {w}
  • )}

Plano de Ação

{data.recommendations.map((r,i) => (
{i+1}

{r}

))}

Quer implementar estas melhorias?

); }; // --- 5. COMPONENTE PRINCIPAL (APP) --- function App() { const [view, setView] = useState('home'); const [loading, setLoading] = useState(false); const [result, setResult] = useState(null); const handleSubmit = async (answers: AssessmentAnswers) => { setLoading(true); const data = await analyzeWithAI(answers); setResult(data); setLoading(false); setView('analysis'); window.scrollTo(0, 0); }; const emailLink = "mailto:luiz@yagura.com.br?subject=Diagnóstico FinAdmin Audit - Solicitação de Consultoria"; const phoneLink = "tel:+5511971712993"; return (
{view === 'home' && setView('assessment')} />} {view === 'assessment' && } {view === 'analysis' && result && setView('contact')} />} {view === 'solutions' && (

Nossas Soluções

BPO Financeiro

Terceirização completa da sua tesouraria operacional para focar no core business.

Automação RPA

Integração de ERP e bancos via API para eliminar digitação manual de boletos e extratos.

)} {view === 'contact' && (

Contato Direto

Inicie sua transformação financeira agora mesmo falando com nossa equipe.

Enviar E-mail Agora

Resposta garantida em até 24h úteis.

)}
FinAdmin Audit
© 2024 Yagura Consultoria Financeira.
Todos os direitos reservados.
); } // Inicialização const container = document.getElementById('root'); if (container) { const root = createRoot(container); root.render(); }