GitHub: bloqueada pela issue Solo listar e buscar (o módulo já precisa existir).
Por que isso importa
Solo é o tipo de solo do local de coleta (por exemplo arenoso, argiloso). O coletor escolhe no formulário do tombo; fica em tombos.solo_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 solo (por exemplo “arenoso”) para que os tombos novos usem um valor compartilhado em vez de texto livre.
- Como Curador, quero renomear um tipo de solo para que um erro de digitação fique corrigido para quem selecionar daqui pra frente.
- Como Curador, quero remover um tipo de solo 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 Solo listar e buscar (o módulo já precisa existir).
Por que isso importa
Solo é o tipo de solo do local de coleta (por exemplo arenoso, argiloso). O coletor escolhe no formulário do tombo; fica em
tombos.solo_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/soloscom{ "nome": "arenoso" }devolve 201 e o registro criado{ id, nome }.nomevazio ou só espaço → 400.nomeduplicado (sem diferenciar maiúsculas) → 409.Renomear
PUT /api/v2/solos/:soloIdcom{ "nome": "argiloso" }devolve 200 e o{ id, nome }atualizado.nomevazio → 400.idnão muda.Remover
DELETE /api/v2/solos/:soloIdem uma linha sem uso devolve 204 e corpo vazio.tombos.solo_id→ 409 com mensagem clara.Comum
/api/solospermanece inalterado.Fora de escopo