import { card, input } from '@/pages/investment/shared'; export const financialCategories: Record = { banking: 'Banca', credit: 'Crédito e microfinanças', investment: 'Gestão de investimento', pensions: 'Fundos de pensões', insurance: 'Seguros e resseguros', intermediation: 'Mediação de seguros', exchange: 'Câmbio', payments: 'Pagamentos e serviços interbancários', supervision: 'Supervisão', other: 'Outras instituições', }; export const financialTypes: Record = { commercial_bank: 'Banco comercial', investment_bank: 'Banco de investimento', bank: 'Banco (tipo não especificado)', microbank: 'Microbanco', cooperative: 'Cooperativa de crédito', savings: 'Organização de poupança e empréstimo', investment_manager: 'Gestora de fundos de investimento', investment_company: 'Sociedade de investimento', pension_manager: 'Gestora de fundos de pensões', insurer: 'Seguradora', reinsurer: 'Resseguradora', microinsurer: 'Micro-seguradora', broker: 'Corretora de seguros', agent: 'Agente de seguros', reinsurance_broker: 'Corretor de resseguro', exchange_house: 'Casa de câmbio', electronic_money: 'Instituição de moeda electrónica', interbank: 'Serviços interbancários', supervisor: 'Supervisor', other: 'Outro tipo documentado', }; export type Classification = { institution_categories?: string[]; institution_types?: string[]; institution_services?: string[]; institution_status?: string; successor_key?: string | null; register_reference?: string | null; source_document_name?: string | null; source_document_sha256?: string | null; aliases?: string[]; source_rows?: { id: string; section: string; text: string }[]; }; export const evidenceLabels: Record = { reported: 'Reportado no documento', to_confirm: 'A confirmar', historical: 'Referência histórica', conflict: 'Informação divergente/identidade por confirmar', unlocated: 'Localização por confirmar', }; export function ClassificationSummary({ value }: { value: Classification }) { return (

Categoria e tipo da instituição

Categorias:{' '} {(value.institution_categories ?? []) .map((k) => financialCategories[k] ?? k) .join(' · ') || 'Por classificar'}

Tipos:{' '} {(value.institution_types ?? []) .map((k) => financialTypes[k] ?? k) .join(' · ') || 'Por classificar'}

Situação segundo a fonte:{' '} {value.institution_status === 'merged' ? 'Fundida/extinta segundo o documento; não apresentar como instituição activa' : value.institution_status === 'historical' ? 'Registo histórico' : value.institution_status === 'unknown' ? 'Situação actual por confirmar' : 'Reportada no documento; não é confirmação independente de licença actual'} {value.successor_key ? ` · Sucessora indicada: ${value.successor_key}` : ''}

{value.register_reference && (

Referência de registo no documento:{' '} {value.register_reference}

)}
Rastrear o conteúdo até ao documento e à linha de origem

{value.source_document_name} · SHA-256{' '} {value.source_document_sha256}

{(value.source_rows ?? []).map((row) => (

{row.section}

{row.id}

{row.text}

))}

Categoria e presença física não confirmam cobertura de crédito, oferta de seguro específica, garantia ou aceitação do processo.

); } export function ClassificationFields({ value, change, needs, }: { value: Classification; change: (patch: Partial) => void; needs: Record; }) { const multiple = ( key: | 'institution_categories' | 'institution_types' | 'institution_services', label: string, options: Record, ) => ( ); return (
Categoria, tipo e serviço — Alterar {multiple( 'institution_categories', 'Categorias documentadas', financialCategories, )} {multiple( 'institution_types', 'Tipos documentados', financialTypes, )} {multiple( 'institution_services', 'Serviços identificados (não é oferta garantida)', needs, )}

As linhas originais e as classificações anteriores conservam-se nas versões. Não complete lacunas por inferência.

); }