import { Link, useForm } from '@inertiajs/react'; import { Frame, card, button, input } from '@/pages/investment/shared'; export default function Install({ hash, installed, backupVerified, qaVerified, changes, target, pendingMigrations, compatibilityVerified, backupDate, scanner, rollback, databaseReady, baseDeskInstalled, pathInstalled, pathEnabled, pathQaVerified, }: { hash: string; installed: boolean; backupVerified: boolean; qaVerified: boolean; changes: string[]; target: { database: string; port: number }; pendingMigrations: string[]; compatibilityVerified: boolean; backupDate: string | null; scanner: { available: boolean; reason_code: string | null }; rollback: string; databaseReady: boolean; baseDeskInstalled: boolean; pathInstalled: boolean; pathEnabled: boolean; pathQaVerified: boolean; }) { const form = useForm({ hash, confirm: false }); const service = useForm({ code: 'project-preparation', confirm: false }); return ( Voltar ao Balcão Consultar inventário privado e exemplares de formulários

Destino: {target.database}, porta {target.port}. Backup/restauro: {backupDate ?? 'Pendente'}.

Alterações de esquema ainda necessárias

Balcão existente:{' '} {baseDeskInstalled ? 'Instalado' : 'Pendente'}. Apenas as migrations ausentes serão executadas; nenhuma instalação já registada será repetida.

Extensão do percurso:{' '} {pathInstalled ? 'Instalada' : 'Pendente'}. Disponibilização:{' '} {pathEnabled ? 'Configurada' : 'Desativada'}. Instalar não disponibiliza o percurso, não converte dossiers antigos nem apaga dados ou publica serviços.

Backup/restauro verificado:{' '} {backupVerified ? 'Sim' : 'Pendente'} · QA desta versão:{' '} {qaVerified ? 'Sim' : 'Pendente'}.

Compatibilidade e reversão em cópia restaurada:{' '} {compatibilityVerified ? 'Verificadas' : 'Pendentes'}.

Percursos A/B completos na interface desta versão:{' '} {pathQaVerified ? 'Demonstrados' : 'Pendentes — API ou build não substituem a demonstração visual'} .

Permissões da conexão para criar o esquema e estender tarefas:{' '} {databaseReady ? 'Disponíveis' : 'Insuficientes — intervenção autorizada necessária'} .

ClamD real:{' '} {scanner.available ? 'Disponível' : `Indisponível (${scanner.reason_code ?? 'sem evidência'})`} . Ficheiros sem scan conclusivo continuam pendentes para utilização segura; guardar rascunhos e preparar pedidos mantém-se disponível.

{rollback}

Confirmação inclui o restauro isolado da base e a integridade dos ficheiros privados. O histórico e os pedidos existentes são preservados.

{!installed && (
{ e.preventDefault(); form.post('/management/balcao-install'); }} > {Object.entries(form.errors).map(([k, v]) => (

{v}

))}
)} {baseDeskInstalled && (

Editar formulários e publicar novas versões

)} {baseDeskInstalled && (
{ e.preventDefault(); service.post('/management/balcao/servicos'); }} >

Publicar definição inicial de um serviço

Esta acção usa a definição inicial do código. Para manter alterações feitas pela interface, utilize o editor de formulários. A publicação aplica-se a pedidos futuros.

{Object.entries(service.errors).map(([k, v]) => (

{v}

))}
)} ); }