import { Head, Link } from '@inertiajs/react'; import { Printer } from 'lucide-react'; import { useState } from 'react'; import { controlClass, PageTitle, Panel } from '@/components/procurement'; import { Button } from '@/components/ui/button'; import { Label } from '@/components/ui/label'; type Scenario = 'ready' | 'tie' | 'incomplete' | 'admission'; type Policy = { revision: number; roles: string[]; required: number }; type Review = { actor: number; verdict: 'confirmed' | 'returned'; reason: string; }; type Attempt = { revision: number; basis: number; scenario: Scenario; candidate: string; reason: string; policy: Policy; reviews: Review[]; }; const reviewers = [ { id: 1, name: 'Conferente fictício de Finanças A', role: 'finance' }, { id: 2, name: 'Conferente fictício de Finanças B', role: 'finance' }, { id: 3, name: 'Chefia fictícia do departamento', role: 'department_head' }, ]; const roleNames: Record = { finance: 'Finanças', department_head: 'Chefia do departamento', }; const scenarios: Record = { ready: 'Matriz completa e admissões confirmadas', tie: 'Empate na maior pontuação', incomplete: 'Avaliações insuficientes', admission: 'Admissão por confirmar', }; const candidates = [ 'Concorrente fictício A', 'Concorrente fictício B', 'Concorrente fictício C', ]; function status(attempt: Attempt) { if (attempt.reviews.some((r) => r.verdict === 'returned')) return 'Tentativa devolvida'; return attempt.reviews.length >= attempt.policy.required ? 'Recomendação confirmada na simulação' : 'A aguardar conferência independente'; } function Reason({ id, value, onChange, }: { id: string; value: string; onChange: (value: string) => void; }) { return (