Data: 2026-03-24 Status: aprovado para prova material do app Angular novo; trilha browser-level completa segue separada e pendente de harness canonico
Provar o guia frontend em um cenario mais forte que a rodada anterior:
@praxisui publicadastmp/ai-guide-proof-angular-crud-r5https://praxis-api-quickstart.onrender.com/funcionariosHost canônico gerado:
praxis-crud para lista principalpraxis-dynamic-form para rota de visualizacaoAPI_URL relativo com path: '/api'proxy.conf.js para /api e
/schemasresourcePath = api/human-resources/funcionariosO guia dizia apenas:
@praxisui/core@praxisui/table@praxisui/dynamic-form@praxisui/crudNa pratica, um app Angular novo tambem precisou de:
@angular/animations@angular/cdk@angular/material@praxisui/ai@google/generative-aiErros capturados:
Could not resolve "@praxisui/ai"Could not resolve "@google/generative-ai"Foi necessario configurar:
provideHttpClient()provideAnimationsAsync()API_URLrouter-outlet no rootsrc/styles.scssNao basta criar proxy.conf.js.
Tambem foi necessario ligar:
angular.json -> serve.options.proxyConfig = "proxy.conf.js"O app ficou semanticamente correto, mas ng build falhou
com:
bundle initial exceeded maximum budgetFoi necessario ajustar o budget inicial para:
2MB3MBng serve
travou no prompt de analyticsNa primeira subida, o Angular CLI pediu confirmacao de analytics e bloqueou a execucao nao interativa.
Isso tambem precisou entrar como observacao operacional do guia.
API_URL do guia ainda estava otimista demais para app
externoNa primeira versao do host de prova, usar:
baseUrl: ''path: '/api'resourcePath = api/...fez alguns fluxos de schema montarem URLs como
/api/api/....
O guia foi corrigido para preferir:
baseUrl = window.location.originpath = '/api'para apps Angular novos fora do workspace oficial.
providePraxisGlobalConfigBootstrap() nao pertence ao
baseline minimoQuando o host novo incluiu esse bootstrap sem realmente integrar
praxis-config-starter, o runtime passou a tentar usar
/api/praxis/config/** e gerou ruido de:
403 ForbiddenO guia foi corrigido para tratar esse bootstrap como opcional, nao como parte do setup minimo de CRUD.
Ao abrir o host no browser com as libs publicadas
@praxisui 3.0.0-beta.2, o runtime falhou com:
NG0201: No provider found for _DatePipeDiagnostico:
@praxisui/table vazava uma dependencia interna de pipes
Angular pelo DataFormattingServiceDatePipe,
DecimalPipe, CurrencyPipe,
PercentPipe, UpperCasePipe,
LowerCasePipe e TitleCasePipe, o que nao e
contrato aceitavel para um host canônicoCorrecao feita na plataforma:
DataFormattingService passou a encapsular os formatters
internamente usando apenas LOCALE_IDpraxis-tablepraxis-crud continuou aprovadoExecutado com override local de npm para neutralizar o
registry privado do ambiente:
NPM_CONFIG_USERCONFIG=/dev/null npm_config_registry=https://registry.npmjs.org/ npm install ...Resultado:
Comando:
npm run buildResultado final:
dist/appComando:
npm start -- --host 127.0.0.1 --port 4305Resultado:
http://127.0.0.1:4305/funcionarios respondeu
200Executado com servidor estatico local sobre
dist/app/browser e proxy para o backend de referencia.
Resultado:
DatePipe nas libs
publicadasdist/ expôs um problema separado de consumo local
ainda nao canonizado (NG0203 em
_HighContrastModeDetector com colisões
NG0912)Conclusao operacional desta etapa:
@praxisui 3.0.0-beta.3Depois da publicacao de 3.0.0-beta.3, o sandbox foi
realinhado para usar os pacotes publicados do registry, sem
dist local.
Resultado observado:
npm install com 3.0.0-beta.3:
aprovadonpm run build -- --configuration development:
aprovadoNG0201: No provider found for _DatePipe/schemas/filtered?path=/api/human-resources/funcionarios/all...Ponto ainda pendente:
/funcionarios entrou em
execucao pesada apos o fetch de schema e o renderer nao devolveu nem uma
leitura simples do DOM no tempo esperado da provaInterpretacao operacional:
beta.3 corrigiu o leak de pipes, como esperadoA investigacao seguinte mostrou que o gargalo remanescente nao esta no guide bootstrap nem no contrato HTTP principal do app novo:
POST /api/human-resources/funcionarios/filter?page=0&size=10
com Content-Type: application/json e
postData = {}200 via curl,
tanto direto no backend quanto passando pelo ng serve
oficial do appDois fatores de harness apareceram durante a prova:
dist/app/browser
nao era confiavel para requests browser-level de
POST /filter, produzindo 403 espuriong serve canonico do app, a automacao
Playwright headless nao conseguiu observar a resposta do
POST /filter dentro da janela usada pela prova, apesar de o
endpoint responder 200 via curl no mesmo
originConclusao refinada:
/filterEvidencia complementar importante:
ng serve do proprio sandbox em
http://127.0.0.1:4305, o curl para
POST /api/human-resources/funcionarios/filter?page=0&size=10
com body {} respondeu 200O guia foi endurecido para explicitar:
provideHttpClient() e
provideAnimationsAsync()API_URL com window.location.origin para
host externoangular.jsonprovidePraxisGlobalConfigBootstrap() como opcional, nao
baselineO guia frontend agora esta mais proximo do mesmo nivel de operacionalidade ja atingido pelos guias backend.
Antes desta rodada, uma LLM conseguiria montar boa parte do host, mas ainda quebraria com alta probabilidade em:
Depois dos ajustes, o fluxo de app Angular novo ficou materialmente provado ate o ponto de:
E a prova adicional em browser foi suficiente para endurecer o guia e
revelar uma correcao de plataforma necessaria em
@praxisui/table.
Com 3.0.0-beta.3, a prova confirmou a correcao de
DatePipe, mas ainda nao fechou o smoke browser-level
completo do host CRUD novo.
@praxisui 3.0.0-beta.3Proximo passo recomendado: