import React, { useState } from 'react'; import { StandardPageLayout } from '@/components/layout/StandardPageLayout'; import { usePcpAnalysis, RecomendacaoPcp } from '@/hooks/usePcpAnalysis'; import { PcpOfThumbnail } from '@/components/pcp/PcpOfThumbnail'; import { PcpMesaTatica } from '@/components/pcp/PcpMesaTatica'; import { PcpHistogramaCarga } from '@/components/pcp/PcpHistogramaCarga'; import { PcpMultiGantt } from '@/components/pcp/PcpMultiGantt'; import { PcpRecomendacoesPainel } from '@/components/pcp/PcpRecomendacoesPainel'; import { PcpWhatIfSimulator } from '@/components/pcp/PcpWhatIfSimulator'; import { Input } from '@/components/ui/input'; import { Button } from '@/components/ui/button'; import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'; import { Badge } from '@/components/ui/badge'; import { Layers, BarChart3, Calendar, Sparkles, Sliders, Search, RefreshCw, PlusCircle, HelpCircle, } from 'lucide-react'; import { toast } from 'sonner'; const PCP = () => { const { loading, allOfs, selectedOfNumbers, ofsNaMesa, totaisMesa, cargaPorPeriodo, recomendacoes, simulador, alternarSelecaoOf, adicionarTodasOfs, limparMesa, setHorasExtras, setEfetivoFator, setDeslocamentoOf, resetarSimulador, recarregarDados, } = usePcpAnalysis(); const [busca, setBusca] = useState(''); const [activeTab, setActiveTab] = useState<'histograma' | 'gantt' | 'recomendacoes' | 'whatif'>('histograma'); // Filtragem de OFs na gaveta lateral const ofsFiltradas = allOfs.filter((of) => { const termo = busca.toLowerCase(); return ( of.num_of.toLowerCase().includes(termo) || of.descritivo.toLowerCase().includes(termo) ); }); // Ação ao clicar em "Simular Impacto" de uma recomendação const handleAplicarRecomendacao = (rec: RecomendacaoPcp) => { if (rec.tipo === 'nivelamento_prazo' && rec.ofAlvo && rec.sugestaoDiasAjuste) { setDeslocamentoOf(rec.ofAlvo, rec.sugestaoDiasAjuste); setActiveTab('whatif'); toast.success(`Simulação aplicada: OF ${rec.ofAlvo} dilatada em +${rec.sugestaoDiasAjuste} dias no Simulador!`); } else if (rec.tipo === 'hora_extra' && rec.processoAlvo) { setHorasExtras(rec.processoAlvo, 2); setActiveTab('whatif'); toast.success(`Simulação aplicada: +2h extras/dia adicionadas em ${rec.processoAlvo}!`); } else if (rec.tipo === 'rebalanceamento_equipe' && rec.processoAlvo) { setEfetivoFator(rec.processoAlvo, 1.25); setActiveTab('whatif'); toast.success(`Simulação aplicada: +25% de capacidade transferida para ${rec.processoAlvo}!`); } else { setActiveTab('whatif'); toast.info('Abra os controles do simulador para testar este cenário.'); } }; return (
* Dica: Arraste a figurinha para a mesa ou clique nela para incluir/remover do cálculo de capacidade.
{/* Lista com scroll das Figurinhas */}