Sprint 0: plataforma base (Serilog, CI, Dependabot, docker-compose)#1
Merged
Conversation
- Serilog com bootstrap logger, ReadFromConfiguration e request logging; sinks Console + Seq (levels overridden para AspNetCore/EF Core/System) - docker-compose: servicos Seq (5341) e MinIO (9000/9001); senhas movidas para env vars com default de dev - backend-ci.yml: restore/build/test Release + check de pacotes vulneraveis - frontend-ci.yml: lint/build/audit com cache npm - dependabot.yml: NuGet (API+Tests), npm, github-actions, docker com grouping de updates relacionados (aspnet, serilog, react, vite, eslint) - PLANO-DESENVOLVIMENTO.md: roadmap 14 sprints versionado no repo Build verde (0 warnings), 8 testes passando, lint + build frontend ok. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This was referenced Apr 21, 2026
gustavograciano
added a commit
that referenced
this pull request
Apr 22, 2026
Sprint 8: Espelho de vendas PDF (QuestPDF) - diferencial #1
4 tasks
gustavograciano
added a commit
that referenced
this pull request
Apr 23, 2026
Bugs identificados em teste ponta-a-ponta com Chrome extension. #1 Migrations: log detalhado + fail-fast - Program.cs agora lista migrations pendentes antes de aplicar - Em erro de migration, re-lanca exception (fail-fast) ao inves de silenciar - Evita que API suba com schema desatualizado #2 Seed Assinatura ativa do tenant demo (CRITICAL) - ApplicationDbContext.SeedData agora cria Assinatura ativa (Plano Pro) - Sem isso todos endpoints com [RequiresPlan] retornavam 402 e bloqueavam criacao de apartamento, empreendimento e usuario no ambiente dev/demo - Migration SeedAssinaturaECorretorComissao aplica o seed #3 Mask stack trace em producao (ja resolvido) - ProblemDetailsMiddleware ja verifica IsDevelopment() antes de expor detalhes. Comportamento correto: stack trace so em dev #4 + #5 NovaVendaDialog: auto-preencher da proposta + submit silencioso - Root cause: MUI TextField select + RHF register() nao dispara onChange confiavelmente e nao re-renderiza com setValue - Todos os Select sao controlados explicitamente (value=watch, onChange=setValue) - Auto-fill via reset() completo ao inves de setValue individual (forca re-render dos inputs numericos uncontrolled) #6 Comissoes nao geradas ao criar venda - Root cause: seed Corretor nao tinha PercentualComissao - Corretor Teste agora tem PercentualComissao=3% + CRECI - Venda criada para este corretor gera Comissao automaticamente #7 Vite strictPort - vite.config.js: server.port=5173 + strictPort=true - Falha ao iniciar se porta ocupada, evitando confusao dev com processo antigo #8 Espelho de vendas: todas as torres agora aparecem - MapaEmpreendimento agrupa primeiro por Torre (blocos separados), depois por pavimento. Antes misturava aptos de torres diferentes na mesma linha - Legenda unica no rodape ao inves de uma por torre Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
gustavograciano
added a commit
that referenced
this pull request
Apr 23, 2026
* fix(qa): 7 bugs encontrados no QA E2E Bugs identificados em teste ponta-a-ponta com Chrome extension. #1 Migrations: log detalhado + fail-fast - Program.cs agora lista migrations pendentes antes de aplicar - Em erro de migration, re-lanca exception (fail-fast) ao inves de silenciar - Evita que API suba com schema desatualizado #2 Seed Assinatura ativa do tenant demo (CRITICAL) - ApplicationDbContext.SeedData agora cria Assinatura ativa (Plano Pro) - Sem isso todos endpoints com [RequiresPlan] retornavam 402 e bloqueavam criacao de apartamento, empreendimento e usuario no ambiente dev/demo - Migration SeedAssinaturaECorretorComissao aplica o seed #3 Mask stack trace em producao (ja resolvido) - ProblemDetailsMiddleware ja verifica IsDevelopment() antes de expor detalhes. Comportamento correto: stack trace so em dev #4 + #5 NovaVendaDialog: auto-preencher da proposta + submit silencioso - Root cause: MUI TextField select + RHF register() nao dispara onChange confiavelmente e nao re-renderiza com setValue - Todos os Select sao controlados explicitamente (value=watch, onChange=setValue) - Auto-fill via reset() completo ao inves de setValue individual (forca re-render dos inputs numericos uncontrolled) #6 Comissoes nao geradas ao criar venda - Root cause: seed Corretor nao tinha PercentualComissao - Corretor Teste agora tem PercentualComissao=3% + CRECI - Venda criada para este corretor gera Comissao automaticamente #7 Vite strictPort - vite.config.js: server.port=5173 + strictPort=true - Falha ao iniciar se porta ocupada, evitando confusao dev com processo antigo #8 Espelho de vendas: todas as torres agora aparecem - MapaEmpreendimento agrupa primeiro por Torre (blocos separados), depois por pavimento. Antes misturava aptos de torres diferentes na mesma linha - Legenda unica no rodape ao inves de uma por torre Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * docs: documento de apresentacao do sistema pos QA E2E Compilacao das validacoes de QA ponta-a-ponta apos correcao dos 8 bugs (PR #62). Descreve em detalhe cada tela e funcionalidade dos 5 diferenciais competitivos + fluxo comercial core (cliente -> proposta -> venda -> contrato -> comissao). Tabela de RBAC validado por endpoint + role. Credenciais demo + URLs locais. Roadmap de integracoes externas que ficam como etapa de producao. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --------- 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 0: plataforma base (Serilog, CI, Dependabot, docker-compose)
gustavograciano
added a commit
that referenced
this pull request
May 3, 2026
Sprint 8 (marcada 3 estrelas no plano): o que fecha venda com diretor
comercial. 3 templates de espelho profissional.
Application:
- EspelhoPdfGenerator (QuestPDF Community license):
- Comercial: A4 portrait, lista plana ordenada por pavimento+numero
com Tipologia/Quartos/Area/Preco/Status badge colorida
- PorTorre: A3 landscape, grid visual tipo "espelho de verdade"
com apto por celula colorida pelo status, legenda no final
- Executivo: A4 portrait com 4 KPIs (VGV Total/Vendido/%Vendido/
Preco Medio m²) + tabela de distribuicao por status + breakdown
por torre
- Todos com watermark "CONFIDENCIAL" + data/hora + usuario no footer
- Cores semanticas por StatusApartamento (verde/ambar/laranja/vermelho)
- Enum TipoEspelho
Api:
- GET /api/empreendimentos/{id}/espelho?tipo=Comercial|PorTorre|
Executivo retorna application/pdf stream
- Filename "espelho-{slug}-{tipo}-{timestamp}.pdf"
- Log estruturado (quem gerou, qual empreendimento, quando)
Tests (91 total, +5):
- Gera PDF nao-vazio para os 3 tipos (theory)
- Magic bytes do PDF (%PDF)
- Sem apartamentos ainda gera PDF valido (edge case empreendimento
recem cadastrado)
- TipoEspelho invalido lanca ArgumentOutOfRangeException
Pacotes:
- Application: QuestPDF 2024.10.2
gustavograciano
added a commit
that referenced
this pull request
May 3, 2026
Sprint 8: Espelho de vendas PDF (QuestPDF) - diferencial #1
gustavograciano
added a commit
that referenced
this pull request
May 3, 2026
Bugs identificados em teste ponta-a-ponta com Chrome extension. #1 Migrations: log detalhado + fail-fast - Program.cs agora lista migrations pendentes antes de aplicar - Em erro de migration, re-lanca exception (fail-fast) ao inves de silenciar - Evita que API suba com schema desatualizado #2 Seed Assinatura ativa do tenant demo (CRITICAL) - ApplicationDbContext.SeedData agora cria Assinatura ativa (Plano Pro) - Sem isso todos endpoints com [RequiresPlan] retornavam 402 e bloqueavam criacao de apartamento, empreendimento e usuario no ambiente dev/demo - Migration SeedAssinaturaECorretorComissao aplica o seed #3 Mask stack trace em producao (ja resolvido) - ProblemDetailsMiddleware ja verifica IsDevelopment() antes de expor detalhes. Comportamento correto: stack trace so em dev #4 + #5 NovaVendaDialog: auto-preencher da proposta + submit silencioso - Root cause: MUI TextField select + RHF register() nao dispara onChange confiavelmente e nao re-renderiza com setValue - Todos os Select sao controlados explicitamente (value=watch, onChange=setValue) - Auto-fill via reset() completo ao inves de setValue individual (forca re-render dos inputs numericos uncontrolled) #6 Comissoes nao geradas ao criar venda - Root cause: seed Corretor nao tinha PercentualComissao - Corretor Teste agora tem PercentualComissao=3% + CRECI - Venda criada para este corretor gera Comissao automaticamente #7 Vite strictPort - vite.config.js: server.port=5173 + strictPort=true - Falha ao iniciar se porta ocupada, evitando confusao dev com processo antigo #8 Espelho de vendas: todas as torres agora aparecem - MapaEmpreendimento agrupa primeiro por Torre (blocos separados), depois por pavimento. Antes misturava aptos de torres diferentes na mesma linha - Legenda unica no rodape ao inves de uma por torre
gustavograciano
added a commit
that referenced
this pull request
May 3, 2026
* fix(qa): 7 bugs encontrados no QA E2E Bugs identificados em teste ponta-a-ponta com Chrome extension. #1 Migrations: log detalhado + fail-fast - Program.cs agora lista migrations pendentes antes de aplicar - Em erro de migration, re-lanca exception (fail-fast) ao inves de silenciar - Evita que API suba com schema desatualizado #2 Seed Assinatura ativa do tenant demo (CRITICAL) - ApplicationDbContext.SeedData agora cria Assinatura ativa (Plano Pro) - Sem isso todos endpoints com [RequiresPlan] retornavam 402 e bloqueavam criacao de apartamento, empreendimento e usuario no ambiente dev/demo - Migration SeedAssinaturaECorretorComissao aplica o seed #3 Mask stack trace em producao (ja resolvido) - ProblemDetailsMiddleware ja verifica IsDevelopment() antes de expor detalhes. Comportamento correto: stack trace so em dev #4 + #5 NovaVendaDialog: auto-preencher da proposta + submit silencioso - Root cause: MUI TextField select + RHF register() nao dispara onChange confiavelmente e nao re-renderiza com setValue - Todos os Select sao controlados explicitamente (value=watch, onChange=setValue) - Auto-fill via reset() completo ao inves de setValue individual (forca re-render dos inputs numericos uncontrolled) #6 Comissoes nao geradas ao criar venda - Root cause: seed Corretor nao tinha PercentualComissao - Corretor Teste agora tem PercentualComissao=3% + CRECI - Venda criada para este corretor gera Comissao automaticamente #7 Vite strictPort - vite.config.js: server.port=5173 + strictPort=true - Falha ao iniciar se porta ocupada, evitando confusao dev com processo antigo #8 Espelho de vendas: todas as torres agora aparecem - MapaEmpreendimento agrupa primeiro por Torre (blocos separados), depois por pavimento. Antes misturava aptos de torres diferentes na mesma linha - Legenda unica no rodape ao inves de uma por torre * docs: documento de apresentacao do sistema pos QA E2E Compilacao das validacoes de QA ponta-a-ponta apos correcao dos 8 bugs (PR #62). Descreve em detalhe cada tela e funcionalidade dos 5 diferenciais competitivos + fluxo comercial core (cliente -> proposta -> venda -> contrato -> comissao). Tabela de RBAC validado por endpoint + role. Credenciais demo + URLs locais. Roadmap de integracoes externas que ficam como etapa de producao. ---------
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
Primeira entrega do Sprint 0 do PLANO-DESENVOLVIMENTO.md — base técnica antes de refatorar o domínio.
UseSerilogRequestLogging+ sinks Console/Seq (levels sobrepostos em AspNetCore/EF/System). Seq local emhttp://localhost:5341.docker-compose.ymlganhou serviçosseqeminio(API + console web em 9000/9001). Senhas do SA do SQL e do MinIO passaram para env vars com default de dev.backend-ci.yml(restore/build/test Release +dotnet list package --vulnerable) efrontend-ci.yml(lint/build/audit com cache npm). Pipelines disparam em push/PR emmaincom path filters.PLANO-DESENVOLVIMENTO.mdversionado no repo como single source of truth do roadmap de 14 sprints.O que fica pra próximo PR
Empreendimento/Torre/Tipologia/HistoricoPreco+ migration.obj/**que ficaram no índice de commits anteriores (chore separado).Test plan
dotnet build ImovelStand.sln --configuration Releasesem warningsdotnet test— 8 testes passandocd imovelstand-frontend && npm ci && npm run lint && npm run buildverdedocker compose up seq— Seq acessível em http://localhost:5341backend-ciefrontend-civerdes neste PR🤖 Generated with Claude Code