feat: add full project - backend, frontend, docker, specs and configs
This commit is contained in:
parent
b77c7d5a01
commit
e6cb06255b
24489 changed files with 61341 additions and 36 deletions
42
.specify/features/010-property-form-v2/spec.md
Normal file
42
.specify/features/010-property-form-v2/spec.md
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
# 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
|
||||
31
.specify/features/010-property-form-v2/tasks.md
Normal file
31
.specify/features/010-property-form-v2/tasks.md
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
# Tasks: Cadastro Completo de Imóvel v2
|
||||
|
||||
**Feature**: `010-property-form-v2`
|
||||
**Generated**: 2026-04-14
|
||||
|
||||
---
|
||||
|
||||
## Database
|
||||
- [ ] T001 Migration: adicionar `iptu_anual` em `properties`
|
||||
|
||||
## Backend
|
||||
- [ ] T002 Endpoint `POST /admin/upload/photo` — multipart, retorna URL pública
|
||||
- [ ] T003 Servir arquivos de upload via Flask (static ou send_from_directory)
|
||||
- [ ] T004 Endpoint `GET /admin/next-property-code` — retorna próximo código sequencial
|
||||
- [ ] T005 Endpoints CRUD `/admin/cities` (POST, PUT, DELETE)
|
||||
- [ ] T006 Endpoints CRUD `/admin/neighborhoods` (POST, PUT, DELETE)
|
||||
- [ ] T007 Endpoints `GET /admin/amenities`, `POST`, `DELETE /:id`
|
||||
- [ ] T008 Endpoints `POST/DELETE /admin/properties/:id/amenities/:amenity_id`
|
||||
- [ ] T009 Incluir `iptu_anual` e `amenity_ids` nos schemas de property
|
||||
|
||||
## Frontend
|
||||
- [ ] T010 AdminCitiesPage — CRUD de cidades + bairros aninhados
|
||||
- [ ] T011 Adicionar link "Cidades" e "Amenidades" no AdminLayout
|
||||
- [ ] T012 AdminAmenitiesPage — CRUD de amenidades por grupo
|
||||
- [ ] T013 PropertyForm: layout full-screen (100vh - header - sidebar)
|
||||
- [ ] T014 PropertyForm: campo IPTU anual
|
||||
- [ ] T015 PropertyForm: upload de foto com preview + progress
|
||||
- [ ] T016 PropertyForm: campo código auto-preenchido na abertura
|
||||
- [ ] T017 PropertyForm: validação visual de campos obrigatórios
|
||||
- [ ] T018 PropertyForm: seção de amenidades multi-select por grupo
|
||||
- [ ] T019 PropertyForm: guard de saída não salva (beforeunload + prompt)
|
||||
Loading…
Add table
Add a link
Reference in a new issue