Skip to content

Central de Documentos

Atualizada em 16 de setembro de 2026. Esta versão do Hub habilita a busca nas cinco Centrais após a validação produtiva pela API da Central e pelo Extensio. A sessão humana no navegador permanece não aferida.

A Central de Documentos é a aplicação privada e multi-tenant do Hub Grupo CSV para catálogo, upload, versionamento, visualização e gestão de documentos. Existe uma única implementação compartilhada. O portal informado na entrada seleciona o tenant autorizado; ele não cria uma cópia independente da aplicação.

Para instruções de uso, consulte o manual ilustrado da Central e o manual do Panta v2. Esta página mantém o contrato técnico e o estado operacional.

Esta página distingue a operação documental já existente da ativação da nova busca:

EstadoSignificado
Produção verificadaComponente publicado e confirmado na verificação de 24/08/2026
Serviço v2 publicadoRuntime isolado confirmado em 16/09/2026; sua saúde é distinta dos testes integrados abaixo
Implementado no códigoContrato presente nas fontes canônicas, mas sem afirmação de promoção produtiva
Integração validada por API/MCPCanários produtivos de busca, isolamento, política, versão, exclusão e reconstrução de documento aprovados em 16/09/2026
Interface desta versãoBusca habilitada após validação produtiva da API; controles testados localmente, sessão humana produtiva não aferida

Acesso e tenants

A rota compartilhada é https://hub.grupocsv.com/documentos/?portal={portal}. O parâmetro portal é validado contra o registro publicado; tenant e permissões são novamente derivados no backend.

PortalIdentificadorEntrada
Grupo CSVgrupo-csvAbrir Central corporativa
Unimed Governador ValadaresunimedAbrir Central da Unimed
UnihealthunihealthAbrir Central da Unihealth
ICDSicdsAbrir Central do ICDS
2iM2imAbrir Central da 2iM

Esta versão do frontend habilita os cinco identificadores acima, com upload, visualizador, favoritos e busca. A configuração efetivamente servida deve ser conferida no runtime público ao verificar a publicação.

Inventário canônico

CamadaRecursoFunçãoEstado
Frontend/documentos/ no grupocsv/hubCatálogo, filtros, upload, visualizador, favoritos e gestão permitida ao papelProdução verificada
Identidadecsv-auth por Service BindingValida sessão humana; não armazena papéis documentaisProdução verificada
Control planeWorker csv-documentsAutoriza e executa operações documentaisProdução verificada
APIhttps://documentos-api.grupocsv.comFronteira HTTP autenticada; /health é a exceção públicaProdução verificada
EstadoD1 csv-documentsTenants, papéis, ACL, documentos, versões, jobs, auditoria, idempotência e outboxProdução verificada
ArquivosR2 privado csv-documents-privateOriginais e derivados sem URL pública ou exposição de object keyProdução verificada
TransporteQueue csv-documents-jobsEntrega assíncrona de jobs opacos ao consumerProdução verificada
ContingênciaDLQ csv-documents-jobs-dlqRetém falhas esgotadas para recuperação auditadaProdução verificada
Processamentodocumentos-processor.grupocsv.comValidação, detecção de MIME, checksum, antivírus, extração e derivadosProdução verificada
MonitoramentoWorker csv-documents-monitorAvalia Worker, Queue, DLQ, D1, processador e ClamAV; não possui rota públicaImplementado no código e operado por agenda própria
Busca documentalPanta v2 em panta-v2.grupocsv.comÍndice tenant-aware derivado, sem autoridade de acessoAPI/MCP validados em produção; interface habilitada nesta versão
Links públicos nativosControl plane documentalCompartilhamento explícito de uma versão por slug, com ativação e revogaçãoProdução verificada
Operação por agentesExtensio MCP + credencial de serviçoPublicar, consultar, pesquisar e gerenciar dentro do tenant e dos escopos concedidosOperações documentais verificadas; busca Panta v2 validada em 16/09/2026

O Worker possui cron de reconciliação. Queue, DLQ, processador e Panta transportam ou derivam dados, mas não autorizam acesso nem decidem qual versão é vigente. O D1 documental permanece a fonte de verdade do domínio.

Fluxo de upload e publicação

  1. A sessão humana ou credencial de serviço é autenticada.
  2. O Worker deriva tenant, papel ou escopos no servidor.
  3. A API cria documento, versão e sessão curta de upload de modo idempotente.
  4. Os bytes são enviados por stream ao R2 privado; nome original não vira chave pública.
  5. A conclusão cria o job canônico e publica somente IDs opacos na Queue.
  6. O processador recupera o original por fronteira interna, recalcula checksum, detecta MIME, valida estrutura e consulta o ClamAV.
  7. Apenas conteúdo clean pode gerar derivados ou tornar-se elegível à publicação.
  8. O Worker aplica callbacks monotônicos, promove a versão autorizada e registra auditoria.

Scanner indisponível falha fechado. Falha de preview ou busca não torna o arquivo original público e não amplia autorização.

Autorização

Pessoas

O csv-auth confirma identidade, tenant e validade da sessão. Papéis e ACL documentais pertencem ao D1 csv-documents. Os papéis documentais são viewer, contributor, manager, tenant_admin e super_admin.

Agentes e automações

Agentes usam credenciais de serviço próprias. Nunca reutilizam cookie, sessão ou token humano. O token é armazenado somente como hash e vinculado a tenants, validade, status e escopos explícitos:

EscopoCapacidades
documents:readConsultar catálogo, documento, versão e estado autorizado
documents:writeCriar documento, nova versão e atualizar metadados permitidos
documents:publishPromover versão elegível
documents:manageArquivar, restaurar, solicitar exclusão, gerenciar links públicos e executar gestões autorizadas
documents:adminRevisar pedidos de exclusão lógica dentro dos tenants concedidos

Credencial associada a mais de um tenant precisa informar X-Tenant-Id; o backend rejeita tenant fora da allowlist. Mutações idempotentes devem repetir a mesma Idempotency-Key durante retry.

API, OpenAPI e MCP

A fonte canônica atual do contrato HTTP é workers/csv-documents/openapi/document-api.json, no repositório grupocsv/backend. Ela descreve catálogo, documentos, versões, upload, viewer, coleções, tags, favoritos, busca e recuperação de jobs.

Estado de entrega:

InterfaceEstado
API /v1/*Operações documentais verificadas; busca Panta v2 validada em produção em 16/09/2026. Autenticação e autorização exigidas por operação
OpenAPI versionada no repositórioPublicada e validada em produção
GET /docs/openapi.jsonProdução verificada em documentos-api.grupocsv.com
CLI documentalVersionado em workers/csv-documents/scripts/documents-cli.mjs; usa token de serviço, tenant explícito e a API publicada
SDK documental dedicadoNão incluído; integrações usam o MCP do Extensio, o CLI ou a API descrita pelo OpenAPI
Ferramentas MCP do ExtensioPublicadas com Service Binding DOCUMENTS, secret próprio e credencial revogável para os cinco tenants

Ferramentas MCP definidas nesta entrega:

ToolFinalidade
documents_listListar documentos autorizados do tenant
documents_getConsultar metadados e estados de um documento
documents_publishCriar documento ou publicar nova versão, enviar bytes privados e iniciar processamento com idempotência
documents_statusConsultar o estado de um job assíncrono
documents_downloadRecuperar até 8 MiB autorizados em Base64; arquivos maiores são percorridos em blocos com Range, sem expor bucket ou object key
documents_searchBuscar pela API da Central no escopo autorizado; canário integrado Panta v2 aprovado nos cinco tenants em 16/09/2026
documents_manageAtualizar, listar ou promover versões, arquivar, restaurar ou solicitar exclusão lógica
documents_public_linksListar, criar, ativar e inativar links públicos mediados pela API
documents_deletion_requestsListar, aprovar, rejeitar ou cancelar solicitações de exclusão lógica

O Extensio chama a Central por Service Binding DOCUMENTS e mantém o token documental somente como secret do Worker. Toda tool exige tenant_id, que a API revalida contra a credencial de serviço. As rotas MCP continuam protegidas pela autenticação própria do Extensio.

O transporte MCP limita cada publicação e cada resposta de download a 8 MiB para manter o uso de memória previsível durante a serialização Base64. A API documental continua sendo a interface para publicações maiores; downloads por MCP usam intervalos Range sucessivos.

O CLI aceita listagem, consulta, busca, status, promoção de versão, archive/restore, solicitação e decisão de exclusão, links públicos e download para arquivo. Ele lê DOCUMENTS_API_URL, DOCUMENTS_API_TOKEN e DOCUMENTS_TENANT_ID do ambiente; mutações exigem chave idempotente. Criação e upload de bytes são feitos pelo MCP ou diretamente pela API, não pelo CLI atual.

Uma integração só está pronta quando o contrato publicado, a credencial revogável, o tenant, os escopos, a idempotência e um canário real estiverem validados. Em 24/08/2026, o canário produtivo autorizou os cinco tenants, rejeitou acesso cruzado e tenant inexistente, confirmou bytes de upload e download, link público, HEAD, GET, Range, revogação e exclusão lógica. As nove ferramentas documents_* foram descobertas no MCP publicado, e documents_list respondeu 200 por meio do Extensio nos cinco tenants. A mera existência do schema ou da ferramenta não comprova acesso produtivo.

Extensão Compass™ — Estado Separado

As rotas /v1/compass/* estão implementadas no csv-documents. Elas reutilizam documents, document_versions e document_public_links; não criam bytes duplicados nem expõem chaves do R2. A migration 0021_create_compass_catalog.sql já está aplicada no D1, conforme verificação de 16/09/2026. A aplicação do schema não comprova, por si só, cada fluxo editorial ou publicação Compass.

OperaçãoContrato ImplementadoVerificação nesta rodada Panta
Listar ou registrar ediçõesGET/POST /v1/compass/editionsFluxo não revalidado nesta rodada
Consultar ediçãoGET /v1/compass/editions/{editionId}Fluxo não revalidado nesta rodada
Listar ou preparar releasesGET/POST /v1/compass/editions/{editionId}/releasesFluxo não revalidado nesta rodada
Ativar ou restaurar releasePOST /v1/compass/editions/{editionId}/releases/{releaseId}/activateFluxo não revalidado nesta rodada
Servir o PDFGET/HEAD /s/{slug}Entrega documental existente; vínculo de cada release não revalidado nesta rodada

A consolidação Panta não modifica o fluxo editorial Compass, não republica suas edições e não usa a aplicação da migration como aceite de operações não testadas. A documentação específica do Compass continua sendo a referência desse produto.

Ciclo Documental e Exclusão

O passo a passo para solicitar, aprovar, rejeitar ou cancelar está no manual — Arquivar ou excluir.

EstadoSignificadoAções usuais
draftDocumento ainda não publicadoeditar metadados, carregar ou processar versão
activeDocumento disponível conforme RBAC e ACLler, versionar, arquivar ou solicitar exclusão
archivedDocumento retirado do catálogo normalrestaurar ou solicitar exclusão
deletion_requestedExclusão lógica solicitada e auditadaaguardar decisão administrativa
deletingRemoção definitiva em processamento, quando política futura a habilitaroperação interna controlada
deletedEstado terminal de remoçãonenhuma restauração implícita

No contrato produtivo verificado, hard delete permanece desabilitado. A interface confirma o pedido de exclusão; ela não confirma destruição física dos bytes. Arquivamento e restauração são operações próprias e não equivalem a exclusão.

O backend produtivo oferece decisão administrativa de exclusão lógica pelos contratos abaixo:

OperaçãoContrato incluído nesta entregaAutorização
Listar pedidos do tenantGET /v1/deletion-requests?status={status}&limit={1..100}&cursor={cursor}painel autenticado conforme o contrato final
AprovarPOST /v1/deletion-requests/{requestId}/approvetenant_admin, super_admin ou serviço documents:admin
RejeitarPOST /v1/deletion-requests/{requestId}/rejecttenant_admin, super_admin ou serviço documents:admin
CancelarPOST /v1/deletion-requests/{requestId}/cancelsolicitante original com permissão request_deletion, enquanto o pedido está requested

As três decisões aceitam body fechado com reason opcional. O pedido assume requested, approved, rejected, cancelled ou executed. Aprovar conclui um tombstone lógico: registra deleted_at, leva o documento a deleted, marca o pedido como executed e inativa seus links públicos. Os bytes e as versões são preservados. Rejeitar ou cancelar restaura o lifecycle anterior, active ou archived. Solicitar exclusão, arquivar ou aprovar um pedido inativa imediatamente os links públicos do documento; restauração, rejeição e cancelamento não os reativam implicitamente.

A documentação não deve apresentar deletion_requested como arquivo apagado nem o tombstone lógico como destruição física.

Para criar o endereço curto e administrar os links na tela, siga o manual — Links públicos.

Links públicos documentais são uma capacidade diferente de Open Pages. Open Pages publica HTML e assets no domínio open.grupocsv.com; um link documental referencia uma versão autorizada que continua armazenada no R2 privado e é entregue pelo control plane.

A capacidade produtiva usa estes contratos autenticados:

OperaçãoRota
Listar links de um documentoGET /v1/documents/{documentId}/public-links?limit={1..100}&cursor={cursor}
Criar linkPOST /v1/documents/{documentId}/public-links
Atualizar ou inativarPATCH /v1/documents/{documentId}/public-links/{linkId}
Listar todos os links do tenant para o painelGET /v1/public-links?limit={1..100}&cursor={cursor}
Consumir link públicoGET /s/{slug} ou HEAD /s/{slug}

Criação aceita body fechado com slug, version_id opcional, expires_at opcional e allow_download opcional. Sem version_id, a API fixa a versão vigente naquele momento. A resposta devolve identificadores e public_url, sem expor tenant, object key ou bucket. Atualização aceita somente status (active ou inactive), expires_at e allow_download.

Os invariantes são:

  • criação explícita por usuário ou serviço autorizado;
  • slug globalmente único, com 3 a 48 caracteres no padrão exato ^[a-z0-9]+(?:-[a-z0-9]+)*$; admin, api, docs, health, login e openapi são reservados;
  • vínculo imutável ao tenant, documento e versão selecionada;
  • estado ativo ou inativo, com revogação imediata no control plane;
  • listagem administrativa por tenant, sem ampliar acesso entre organizações;
  • entrega por endpoint controlado, nunca por URL direta do R2;
  • auditoria das mutações; acessos anônimos ficam nos logs operacionais e são limitados por slug e endereço de origem, sem gravar uma linha no D1 por download;
  • resposta pública com X-Robots-Tag: noindex, nofollow, nosnippet, CSP fechada, nosniff e política de referrer;
  • expiração e estados inválidos falham fechados;
  • documentos confidential ou restricted não podem receber link;
  • documento precisa estar active e a versão, uploaded e clean;
  • exclusão lógica, documento arquivado, versão retirada ou link inativo impedem a entrega;
  • allow_download controla Content-Disposition: ativo força anexo; inativo permite abertura em linha quando o navegador suporta o tipo. Essa opção não impede o destinatário de salvar uma cópia e não torna o R2 público.

Papéis manager, tenant_admin e super_admin gerenciam links; clientes de serviço usam documents:manage.

A classificação Público continua significando somente acesso autenticado conforme as regras do tenant. Ela não cria link anônimo: o compartilhamento exige criação explícita de um link, que pode ser inativado ou ter validade definida.

Relação com o Panta

Panta v1

O serviço em panta.grupocsv.com é a busca federada existente. Ele é independente da Central de Documentos e não recebe autoridade documental. Agentes não devem contornar o control plane usando ingestão direta do Panta para publicar ou recuperar documentos da Central.

Panta v2

O guia da pesquisa Panta v2 explica o uso na interface, a diferença para a v1 e o contrato para agentes. Ele separa capacidade implementada de ativação produtiva e não substitui a verificação autenticada do ambiente.

O Panta v2 documental está implementado no repositório grupocsv/backend como índice tenant-aware. O fluxo correto é sempre:

  1. o csv-documents autentica e calcula no D1 o conjunto permitido, incluindo a revisão confirmada de cada documento;
  2. o Panta v2 pesquisa somente os IDs, versões e revisões autorizados;
  3. o Worker revalida tenant, lifecycle, política, ACL, versão vigente e a mesma revisão confirmada antes de devolver cada resultado.

Panta v2 não armazena papéis ou ACL como autoridade, não recebe token humano e não pode devolver path, chave R2 ou URL interna.

Estado da busca

Em 16/09/2026, o serviço isolado respondeu em https://panta-v2.grupocsv.com/health com versão 2.1.0, schema 2 e build aa8f220f28e8fbdcfc921b152e2e4e976fdf228d. Ele executa em Docker na VPS-CSV, ligado somente à porta local 8092 e exposto pelo tunnel. O ensaio autenticado local aprovou nove cenários e confirmou a persistência do tombstone após reinício. A v1 permaneceu saudável, com API 8090 e MCP 8091 preservados.

Uma credencial exclusiva da integração foi registrada no Arsenal Técnico e provisionada na VPS e no Worker, sem alterar as anteriores. A versão Worker 0389d7b4-eed6-4b60-b0d1-bdff6e25760b, fonte 094c8871e65c5f6d9ae0c9d6f0cbff8c107620b9, recebe 100% do tráfego. A falha de transporte inicialmente diagnosticada foi corrigida, e os testes integrados pela Central/Extensio passaram em produção.

Os canários comprovaram busca por conteúdo nos cinco tenants, consulta cruzada rejeitada com 404, busca cruzada sem resultados, política metadata_only com título pesquisável e corpo ausente, política disabled sem resultados, exclusão lógica da amostra 2iM com revisão aplicada, troca de versão no ICDS sem recuperar o texto anterior e reconstrução do documento de teste da Unihealth após retirada do índice. Ao encerrar a validação em 16/09/2026, os cinco canários estavam excluídos logicamente, com consulta 404 e busca sem resultados.

Esta versão configura features.search = true após os testes produtivos da API/MCP e os testes locais da interface. A sessão humana autenticada no navegador permanece não aferida. Não foi realizado um novo reinício da VPS nem restauração integral do volume a partir de backup nesta rodada; reconstruir um documento não comprova essa restauração completa.

O contrato de sincronização usa /internal/v2/documents/sync e panta_sync_state: uma alteração canônica incrementa revision, e somente a confirmação correspondente avança applied_revision. A pesquisa exige igualdade entre essas revisões. A reconciliação roda a cada cinco minutos, somados à fila, processamento e retries; isso não é garantia de latência máxima. O escopo admite até 500 documentos autorizados por consulta; excesso retorna 422 search_scope_too_large, sem corte silencioso. A pesquisa é lexical, não semântica.

Na interface preparada para a busca, a pesquisa informa indisponibilidade, ausência de resultados ou limite do acervo sem confundi-los. O usuário pode voltar ao catálogo e continuar a gestão documental. Trechos são exibidos como texto simples e cada resultado mantém a referência do documento e da versão; a abertura continua passando pela autorização da Central.

A demonstração prática a Guilherme sobre Central, Panta v1 e Panta v2 permanece pendente até apresentação do produto publicado e confirmação de entendimento.

O manual do Panta v2 explica o fluxo previsto, a dependência da VPS e os limites da pesquisa. A disponibilidade deve ser conferida neste estado operacional, não presumida a partir das instruções de uso.

Fontes canônicas e verificação

AssuntoFonte
Frontend e registro de tenantsgrupocsv/hub: scripts/documentos-runtime-config.json e scripts/documentos-tenants.json
API e autorizaçãogrupocsv/backend: workers/csv-documents/
Contrato HTTPgrupocsv/backend: workers/csv-documents/openapi/document-api.json
Processadorgrupocsv/backend: services/csv-documents-processor/
Monitorgrupocsv/backend: workers/csv-documents-monitor/
Panta v2grupocsv/backend: services/panta-v2/ e docs/hub-documents/PANTA-INTEGRATION.md
Ferramentas de agentesgrupocsv/extensio: packages/mcp/

Verificações externas úteis:

Health check prova disponibilidade pontual; não prova permissões, integridade de todos os documentos, operação por agentes, links públicos ou busca. Para essas capacidades, use um canário autenticado no tenant correto. O canário de 24/08/2026 foi encerrado por tombstone lógico, preservando a versão e a referência privada do objeto; não restaram pedidos de exclusão pendentes.

Relação com outras páginas da infraestrutura

AI Search, Panta e Central de Documentos são sistemas distintos. A Central usa seu próprio control plane, D1 e R2 privado; nenhum dos dois mecanismos de busca substitui a autorização documental.