sass-imobiliaria/.specify/features/010-property-form-v2/spec.md

2.1 KiB

Feature Specification: Cadastro Completo de Imóvel v2

Feature Branch: 010-property-form-v2 Created: 2026-04-14 Status: In Progress

Contexto

Expansão da feature 009 com: upload real de fotos, IPTU anual, validação completa, código auto-gerado, formulário full-screen, guard de saída não salva, e nova página de gestão de Cidades/Bairros/Amenidades.

User Stories

US1 — Upload de fotos (P1)

Given admin no formulário de imóvel, When arrasta ou seleciona fotos, Then o arquivo é enviado ao backend e a URL retornada é adicionada à lista.

US2 — Código auto-gerado (P2)

Given admin clica em novo imóvel, When formulário abre, Then campo código já vem preenchido com valor sequencial/único editável.

US3 — Validação completa (P1)

Given admin tenta salvar, When campo obrigatório vazio, Then campo fica destacado em vermelho com mensagem.

US4 — Formulário full-screen (P2)

Given admin clica em editar ou novo imóvel, When formulário abre, Then ocupa toda a área de conteúdo (respeitando sidebar + header).

US5 — Guard de saída não salva (P2)

Given admin editou campos mas não salvou, When tenta navegar ou fechar aba, Then alerta de confirmação aparece.

US6 — Gestão de Cidades e Bairros (P1)

Given admin acessa /admin/cidades, When página carrega, Then pode criar/editar/remover cidades e seus bairros.

US7 — Gestão de Amenidades (P2)

Given admin no formulário de imóvel, When seleciona amenidades, Then as selecionadas ficam marcadas; pode adicionar nova amenidade na hora.

Acceptance Criteria

  • Upload multipart de imagens (jpg/png/webp, máx 5 MB)
  • Código auto-gerado no padrão IM-NNNN baseado no último código existente
  • Campos obrigatórios com highlight visual e mensagem
  • IPTU anual (Decimal, opcional)
  • Formulário ocupa calc(100vh - 56px) com scroll interno por seção
  • beforeunload + usePrompt para guard de navegação
  • CRUD completo de cidades com aninhamento de bairros
  • Amenidades listadas por grupo com toggles, e botão para criar nova