Skip to content

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)

RFOnde é atendido (serviço)Caso(s) de usoRegra/contratoComo é verificado
RF-01 Coletar CSV da CaixaCollector + Backendexecutar/baixar_csv · IngerirLoteCsvUseCaseFonte Caixa (CSV), API de IngestãoTestes do collector; painel de coletas (RF-11)
RF-02 Normalizar/deduplicarBackend (workers)NormalizarImovelUseCase · GeocodificarImovelUseCase · idempotência do IngerirLoteCsvUseCaseEventos RabbitMQ, idempotência por codigoTestes de contrato + unidade
RF-03 Busca e filtrosBackend + FrontendBuscarImoveisUseCaseAPI Pública, Modelo de dadosTestes de API; métrica p95 (RNF-01)
RF-04 Mapa por região/raioFrontend + BackendBuscarImoveisUseCase (bbox/raioKm)PostGIS (Modelo de dados)Testes de UI/e2e
RF-05 Página de detalheFrontend + BackendObterImovelUseCase · ListarHistoricoPrecoUseCasehistórico de preço (Modelo de dados)e2e
RF-06 Cálculo de custo/descontoBackend (workers)CalcularCustoUseCaseCálculo de custosTestes unitários do motor de custos
RF-07 Pré-análise (score)Backend (workers)CalcularScoreUseCasePré-análise de viabilidadeTestes unitários do score
RF-08 Favoritos e alertasBackend + FrontendProcessarLoginSocialUseCase · Favoritar/ListarFavoritos · CriarAlerta/AvaliarAlertasADR-0013, Regras de negócioTestes de API/e2e
RF-09 Comparar imóveisFrontend(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 IATestes com editais de amostra; disclaimer obrigatório
RF-11 Painel de coletasBackend + Frontendmétricas do collector + status por UF"Data de geração" (Fonte Caixa)Testes de API
RF-12 Enriquecer (detalhe)Collector + Backendconsumir_enriquecimento/parsear_detalhe · IngerirDetalheUseCaseADR-0010, Fonte Caixa (detalhe)Testes com fixtures de HTML
RF-13 Ciclo de vida (vendido)Backend + CollectorConciliarAusenciasUseCase · MarcarStatusImovelUseCase · AvaliarAlertasUseCaseRN-09Testes 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 IATestes com editais de amostra; grounding/confiança
RF-15 Detalhe: cronômetro/aviso/mapaFrontendconsome ObterImovelUseCase (datas, situacao_ocupacao, localizacao)API Públicae2e/UI

Requisitos não-funcionais (RNF)

RNFOnde é atendidoComo é verificado
RNF-01 Desempenho busca (p95<400ms)Cache Redis + índicesMétricas (SLO/SLI)
RNF-02 Carga inicial (<2s)Frontend (build/otimização)Lighthouse/e2e
RNF-03 Disponibilidade (99,5%)k3s + GitOpsSLO/SLI, alertas
RNF-04 Escala inicialModelo de dados, RabbitMQTestes de carga
RNF-05 Atualização diáriaCollector (scheduler)Painel de coletas (RF-11)
RNF-06 SegurançaADR-0013 (OIDC/BFF), Segurança, Config & segredosCI/CD: Trivy/SonarQube
RNF-07 Privacidade (LGPD)Legal & LGPDRevisão de dados coletados
RNF-08 PortabilidadeDocker / k3sBuild de imagem + deploy
RNF-09 Acessibilidade/i18nFrontende2e / auditoria a11y
RNF-10 ObservabilidadePilaresDashboards 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.