Uma interface de IA não é um CRUD clássico
Uma resposta de IA pode demorar vários segundos, chegar de forma progressiva, falhar parcialmente ou exigir validação humana. A interface deve representar estes estados de forma explícita.
Mostrar apenas um indicador de carregamento até à resposta final cria uma má experiência e dificulta o diagnóstico.
O frontend deve distinguir a preparação, a chamada ao modelo, a geração, a validação, o erro e o cancelamento.
Signals e RxJS são complementares
Os Signals são muito eficazes para o estado local da interface: resultado atual, estado, filtros, seleção ou visibilidade.
O RxJS continua especialmente adequado para fluxos assíncronos, eventos contínuos, pesquisas com atraso e composição de fontes.
Numa aplicação de IA, ambos podem coexistir: RxJS para orquestrar os fluxos e Signals para expor um estado simples aos templates.
Gerir o streaming por SSE ou WebSocket
Para respostas progressivas, o SSE basta muitas vezes quando o servidor envia um fluxo unidirecional ao navegador. O WebSocket é útil quando a comunicação tem de ser bidirecional e persistente.
Os componentes Angular não devem tratar diretamente dos detalhes de transporte. Um serviço dedicado deve converter os eventos técnicos em eventos de negócio.
Esta abstração permite mudar de protocolo e gerir a reconexão sem espalhar a lógica de transporte por toda a interface.
Mostrar sempre as fontes e a confiança
Quando uma resposta vem de um RAG ou de um agente, os utilizadores devem conseguir perceber de onde vem a informação importante.
O frontend pode mostrar os documentos citados, o nível de confiança, as ações executadas pelo agente e os pontos que exigem validação.
Esta transparência reforça a confiança e reduz o risco de tomar um conteúdo gerado como verdade absoluta.
Nunca confiar a segurança ao frontend
Esconder um botão ou um campo em Angular não é um controlo de segurança. As permissões devem ser sempre aplicadas no backend.
O frontend pode usar os perfis para melhorar a experiência do utilizador, mas cada API que devolve dados ou desencadeia ações deve voltar a verificar a autorização.
Esta regra é ainda mais importante quando a interface pode desencadear ações de agentes de IA.
Estruturar o frontend por domínio
Uma arquitetura Angular sustentável evita uma única pasta global de componentes com toda a aplicação. As funcionalidades devem ser agrupadas por domínio de negócio.
Cada domínio pode expor páginas, componentes, serviços, modelos e adaptadores de API, enquanto os elementos de interface partilhados ficam numa camada transversal.
Esta estrutura melhora o carregamento diferido, os testes, a manutenção e uma evolução futura para módulos ou micro-frontends se o produto crescer.


