MG-9: o NestJS sai, e o mapa de onde cada regra foi morar fica
O bolao-backend/ foi removido. Nenhuma regra mudou de conteúdo — mudou quem a
aplica, e a tabela completa está em docs/prd/migracao-firebase.md, porque o
histórico do git responde "o que saiu" e não responde "para onde foi".
O resumo: prazo e sigilo viraram security rule; pontuação, classificação e
sincronização viraram Function; a lista da tela inicial virou índice mantido por
gatilho; e o palpite continua escrita direta, porque é o caminho quente e Function
no meio somaria cold start ao momento em que todo mundo palpita junto.
Por que só agora
Enquanto o NestJS existia, ele era o oráculo: dava para comparar comportamento em
vez de supor. Foi assim que a única divergência real da migração (CV-4-01) apareceu
como divergência, e não como "sempre foi assim". Remover cedo teria sido mais
rápido e teria custado essa referência.
Três testes passavam fazendo HTTP de verdade
Este é o achado da story, e não estava previsto. Os dublês de teste herdavam da
implementação HTTP e sobrescreviam só o que o caso precisava — método não
sobrescrito ia para a rede. CC-1-09, CC-2-03 e CC-10-12 navegavam para a tela da
rodada, que chama rodada() ao montar; a chamada falhava por rede, a exceção morria
no catch da tela, e a asserção era sobre a tela anterior. Havia HTTP num teste de
widget, e ele dependia de o servidor estar fora do ar para passar.
Com o ApiClient removido, os falsos passaram a herdar de um dublê base que lança
UnimplementedError com o nome do método faltando. Os três caíram na hora e ganharam
o método que a tela realmente chama. Herança conveniente esconde dependência.
O ApiClient saiu junto (MG-7 FE-6), com as cinco implementações HTTP, o API_URL e a
chave --dart-define=BACKEND. Verificado em device com o NestJS já removido: 332
casos no Firebase, 244 de widget, 4 em device contra a fonte oficial, analyze limpo.
Co-Authored-By:
Claude Opus 5 (1M context) <noreply@anthropic.com>
parent
a8716a37
Please register or sign in to comment