import { Link } from '@inertiajs/react'; import { Panel } from '@/components/procurement'; export type ProcurementInsights = { method: 'procurement_facts_v1'; generated_at: string; processes: number; pending: { count: number; unknown_submission_age: number; oldest: { id: number; number: string; submitted_at: string; days_since_submission: number; href: string; }[]; }; unapproved_past_needed_date: number; approved: { count: number; without_registered_quotes: number; without_visible_order: number; }; }; export function ProcurementOperationalInsights({ data, }: { data: ProcurementInsights; }) { return (

Base: {data.processes} requisições autorizadas nos filtros actuais, incluindo todas as páginas.

{data.processes === 0 ? (

Sem requisições neste âmbito para analisar.

) : ( <>

{data.pending.count} requisições em aprovação.{' '} {data.unapproved_past_needed_date} pedidos em preparação ou aprovação têm a data de necessidade ultrapassada.

A data de necessidade exprime quando o requisitante precisa do bem ou serviço; não comprova atraso de entrega do fornecedor.

{data.pending.oldest.length > 0 && (

Em aprovação — até cinco submissões mais antigas

    {data.pending.oldest.map((item) => (
  • {item.number} {' '} · {item.days_since_submission} dias de calendário desde a submissão
  • ))}
)}

{data.pending.unknown_submission_age} pedidos em aprovação sem data de submissão utilizável para calcular antiguidade.

Das {data.approved.count} requisições aprovadas:{' '} {data.approved.without_registered_quotes} sem propostas registadas e{' '} {data.approved.without_visible_order} sem ordem de compra visível.

Estas contagens podem sobrepor-se. Propostas registadas não significam propostas válidas ou comparáveis; ausência de ordem visível não comprova incumprimento.

)}

Indicadores factuais para conferência dos processos, sem previsões por machine learning ou decisões automáticas.

); }