Pular para o conteúdo principal

Datasets (CUSTOM)

A solução usa 16 datasets CUSTOM, em datasets/*.js. Eles são a ponte entre o widget e os dados: consultam o RM (SOAP), leem/escrevem as listas internas e alimentam os processos.

Os 16 datasets​

RM via SOAP (sentenças LOAX RealizarConsultaSQL, Coligada 1 / Sistema T — ver Integração RM):

DatasetSentençaRetorna
ds_maritimo_rmLOAX.005todos os marítimos
ds_maritimo_centro_custo_rmLOAX.005.01marítimos por centro de custo (CCUSTO)
ds_maritimo_sindicato_rmLOAX.005.02marítimos por sindicato (SINDICATO)
ds_centro_custo_rmLOAX.006centros de custo (CODIGO, NOME)
ds_porto_rmLOAX.011portos (CODIGO, NOME)
ds_ferias_afastamento_rmLOAX.012 + LOAX.013férias e afastamentos

Consulta a listas internas:

DatasetLista
ds_evento_querycontrole_maritimo_eventos
ds_evento_rm_querycontrole_maritimo_eventos_rm
ds_periodo_querycontrole_maritimo_periodos
ds_status_querycontrole_maritimo_status
ds_maritimo_centro_custo_querycontrole_maritimo_eventos (vínculo do marítimo ao centro de custo pelo sistema)

O ds_maritimo_centro_custo_query (05/10/2026, item 10 do relatório do cliente) alimenta o filtro por centro de custo junto com o ds_maritimo_centro_custo_rm: devolve as chapas cujo último Embarque ou Troca de CC lançado no sistema, até a data informada, é no centro de custo pedido.

  • Constraints: ccusto (código do centro de custo, o mesmo CODIGO do ds_centro_custo_rm; sem ela o retorno é vazio) e dataFim (fim do período, yyyy-MM-dd ou dd/MM/yyyy; opcional).
  • Lê a lista controle_maritimo_eventos por SQL no banco do Fluig (AppDS): colunas CHAPA, DATAEVENTO, STATUS, CENTROCUSTO e ID. Não consulta o RM.
  • Devolve CHAPA, DATAEVENTO e STATUS do evento que define o vínculo.
  • Publique junto com o widget que traz o item 10: sem ele, a busca com centro de custo mostra erro no calendário.

Escrita (com validação de grupo/período no servidor):

DatasetGrava em
ds_evento_savecontrole_maritimo_eventos (acao=create, update, delete)
ds_periodo_savecontrole_maritimo_periodos

O ds_evento_save passou a aceitar, em 05/10/2026 (item 11 do relatório do cliente), acao=update (altera só os campos editáveis do tipo e grava ALTERADOPOR/DATAHORAALTERACAO) e acao=delete (exclusão lógica: EXCLUIDO = 1, EXCLUIDOPOR, DATAHORAEXCLUSAO). O ds_evento_query e o ds_maritimo_centro_custo_query ignoram as linhas excluídas, e o ds_evento_query devolve as duas colunas de auditoria.

  • Ordem de publicação do item 11: (1) acrescentar as 5 colunas à lista controle_maritimo_eventos (ver Listas e formulário); (2) publicar ds_evento_query, ds_evento_save e ds_maritimo_centro_custo_query; (3) publicar o widget. Sem as colunas, os três datasets falham ao consultar a lista.
  • O ds_folha_movimento_query não mudou: ele lê os eventos pelo ds_evento_query, por isso já ignora os excluídos.

Processo / suporte:

DatasetPapel
ds_folha_movimento_querymovimento da folha e alertas (>42 dias) — ações movimento / alertas
ds_pasta_controle_maritimoid da pasta GED para o TXT/zip da folha (service task 15)
ds_generic_queryhelper de consulta SQL parametrizada

Como a API de datasets autentica​

A API de gestão /dataset/api/v1/datasets* deste tenant é cookie-bound: um Bearer sozinho (curl/OAuth1) enxerga a lista vazia. Por isso o deploy é feito a partir de uma sessão de browser logada. O script scripts/deploy_dataset.cjs resolve isso: abre um Chromium (Playwright da vue-app), faz login com o admin do .env.local, captura o Bearer e faz o POST com cookie + Bearer juntos.

Deploy de um dataset​

Da raiz do repositório:

node scripts/deploy_dataset.cjs <code> datasets/<code>.js
# ex.:
node scripts/deploy_dataset.cjs ds_evento_rm_query datasets/ds_evento_rm_query.js

O script decide sozinho entre criar e atualizar: se o dataset já existe (GET .../datasets?datasetId=<code>), faz POST /datasets (update); senão, POST /datasets/create.

Deploy de todos​

Não há um script "deploy all" pronto; rode o deploy_dataset.cjs para cada arquivo. Em Bash:

for f in datasets/*.js; do
code=$(basename "$f" .js)
node scripts/deploy_dataset.cjs "$code" "$f"
done

:::note Ordem e dependências Os datasets de consulta a listas só retornam dados depois que as listas existem; os datasets *_rm dependem das sentenças RM. Os datasets de escrita dependem dos grupos para o gate de permissão. Publique a infra antes. :::

Verificação​

  • Consumir um dataset simples (ex.: ds_status_query) e conferir o retorno.
  • Conferir um dataset RM com filtro: ds_centro_custo_rm exige search de 3+ caracteres (sem isso retorna vazio).
  • Consumir ds_maritimo_centro_custo_query com ccusto = código de um centro de custo usado num Embarque e dataFim = data de hoje: deve devolver a chapa do marítimo embarcado.
  • Os datasets de escrita são validados no smoke-test.

Troubleshooting​

SintomaCausa provávelAção
GET datasets retorna items: []autenticação só por Bearer (sem cookie)usar o deploy_dataset.cjs (sessão logada), não curl/OAuth1
DuplicatedDatasetException no createdataset já existeo script deveria atualizar; confirme o <code> exato
Dataset RM volta vaziofalta search de 3+ chars ou data fora do padrão Oraclever Integração RM