/* ============================================================ MODAL (detalhes do chamado) ============================================================ */ function TicketModal({ ticket, equipe, onClose, onSendInfo, onAssign, onAddNotaInterna }){ const [msg, setMsg] = useState(''); const [nota, setNota] = useState(''); if(!ticket) return null; const tempoResposta = ticket.primeiraRespostaEm ? (new Date(ticket.primeiraRespostaEm) - new Date(ticket.criadoEm)) : null; const tempoTotal = ticket.encerradoEm ? (new Date(ticket.encerradoEm) - new Date(ticket.criadoEm)) : null; const responsavel = equipe.find(e=>e.id===ticket.responsavelId); return (
{ if(e.target===e.currentTarget) onClose(); }}>

#{ticket.numero} · {ticket.title} {isAtrasado(ticket) && ⏰ Atrasado}

Solicitado por {ticket.cliente} · {fmtDataHora(ticket.criadoEm)}
Categoria{ticket.categoria}
Prioridade{ticket.priority}
Status{STATUS_LABELS[ticket.status]}
Tempo até 1ª resposta{fmtDuracao(tempoResposta)}
Tempo total de atendimento{fmtDuracao(tempoTotal)}
{ticket.avaliacao &&
Avaliação do cliente{'★'.repeat(ticket.avaliacao)}{'☆'.repeat(5-ticket.avaliacao)}
}

{ticket.descricao}

{ticket.history.length>0 && (
Histórico
{ticket.history.map((h,i)=>(
{h.interno &&
🔒 Nota interna — só a equipe vê
} {h.text}
{h.time}
))}
)}
); }