import React, { useEffect, useState } from 'react'; import { useMonitoring } from '../hooks/useMonitoring'; import { useVehicles } from '../hooks/useVehicles'; import { ClipboardCheck, Satellite, CheckCircle2, XCircle, Info, Calendar, User, Activity, Zap, Signal, SignalLow, Wifi, WifiOff, Search, ArrowRight, ShieldAlert } from 'lucide-react'; import { Card, CardHeader, CardTitle, CardContent } from '@/components/ui/card'; import { Badge } from '@/components/ui/badge'; import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'; import { cn } from '@/lib/utils'; import { motion, AnimatePresence } from 'framer-motion'; /** * QualityControlView V2. * Separates historical audit (Checklists) from active/real-time tracking (Monitoramento). */ export const QualityControlView = ({ initialTab = 'checklists' }) => { const { mokiData, fetchMokiData, loading } = useMonitoring(); const { vehicles, fetchVehicles } = useVehicles(); const [activeTab, setActiveTab] = useState(initialTab); // Sync activeTab with initialTab when it changes from outside useEffect(() => { setActiveTab(initialTab); }, [initialTab]); useEffect(() => { fetchMokiData(); fetchVehicles(); }, [fetchMokiData, fetchVehicles]); const stats = { online: vehicles.filter(v => v.statusTel === 'Ativo').length, total: vehicles.length, offline: vehicles.filter(v => v.statusTel !== 'Ativo').length }; const onlinePercentage = stats.total > 0 ? Math.round((stats.online / stats.total) * 100) : 0; return (
Conformidade & Rastreio

Qualidade & Monitoramento

Gestão de inspeções técnicas e telemetria avançada

Histórico de Inspeções Monitoramento em Tempo Real
{/* --- TAB: CHECKLISTS (Historical Log) --- */}
Log de Auditoria
{loading ?
Carregando checklists...
: ( {mokiData.length === 0 ? : mokiData.map((c, index) => ( ))}
Data / Unidade Tipo de Inspeção Autor / Inspetor Aprovação % Resultado
Nenhum checklist encontrado.
{c.unidade || c.nome_unidade} {c.data}
{c.checklist}
{(c.autor || 'U').substring(0, 2)}
{c.autor}
= 80 ? "text-emerald-500" : "text-rose-500")}> {c.aprovacao || 0}%
= 80 ? "bg-emerald-500" : "bg-rose-500")} />
{c.status}
)}
{/* --- TAB: MONITORING (Real-time Status Dashboard) --- */} {/* Signal & Health Overview */}

Sinal Online

{onlinePercentage}%

Telemetria OK

{stats.online}

Sem Comunicação

{stats.offline}

Alertas Ativos

0

{/* Real-time Status Grid */}

Status da Transmissão

Sincronização Sascar / Geotab / T4S

Gateway em Operação
{vehicles.map((v) => (
{v.placa} {v.modelo}
{v.statusTel === 'Ativo' ? : }
Sinal {v.statusTel === 'Ativo' ? 'Excelente' : 'Desconectado'}
))}
); };