Skip to content

Sprint 8: Espelho de vendas PDF (QuestPDF) - diferencial #1#30

Merged
gustavograciano merged 1 commit into
mainfrom
feat/sprint-8-espelho-pdf
Apr 22, 2026
Merged

Sprint 8: Espelho de vendas PDF (QuestPDF) - diferencial #1#30
gustavograciano merged 1 commit into
mainfrom
feat/sprint-8-espelho-pdf

Conversation

@gustavograciano

Copy link
Copy Markdown
Owner

Summary

Sprint 8 (⭐⭐⭐ no PLANO-DESENVOLVIMENTO.md) — diferencial #1 do produto. O que fecha venda com diretor comercial.

Application — EspelhoPdfGenerator

3 templates com QuestPDF Community (grátis <US$1M/ano):

  • Comercial (A4): lista plana por pavimento+número, Tipologia/Quartos/Área/Preço/Status badge
  • Por Torre (A3 landscape): grid visual tipo "espelho de verdade", 1 célula por apto colorida pelo status, legenda no rodapé
  • Executivo (A4): 4 KPIs (VGV Total/Vendido/%Vendido/Preço Médio m²) + distribuição por status + breakdown por torre

Todos com watermark "CONFIDENCIAL" + data/hora + usuário que gerou.

Api

  • `GET /api/empreendimentos/{id}/espelho?tipo=Comercial|PorTorre|Executivo` retorna `application/pdf` streaming
  • Filename `espelho-{slug}-{tipo}-{timestamp}.pdf`
  • Log estruturado de auditoria

Testes — 91 total (+5)

  • PDF não-vazio para 3 tipos
  • Magic bytes `%PDF`
  • Empreendimento vazio ainda gera PDF válido
  • Tipo inválido lança exception

Próximo PR (Sprint 9)

Geração de contrato DOCX com DocX + templates com placeholders `{{cliente.nome}}`.

🤖 Generated with Claude Code

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

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@gustavograciano gustavograciano merged commit 80fd307 into main Apr 22, 2026
gustavograciano added a commit that referenced this pull request May 3, 2026
Sprint 8: Espelho de vendas PDF (QuestPDF) - diferencial #1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant