Rodada 07 - App Angular novo do zero

Rodada 07 - App Angular novo do zero

Data: 2026-03-24 Status: aprovado para prova material do app Angular novo; trilha browser-level completa segue separada e pendente de harness canonico

Objetivo

Provar o guia frontend em um cenario mais forte que a rodada anterior:

Sandbox

Cenario implementado

Host canônico gerado:

Achados reais da prova

1. Dependencias minimas do guia estavam incompletas

O guia dizia apenas:

Na pratica, um app Angular novo tambem precisou de:

Erros capturados:

2. O guia nao explicitava o bootstrap minimo do app novo

Foi necessario configurar:

3. Proxy de desenvolvimento precisava estar mais prescritivo

Nao basta criar proxy.conf.js.

Tambem foi necessario ligar:

4. O budget default do Angular CLI falhou

O app ficou semanticamente correto, mas ng build falhou com:

Foi necessario ajustar o budget inicial para:

5. ng serve travou no prompt de analytics

Na primeira subida, o Angular CLI pediu confirmacao de analytics e bloqueou a execucao nao interativa.

Isso tambem precisou entrar como observacao operacional do guia.

6. API_URL do guia ainda estava otimista demais para app externo

Na primeira versao do host de prova, usar:

fez alguns fluxos de schema montarem URLs como /api/api/....

O guia foi corrigido para preferir:

para apps Angular novos fora do workspace oficial.

7. providePraxisGlobalConfigBootstrap() nao pertence ao baseline minimo

Quando 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:

O guia foi corrigido para tratar esse bootstrap como opcional, nao como parte do setup minimo de CRUD.

8. O smoke browser-level expôs um bug real nas libs publicadas

Ao abrir o host no browser com as libs publicadas @praxisui 3.0.0-beta.2, o runtime falhou com:

Diagnostico:

Correcao feita na plataforma:

Validacoes executadas

1. Instalacao das dependencias

Executado 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:

2. Build do app

Comando:

npm run build

Resultado final:

3. Subida do host

Comando:

npm start -- --host 127.0.0.1 --port 4305

Resultado:

4. Smoke browser-level

Executado com servidor estatico local sobre dist/app/browser e proxy para o backend de referencia.

Resultado:

Conclusao operacional desta etapa:

5. Revalidacao com @praxisui 3.0.0-beta.3

Depois da publicacao de 3.0.0-beta.3, o sandbox foi realinhado para usar os pacotes publicados do registry, sem dist local.

Resultado observado:

Ponto ainda pendente:

Interpretacao operacional:

6. Diagnostico adicional da automacao browser-level

A investigacao seguinte mostrou que o gargalo remanescente nao esta no guide bootstrap nem no contrato HTTP principal do app novo:

Dois fatores de harness apareceram durante a prova:

  1. o proxy Python artesanal usado sobre dist/app/browser nao era confiavel para requests browser-level de POST /filter, produzindo 403 espurio
  2. mesmo com ng 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 origin

Conclusao refinada:

Evidencia complementar importante:

Ajustes feitos no guia

O guia foi endurecido para explicitar:

Conclusao

O 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.

Veredito operacional consolidado

Proximo passo recomendado: