import { useState, useMemo } from "react"; import { BarChart, Bar, LineChart, Line, XAxis, YAxis, CartesianGrid, Tooltip, ResponsiveContainer, Legend, ReferenceLine } from "recharts"; import { ChevronRight, ChevronLeft, Sparkles, ShoppingBag, Factory, Briefcase, Layers, CheckCircle, TrendingUp, Target, DollarSign, AlertTriangle, Building2, Printer, Calculator, FileText } from "lucide-react"; const LOGO = "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCACWASwDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD8qqKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK+gf2OP2aNH/ak+IZ8J3niHW9CvShmWTTdA+3wLGBy80vnJ5AzwCykEkDOTive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"; const G = { bg:'#0B1221', surf:'#0E1A2E', card:'#132038', border:'#1D3454', accent:'#C9A84C', accLt:'#EDD068', text:'#E2E8F2', muted:'#5A7898', dim:'#2E4A68', success:'#22C55E', danger:'#EF4444', info:'#60A5FA', }; const STEPS = [ {id:'sector',label:'Setor'},{id:'empresa',label:'Empresa'}, {id:'mercado',label:'Mercado'},{id:'operacional',label:'Operacional'}, {id:'marketing',label:'Marketing'},{id:'financeiro',label:'Financeiro'}, {id:'swot',label:'SWOT'},{id:'revisao',label:'Revisão'}, ]; const CNAES = [ {v:'4711-3/02',l:'4711-3/02 — Comércio varejista de alimentos em geral',a:'I',s:'c'}, {v:'4721-1/02',l:'4721-1/02 — Padaria e confeitaria com predominância de produção',a:'I',s:'c'}, {v:'4731-8/00',l:'4731-8/00 — Comércio varejista de combustíveis',a:'I',s:'c'}, {v:'4741-5/00',l:'4741-5/00 — Comércio varejista de material de construção',a:'I',s:'c'}, {v:'4751-2/01',l:'4751-2/01 — Comércio varejista especializado de equipamentos de informática',a:'I',s:'c'}, {v:'4771-7/01',l:'4771-7/01 — Comércio varejista de produtos farmacêuticos',a:'I',s:'c'}, {v:'4781-4/00',l:'4781-4/00 — Comércio varejista de artigos do vestuário e acessórios',a:'I',s:'c'}, {v:'4789-0/99',l:'4789-0/99 — Comércio varejista de outros produtos não especificados',a:'I',s:'c'}, {v:'4610-1/00',l:'4610-1/00 — Representantes comerciais e agentes do comércio',a:'I',s:'c'}, {v:'4691-5/00',l:'4691-5/00 — Comércio atacadista de mercadorias em geral',a:'I',s:'c'}, {v:'1011-2/01',l:'1011-2/01 — Frigorífico — abate de bovinos',a:'II',s:'i'}, {v:'1091-1/02',l:'1091-1/02 — Fabricação de produtos de padaria',a:'II',s:'i'}, {v:'1610-2/02',l:'1610-2/02 — Serrarias com desdobramento de madeira',a:'II',s:'i'}, {v:'2512-8/00',l:'2512-8/00 — Fabricação de esquadrias de metal',a:'II',s:'i'}, {v:'3102-1/00',l:'3102-1/00 — Fabricação de móveis com predominância de metal',a:'II',s:'i'}, {v:'3321-0/00',l:'3321-0/00 — Fabricação de aparelhos e utensílios para usos médicos',a:'II',s:'i'}, {v:'2591-8/00',l:'2591-8/00 — Fabricação de embalagens metálicas',a:'II',s:'i'}, {v:'5611-2/01',l:'5611-2/01 — Restaurantes e similares',a:'III',s:'s'}, {v:'5620-1/04',l:'5620-1/04 — Fornecimento de alimentos preparados para empresas',a:'III',s:'s'}, {v:'8512-1/00',l:'8512-1/00 — Educação infantil — creche',a:'III',s:'s'}, {v:'8513-9/00',l:'8513-9/00 — Educação infantil — pré-escola',a:'III',s:'s'}, {v:'8621-6/01',l:'8621-6/01 — UTI móvel',a:'III',s:'s'}, {v:'8630-5/03',l:'8630-5/03 — Atividade odontológica',a:'III',s:'s'}, {v:'8640-2/02',l:'8640-2/02 — Laboratórios clínicos',a:'III',s:'s'}, {v:'8650-0/01',l:'8650-0/01 — Atividades de enfermagem',a:'III',s:'s'}, {v:'9001-9/01',l:'9001-9/01 — Produção teatral',a:'III',s:'s'}, {v:'4120-4/00',l:'4120-4/00 — Construção de edifícios',a:'IV',s:'s'}, {v:'4399-1/03',l:'4399-1/03 — Obras de alvenaria',a:'IV',s:'s'}, {v:'8011-1/01',l:'8011-1/01 — Atividades de vigilância e segurança privada',a:'IV',s:'s'}, {v:'8121-4/00',l:'8121-4/00 — Limpeza em prédios e em domicílios',a:'IV',s:'s'}, {v:'6201-5/01',l:'6201-5/01 — Desenvolvimento de programas de computador sob encomenda',a:'V',s:'s'}, {v:'6202-3/00',l:'6202-3/00 — Desenvolvimento e licenciamento de programas de computador',a:'V',s:'s'}, {v:'6311-9/00',l:'6311-9/00 — Tratamento de dados, hospedagem e similares',a:'V',s:'s'}, {v:'7020-4/00',l:'7020-4/00 — Atividades de consultoria em gestão empresarial',a:'V',s:'s'}, {v:'7111-1/00',l:'7111-1/00 — Serviços de arquitetura',a:'V',s:'s'}, {v:'7112-0/00',l:'7112-0/00 — Serviços de engenharia',a:'V',s:'s'}, {v:'7410-2/02',l:'7410-2/02 — Design de interiores',a:'V',s:'s'}, {v:'7490-1/04',l:'7490-1/04 — Atividades de intermediação e agenciamento',a:'V',s:'s'}, {v:'8630-5/01',l:'8630-5/01 — Atividade médica ambulatorial com recursos para realização de exames',a:'V',s:'s'}, {v:'7320-3/00',l:'7320-3/00 — Pesquisas de mercado e de opinião pública',a:'V',s:'s'}, ]; // Simples Nacional tabelas 2024 — [limiteRBT12, aliqNominal, parcelaDeduzir] const SN = { I: [[180000,.04,0],[360000,.073,5940],[720000,.095,13860],[1800000,.107,22500],[3600000,.143,87300],[4800000,.19,378000]], II: [[180000,.045,0],[360000,.078,5940],[720000,.10,13860],[1800000,.112,22500],[3600000,.147,85500],[4800000,.30,720000]], III:[[180000,.06,0],[360000,.112,9360],[720000,.135,17640],[1800000,.16,35640],[3600000,.21,125640],[4800000,.33,648000]], IV: [[180000,.045,0],[360000,.09,8100],[720000,.102,12420],[1800000,.14,39780],[3600000,.22,183780],[4800000,.33,828000]], V: [[180000,.155,0],[360000,.18,4500],[720000,.195,9900],[1800000,.205,17100],[3600000,.23,62100],[4800000,.305,540000]], }; const calcSimples = (rbt12, anexo) => { const tab = SN[anexo] || SN['I']; const rbt = Math.max(1, Math.min(rbt12, 4800000)); const idx = tab.findIndex(([lim]) => rbt <= lim); const faixa = idx >= 0 ? tab[idx] : tab[tab.length - 1]; const [, aliq, pd] = faixa; const ef = (rbt * aliq - pd) / rbt; return { aliqNominal: (aliq * 100).toFixed(2), aliqEfetiva: (ef * 100).toFixed(2), faixa: `${(idx >= 0 ? idx : tab.length - 1) + 1}ª`, tributoMensal: Math.round(rbt * ef / 12), tributoAnual: Math.round(rbt * ef), }; }; const fmt = v => (parseFloat(v)||0).toLocaleString('pt-BR',{style:'currency',currency:'BRL',minimumFractionDigits:0}); const fmtPct = v => `${parseFloat(v)||0}%`; const today = () => new Date().toLocaleDateString('pt-BR'); export default function PlanodeNegocios() { const [step, setStep] = useState(0); const [showReport, setShowReport] = useState(false); const [sectors, setSectors] = useState({commerce:false,industry:false,services:false}); const [form, setForm] = useState({ nomeFantasia:'',razaoSocial:'',cnpj:'',fundacao:'',porte:'ME', missao:'',visao:'',valores:'', regime:'simples',cnae:'',faturamentoAnual:'', pisTx:'0.65',cofinsTx:'3.00',issTx:'3.00',icmsTx:'12.00',csllTx:'9.00',irpjTx:'15.00', descricao:'',publicoAlvo:'',segmento:'',areaGeo:'', concorrentes:'',diferenciais:'',tendencias:'', localizacao:'',infraestrutura:'',tecnologia:'', fornecedores:'',estoqueGestao:'',mixProdutos:'', processosProd:'',capacidadeProd:'',materiasPrimas:'',controleQual:'', portfolio:'',equipe:'',capacidadeServ:'',indicadores:'', produto:'',preco:'',praca:'',promocao:'',canaisDigitais:'',metaMensal:'', investimento:'',capitalGiro:'',receita:'',crescimento:'3', custosFixos:'',custosVarPerc:'30', forcas:'',fraquezas:'',oportunidades:'',ameacas:'',resumo:'', }); const [ai, setAi] = useState({}); const upd = (f,v) => setForm(p=>({...p,[f]:v})); const tog = id => setSectors(s=>({...s,[id]:!s[id]})); const hasSec = id => sectors[id]; const sectorLabel = Object.entries(sectors).filter(([,v])=>v).map(([k])=>({commerce:'Comércio',industry:'Indústria',services:'Serviços'}[k])).join(' + ') || '—'; const setRegime = r => { const rates = r === 'real' ? {pisTx:'1.65',cofinsTx:'7.60',irpjTx:'15.00',csllTx:'9.00',issTx:'3.00',icmsTx:'12.00'} : {pisTx:'0.65',cofinsTx:'3.00',irpjTx:'15.00',csllTx:'9.00',issTx:'3.00',icmsTx:'12.00'}; setForm(p=>({...p,regime:r,...rates})); }; const proj = useMemo(()=>{ const r=parseFloat(form.receita)||0, fc=parseFloat(form.custosFixos)||0; const vc=(parseFloat(form.custosVarPerc)||30)/100, gr=(parseFloat(form.crescimento)||3)/100; return ['Jan','Fev','Mar','Abr','Mai','Jun','Jul','Ago','Set','Out','Nov','Dez'].map((mes,i)=>{ const receita=Math.round(r*Math.pow(1+gr,i)), custos=Math.round(fc+receita*vc); return {mes,receita,custos,lucro:receita-custos}; }); },[form.receita,form.custosFixos,form.custosVarPerc,form.crescimento]); const be = useMemo(()=>{const fc=parseFloat(form.custosFixos)||0,vc=(parseFloat(form.custosVarPerc)||30)/100;return vc<1?Math.round(fc/(1-vc)):0;},[form.custosFixos,form.custosVarPerc]); const totalInv=(parseFloat(form.investimento)||0)+(parseFloat(form.capitalGiro)||0); const avgProfit=proj.reduce((a,p)=>a+p.lucro,0)/12; const payback=avgProfit>0?Math.ceil(totalInv/avgProfit):null; const taxCalc = useMemo(()=>{ const rec=parseFloat(form.receita)||0; const rbt12=parseFloat(form.faturamentoAnual)||rec*12; const cd=CNAES.find(c=>c.v===form.cnae); const isServ=cd?.s==='s'; const anexo=cd?.a||'I'; if(form.regime==='mei') { const inss=75.90, issicms=isServ?5.00:1.00; return {type:'MEI',items:[{n:'INSS (5% do salário mínimo)',v:inss},{n:isServ?'ISS':'ICMS',v:issicms}],total:inss+issicms,nota:'DAS fixo mensal. Limite de faturamento MEI: R$ 81.000/ano.'}; } if(form.regime==='simples') { const sn=calcSimples(rbt12,anexo); return {type:`Simples Nacional — Anexo ${anexo}`,faixa:sn.faixa,aliqNominal:sn.aliqNominal,aliqEfetiva:sn.aliqEfetiva,items:[{n:`DAS Simples (Anexo ${anexo})`,v:sn.tributoMensal}],total:sn.tributoMensal,nota:`RBT12: ${fmt(rbt12)} | ${sn.faixa} faixa | Alíq. nominal: ${sn.aliqNominal}% | Alíq. efetiva: ${sn.aliqEfetiva}%`}; } if(form.regime==='presumido') { const presIRPJ=isServ?.32:.08, presCSLL=isServ?.32:.12; const pis=rec*(parseFloat(form.pisTx)||0)/100; const cofins=rec*(parseFloat(form.cofinsTx)||0)/100; const irpj=rec*presIRPJ*(parseFloat(form.irpjTx)||15)/100; const csll=rec*presCSLL*(parseFloat(form.csllTx)||9)/100; const issicms=isServ?rec*(parseFloat(form.issTx)||0)/100:rec*(parseFloat(form.icmsTx)||0)/100; const total=pis+cofins+irpj+csll+issicms; return {type:'Lucro Presumido',items:[ {n:'PIS',v:pis,f:'pisTx'},{n:'COFINS',v:cofins,f:'cofinsTx'}, {n:`IRPJ (base ${(presIRPJ*100).toFixed(0)}% pres.)`,v:irpj,f:'irpjTx'}, {n:`CSLL (base ${(presCSLL*100).toFixed(0)}% pres.)`,v:csll,f:'csllTx'}, {n:isServ?'ISS':'ICMS',v:issicms,f:isServ?'issTx':'icmsTx'}, ],total,nota:`Presunção IRPJ: ${(presIRPJ*100).toFixed(0)}% | Presunção CSLL: ${(presCSLL*100).toFixed(0)}%`}; } if(form.regime==='real') { const custosMens=(parseFloat(form.custosFixos)||0)+rec*(parseFloat(form.custosVarPerc)||30)/100; const lucroR=Math.max(0,rec-custosMens); const pis=rec*(parseFloat(form.pisTx)||0)/100; const cofins=rec*(parseFloat(form.cofinsTx)||0)/100; const irpj=lucroR*(parseFloat(form.irpjTx)||15)/100; const csll=lucroR*(parseFloat(form.csllTx)||9)/100; const issicms=isServ?rec*(parseFloat(form.issTx)||0)/100:rec*(parseFloat(form.icmsTx)||0)/100; const total=pis+cofins+irpj+csll+issicms; return {type:'Lucro Real',items:[ {n:'PIS (não-cumulativo)',v:pis,f:'pisTx'},{n:'COFINS (não-cumulativo)',v:cofins,f:'cofinsTx'}, {n:'IRPJ s/ lucro real',v:irpj,f:'irpjTx'},{n:'CSLL s/ lucro real',v:csll,f:'csllTx'}, {n:isServ?'ISS':'ICMS',v:issicms,f:isServ?'issTx':'icmsTx'}, ],total,nota:`Lucro apurado: ${fmt(lucroR)}/mês | PIS/COFINS no regime não-cumulativo`}; } return null; },[form.regime,form.cnae,form.receita,form.faturamentoAnual,form.pisTx,form.cofinsTx,form.issTx,form.icmsTx,form.csllTx,form.irpjTx,form.custosFixos,form.custosVarPerc]); const askAi = async section => { setAi(a=>({...a,[section]:{loading:true,text:''}})); const ctx=`Setor: ${sectorLabel}.${form.nomeFantasia?` Empresa: ${form.nomeFantasia}.`:''}`; const prompts={ empresa:`Consultor sênior de planos de negócios no Brasil. ${ctx} Crie Missão (1 frase), Visão (1 frase) e Valores (5 itens). Formato:\n**Missão:** ...\n**Visão:** ...\n**Valores:** 1. ... 2. ... 3. ... 4. ... 5. ...`, mercado:`Analista de mercado sênior. ${ctx}${form.descricao?` Negócio: ${form.descricao.slice(0,120)}.`:''} Elabore:\n1. Perfil do público-alvo\n2. Tamanho do mercado brasileiro\n3. 3 concorrentes com pontos fortes/fracos\n4. 4 diferenciais competitivos\n5. Tendências 2025-2027`, operacional:`Modelo operacional para PME de ${sectorLabel} no Brasil: estrutura, processos-chave, tecnologias (cite ferramentas), KPIs e riscos operacionais.`, marketing:`Plano 4Ps para ${sectorLabel}${form.descricao?`. Negócio: ${form.descricao.slice(0,100)}`:''}: 3 táticas por P + Marketing Digital 2025 para PME brasileira.`, swot:`SWOT para PME de ${sectorLabel} no Brasil. 4-5 itens por quadrante:\n**Forças:** ...\n**Fraquezas:** ...\n**Oportunidades:** ...\n**Ameaças:** ...`, resumo:`Sumário Executivo (280 palavras, tom persuasivo para investidores). ${ctx}${form.missao?` Missão: ${form.missao}.`:''}${form.publicoAlvo?` Mercado: ${form.publicoAlvo}.`:''}${form.receita?` Receita: R$${form.receita}/mês.`:''}`, }; try { const res=await fetch('https://api.anthropic.com/v1/messages',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({model:'claude-sonnet-4-20250514',max_tokens:1000,messages:[{role:'user',content:prompts[section]||`Ajude com ${section} para ${sectorLabel}.`}]})}); const d=await res.json(); setAi(a=>({...a,[section]:{loading:false,text:d.content?.[0]?.text||'Sem resposta.'}})); } catch { setAi(a=>({...a,[section]:{loading:false,text:'Erro de conexão.'}})); } }; const inp={width:'100%',background:G.bg,border:`1px solid ${G.border}`,borderRadius:8,padding:'9px 12px',color:G.text,fontSize:13,outline:'none',fontFamily:'inherit',resize:'vertical',boxSizing:'border-box'}; const row2={display:'grid',gridTemplateColumns:'1fr 1fr',gap:14}; const hd={fontSize:20,fontWeight:700,color:G.text,marginBottom:4,fontFamily:'Georgia,serif'}; const sub={fontSize:13,color:G.muted,marginBottom:18}; const Field=({label,field,type='text',ph='',hint,rows=3,opts})=>(
{opts? :type==='textarea'?