Skip to content

cadastro de expedições, evidências e eventos do diário de campo - #551

Open
EduTiyo wants to merge 67 commits into
developmentfrom
532-cadastro-expedicoes
Open

EduTiyo wants to merge 67 commits into
developmentfrom
532-cadastro-expedicoes

Conversation

@EduTiyo

@EduTiyo EduTiyo commented Sep 27, 2026

Copy link
Copy Markdown

Contexto

Relacionado a #532 (cadastro de expedição). A branch evoluiu junto com o trabalho de evidências e eventos, então este PR entrega o backend completo dessas três entidades do diário de campo.

Modelo de dados (migrations)

  • expedicoes: descrição, data_inicio/data_fim, cidade_id (FK), created_by/updated_by
  • expedicoes_participantes: expedicao_id + usuario_id (FK), unique (expedicao_id, usuario_id)
  • expedicoes_rotas: expedicao_id + cidade_id + ordem (smallint), unique (expedicao_id, ordem)
  • eventos: expedicao_id (FK), tipo (check constraint), capturado_em, latitude/longitude/altitude
  • eventos_coletas: 1:1 com evento_id, campos específicos de coleta
  • evidencias: evento_id (FK), nome, capturado_em, arquivo/mime_type/tamanho (adicionados em migration posterior)

Endpoints

Expedições (/v2/expedicoes)

  • POST / cadastro · GET / listagem com paginação/filtros/ordenação · GET /:id busca
  • PUT /:id atualização · DELETE /:id exclusão
  • POST /:id/participantes adiciona · DELETE /:id/participantes/:usuarioId remove
  • PUT /:id/rotas substitui a lista de rotas

Eventos (/v2/expedicoes/:expedicaoId/eventos, /v2/eventos/:eventoId)

  • GET /expedicoes/:id/eventos listagem · POST /expedicoes/:id/eventos criação
  • GET/PUT/DELETE /eventos/:id
  • Exclusão de evento remove evidências e arquivos associados (ON DELETE CASCADE + limpeza de arquivo órfão, logando falha em vez de engolir o erro)

Evidências (/v2/eventos/:eventoId/evidencias, /v2/evidencias/:evidenciaId)

  • POST /eventos/:id/evidencias upload (multipart, valida que o evento existe antes do upload)
  • GET /eventos/:id/evidencias listagem
  • DELETE /evidencias/:id remoção (limpa o arquivo em disco)

Decisões técnicas

  • Padrão Either<Error, T> para propagar erros de infraestrutura sem exceptions na camada de domínio
  • EvidenciaUploadMiddleware isola a gravação em disco (EVIDENCIA_DIR) da lógica de negócio
  • Erros de infraestrutura mapeados por error.name/CollectionError em vez de checagem de mensagem
  • ExpedicaoCollectionFactory centraliza a montagem do adapter Knex

Testes

  • 12 arquivos de teste unitário e 11 de integração cobrindo casos de uso, controllers, adapters e as rotas HTTP fim a fim (paginação, filtros, erros 404/409/500)
  • lint e tsc passando (ver histórico de CI da branch)

Gaps conhecidos / fora deste PR

Relacionado

EduTiyo and others added 30 commits September 15, 2026 22:06
DimitriGaraluz and others added 18 commits September 25, 2026 19:06
# Conflicts:
#	src/application/create-app.ts
feat: delete evidencia e arquivos órfãos após CASCADE
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

api enhancement New feature or request

Projects

Status: review

Development

Successfully merging this pull request may close these issues.

7 participants