GitHub: bloqueada pela issue Relevo listar e buscar (o módulo já precisa existir).
Por que isso importa
Relevo é o relevo do local de coleta (por exemplo plano, inclinado). O coletor escolhe no formulário do tombo; fica em tombos.relevo_id; a ficha impressa e as pendências mostram o nome.
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 relevo (por exemplo “plano”) para que os tombos novos usem um valor compartilhado em vez de texto livre.
- Como Curador, quero renomear um tipo de relevo para que um erro de digitação fique corrigido para quem selecionar daqui pra frente.
- Como Curador, quero remover um tipo de relevo 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
Renomear
Remover
Comum
Fora de escopo
- Auth na v2.
- Delete em cascata ou anular FKs nos tombos.
GitHub: bloqueada pela issue Relevo listar e buscar (o módulo já precisa existir).
Por que isso importa
Relevo é o relevo do local de coleta (por exemplo plano, inclinado). O coletor escolhe no formulário do tombo; fica em
tombos.relevo_id; a ficha impressa e as pendências mostram o nome.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
Critérios de aceite
Cadastrar
POST /api/v2/relevoscom{ "nome": "plano" }devolve 201 e o registro criado{ id, nome }.nomevazio ou só espaço → 400.nomeduplicado (sem diferenciar maiúsculas) → 409.Renomear
PUT /api/v2/relevos/:relevoIdcom{ "nome": "ondulado" }devolve 200 e o{ id, nome }atualizado.nomevazio → 400.idnão muda.Remover
DELETE /api/v2/relevos/:relevoIdem uma linha sem uso devolve 204 e corpo vazio.tombos.relevo_id→ 409 com mensagem clara.Comum
/api/relevospermanece inalterado.Fora de escopo