Sprint 1: Clean Architecture + dominio Empreendimento/Torre/Tipologia#22
Merged
Conversation
Estrutura alvo do PLANO-DESENVOLVIMENTO.md - Sprint 0/1: - src/ImovelStand.Domain: entidades (Apartamento, Cliente, Reserva, Usuario, Venda) - src/ImovelStand.Application: TokenService + DTOs de login - src/ImovelStand.Infrastructure: ApplicationDbContext + Migrations - src/ImovelStand.Jobs: stub para Hangfire (Sprint 11) - ImovelStand.Api: controllers, Program.cs, DI Refs: Api -> Application/Infrastructure/Jobs; Infra -> Application -> Domain. Pacotes EF Core movidos para Infrastructure; JWT/BCrypt para Application. Namespaces renomeados via git mv (preserva historico). Usings atualizados em controllers, Program.cs e tests. Build Release sem erros, 8 testes passando. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sprint 1 do PLANO-DESENVOLVIMENTO.md: refatoracao do dominio para suportar empreendimentos com multiplas torres/tipologias. Novas entidades (Domain): - Empreendimento (+Endereco owned, +Slug unico, +VgvEstimado) - Torre (FK Empreendimento, unique por nome dentro do emp) - Tipologia (FK Empreendimento, caracteristicas fisicas + PrecoBase) - HistoricoPreco (FK Apartamento, preco anterior/novo + motivo) - Foto (polymorphic por EntidadeTipo+EntidadeId) Novos enums: StatusApartamento, StatusEmpreendimento, Orientacao, TipoEntidadeFoto. Value object Endereco (owned type). Refatoracao de Apartamento: - FKs: TorreId, TipologiaId (antes nao tinha nenhuma) - Andar -> Pavimento; Preco -> PrecoAtual; Status string -> enum - Removidos Quartos/Banheiros/AreaMetrosQuadrados (agora em Tipologia) Infrastructure: - HistoricoPrecoInterceptor (SaveChangesInterceptor): detecta mudancas em Apartamento.PrecoAtual e registra HistoricoPreco automaticamente - Registrado como singleton no Program.cs e adicionado ao DbContext - Migration RefatoracaoDominio: preserva dados antigos via UpdateData; cria novas tabelas; adiciona FKs ao final Seed demo atualizado: 1 Empreendimento, 2 Torres, 3 Tipologias, 48 Apartamentos (12 pavimentos x 2 apts x 2 torres). Preco por andar com premio de 1%/pavimento. Ultimo pavimento = cobertura (tipologia 3). Controllers Apartamentos/Reservas/Vendas migrados para comparar Status como enum em vez de string. Program.cs: HostAbortedException silenciada no catch (esperado em design-time do EF Core migrations). Tests: 3 novos testes do HistoricoPrecoInterceptor (InMemory DB), placeholder UnitTest1 removido. Total: 10 testes passando. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
gustavograciano
added a commit
that referenced
this pull request
May 3, 2026
Sprint 1: Clean Architecture + dominio Empreendimento/Torre/Tipologia
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Sprint 1 do PLANO-DESENVOLVIMENTO.md — refatoração estrutural da solução e introdução do domínio de empreendimento/torre/tipologia que destrava todo o resto do roadmap.
Commit 1 — Clean Architecture (5 projetos)
Refs: `Api → Application/Infrastructure/Jobs`; `Infrastructure → Application → Domain`. Pacotes EF Core movidos para Infrastructure; JWT/BCrypt para Application. Todos os `git mv` preservam histórico de arquivo (ver diff renames).
Commit 2 — Domínio novo
Entidades (`src/ImovelStand.Domain/Entities`):
Enums: `StatusApartamento`, `StatusEmpreendimento`, `Orientacao`, `TipoEntidadeFoto`.
Refatoração de Apartamento:
HistoricoPrecoInterceptor: `SaveChangesInterceptor` que detecta mudanças em `Apartamento.PrecoAtual` e registra `HistoricoPreco` automaticamente. Registrado como singleton + `AddInterceptors` no DbContext.
Migration RefatoracaoDominio: gerada via `dotnet ef migrations add`. Preserva dados antigos via UpdateData (apartamentos 1–5 viram parte da Torre A / Tipologias 1–3); cria tabelas novas; adiciona FKs ao final para evitar ordering issues.
Seed demo atualizado: 1 Empreendimento ("Residencial Exemplo"), 2 Torres (A/B), 3 Tipologias (2Q/3Q/Cobertura), 48 apartamentos (12 pav × 2 apts × 2 torres) com prêmio de preço de 1% por andar.
Test plan
O que fica pra próximo PR
🤖 Generated with Claude Code