Skip to content

Cadastrar, renomear e remover tipos de vegetação #490

Description

@edvaldoszy

GitHub: bloqueada pela issue Vegetação listar e buscar (o módulo já precisa existir).

Por que isso importa

Vegetação é o tipo de habitat do local de coleta. O coletor escolhe no formulário do tombo; fica em tombos.vegetacao_id; o Darwin Core exporta o nome como habitat; a ficha impressa mostra em Observações.

O Curador precisa manter este catálogo em dia: incluir um tipo quando os coletores passam a usar um valor novo, corrigir nome errado e retirar linhas que ninguém usa — sem nunca quebrar espécimes que ainda apontam para aquele registro.

Histórias

  • Como Curador, quero cadastrar um tipo de vegetação (por exemplo “Cerrado”) para que os tombos novos usem um valor compartilhado em vez de texto livre.
  • Como Curador, quero renomear um tipo de vegetação para que um erro de digitação fique corrigido para quem selecionar daqui pra frente.
  • Como Curador, quero remover um tipo de vegetação que nada usa para o dropdown ficar limpo. Quero que o sistema recuse a exclusão quando ainda houver registros usando aquele tipo, para não quebrar o histórico dos espécimes.

Critérios de aceite

Cadastrar

  • POST /api/v2/vegetacoes com { "nome": "Cerrado" } devolve 201 e o registro criado { id, nome }.
  • nome vazio ou só espaço → 400.
  • nome duplicado (sem diferenciar maiúsculas) → 409.

Renomear

  • PUT /api/v2/vegetacoes/:vegetacaoId com { "nome": "Cerrado sensu stricto" } devolve 200 e o { id, nome } atualizado.
  • Id inexistente → 404. Id inválido ou nome vazio → 400.
  • Renomear para um nome que outra linha já tem (sem diferenciar maiúsculas) → 409.
  • O id não muda.

Remover

  • DELETE /api/v2/vegetacoes/:vegetacaoId em uma linha sem uso devolve 204 e corpo vazio.
  • Id inexistente → 404. Id inválido → 400.
  • Linha ainda usada em tombos.vegetacao_id409 com mensagem clara.

Comum

  • O legado /api/vegetacoes permanece inalterado.
  • Há testes de cadastro, nome vazio, duplicata, atualização, exclusão de linha livre e exclusão recusada quando o tipo ainda está em uso.

Fora de escopo

  • Auth na v2.
  • Delete em cascata ou anular FKs nos tombos.

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

Status
to do

Relationships

None yet

Development

No branches or pull requests

Issue actions