Rastreabilidade (requisito → onde é atendido)
Mapa que liga cada requisito ao onde ele é implementado (serviço), ao contrato/regra que o sustenta e a como é verificado (teste/observabilidade). Serve para garantir que nada fica "órfão" e para avaliar impacto de mudanças.
Requisitos funcionais (RF)
| RF | Onde é atendido (serviço) | Caso(s) de uso | Regra/contrato | Como é verificado |
|---|---|---|---|---|
| RF-01 Coletar CSV da Caixa | Collector + Backend | executar/baixar_csv · IngerirLoteCsvUseCase | Fonte Caixa (CSV), API de Ingestão | Testes do collector; painel de coletas (RF-11) |
| RF-02 Normalizar/deduplicar | Backend (workers) | NormalizarImovelUseCase · GeocodificarImovelUseCase · idempotência do IngerirLoteCsvUseCase | Eventos RabbitMQ, idempotência por codigo | Testes de contrato + unidade |
| RF-03 Busca e filtros | Backend + Frontend | BuscarImoveisUseCase | API Pública, Modelo de dados | Testes de API; métrica p95 (RNF-01) |
| RF-04 Mapa por região/raio | Frontend + Backend | BuscarImoveisUseCase (bbox/raioKm) | PostGIS (Modelo de dados) | Testes de UI/e2e |
| RF-05 Página de detalhe | Frontend + Backend | ObterImovelUseCase · ListarHistoricoPrecoUseCase | histórico de preço (Modelo de dados) | e2e |
| RF-06 Cálculo de custo/desconto | Backend (workers) | CalcularCustoUseCase | Cálculo de custos | Testes unitários do motor de custos |
| RF-07 Pré-análise (score) | Backend (workers) | CalcularScoreUseCase | Pré-análise de viabilidade | Testes unitários do score |
| RF-08 Favoritos e alertas | Backend + Frontend | ProcessarLoginSocialUseCase · Favoritar/ListarFavoritos · CriarAlerta/AvaliarAlertas | ADR-0013, Regras de negócio | Testes de API/e2e |
| RF-09 Comparar imóveis | Frontend | (composição no front sobre ObterImovelUseCase) | — | e2e |
| RF-10 Resumo do edital (IA, textual) | Backend (AnaliseJuridicaPort) | AnalisarJuridicoUseCase (saída textual/parecer; subconjunto de RF-14) | ADR-0014, Análise jurídica com IA | Testes com editais de amostra; disclaimer obrigatório |
| RF-11 Painel de coletas | Backend + Frontend | métricas do collector + status por UF | "Data de geração" (Fonte Caixa) | Testes de API |
| RF-12 Enriquecer (detalhe) | Collector + Backend | consumir_enriquecimento/parsear_detalhe · IngerirDetalheUseCase | ADR-0010, Fonte Caixa (detalhe) | Testes com fixtures de HTML |
| RF-13 Ciclo de vida (vendido) | Backend + Collector | ConciliarAusenciasUseCase · MarcarStatusImovelUseCase · AvaliarAlertasUseCase | RN-09 | Testes unitários (carência/transições) |
| RF-14 Análise jurídica (IA) | Backend (AnaliseJuridicaPort) | AnalisarJuridicoUseCase (extrai flags do edital/matrícula) | ADR-0014, Análise jurídica com IA | Testes com editais de amostra; grounding/confiança |
| RF-15 Detalhe: cronômetro/aviso/mapa | Frontend | consome ObterImovelUseCase (datas, situacao_ocupacao, localizacao) | API Pública | e2e/UI |
Requisitos não-funcionais (RNF)
| RNF | Onde é atendido | Como é verificado |
|---|---|---|
| RNF-01 Desempenho busca (p95<400ms) | Cache Redis + índices | Métricas (SLO/SLI) |
| RNF-02 Carga inicial (<2s) | Frontend (build/otimização) | Lighthouse/e2e |
| RNF-03 Disponibilidade (99,5%) | k3s + GitOps | SLO/SLI, alertas |
| RNF-04 Escala inicial | Modelo de dados, RabbitMQ | Testes de carga |
| RNF-05 Atualização diária | Collector (scheduler) | Painel de coletas (RF-11) |
| RNF-06 Segurança | ADR-0013 (OIDC/BFF), Segurança, Config & segredos | CI/CD: Trivy/SonarQube |
| RNF-07 Privacidade (LGPD) | Legal & LGPD | Revisão de dados coletados |
| RNF-08 Portabilidade | Docker / k3s | Build de imagem + deploy |
| RNF-09 Acessibilidade/i18n | Frontend | e2e / auditoria a11y |
| RNF-10 Observabilidade | Pilares | Dashboards Grafana |
Manutenção: ao criar/alterar um requisito, atualize esta matriz no mesmo PR. Um requisito sem coluna "onde é atendido" é sinal de lacuna de implementação ou de doc.
Ver também: Requisitos · Testes · SLO/SLI.