# Análise Técnica - PraFrota FE (Angular Workspace)

Esta análise detalha a arquitetura multi-projeto do Front-End da PraFrota, validada por nossa equipe de 8 especialistas.

---

## 🔍 Respostas e Validações

### 1. Pasta .cursor e .cursorrules
**Dúvida**: Como o cursor está usando e o que se trata a pasta dele e o arquivo cursorrules?
**Resposta Consolidada (Arquiteto & Dev Frontend)**:
O arquivo `.cursorrules` e a pasta `.cursor` são fundamentais para o desenvolvimento assistido por IA no editor Cursor. Eles funcionam como o "cérebro" da IA para este projeto, definindo:
- **Padrões de Código**: Como usar standalone componentes e o `BaseDomainComponent`.
- **Regras de Negócio**: Nomenclatura obrigatória para métodos de service (ex: `getEntities`, `create`, `update`).
- **Restrições**: Proibição de comandos como `ng serve` (porque o servidor já roda via debugger) e obrigatoriedade de arquivos CSS/HTML separados.

### 2. Instruções em JSON (.mcp) vs Markdown
**Dúvida**: Para que seria necessário ter arquivos de contexto para ia também em json, sendo que já existe o instructions.md?
**Resposta Consolidada (DevOps & QA)**:
O `instructions.md` é legível para humanos e IAs generativas padrão. Já os arquivos `.mcp/config.json` e `.mcp/ai-context.json` seguem o **Model Context Protocol**, que permite uma integração mais profunda e estruturada com ferramentas de validação automática (como o `validate.js`). Eles servem para uma automação "máquina-para-máquina", garantindo que a IA não apenas entenda o texto, mas siga regras rígidas de estrutura de dados.

### 3. Config.json e .mcp
**Dúvida**: Como funciona o config.json? Qual é necessidade de validar outros arquivos na pasta .mcp?
**Resposta Consolidada (Especialista em Documentação)**:
O `config.json` na pasta `.mcp` mapeia as entidades do sistema (Veículos, Motoristas, etc). A necessidade de validar outros arquivos (como via `validate.js`) é garantir que, ao gerar um novo módulo de domínio, as interfaces, services e componentes estejam 100% alinhados com o design system do PraFrota, evitando erros de integração.

### 4. Environments e Rotas de Produção
**Dúvida**: Qual é necessidade do ts dentro do environments e as rotas de produção/dev?
**Resposta Consolidada (Arquiteto & Segurança)**:
Esses arquivos permitem que a aplicação mude sua URL de API e configurações de segurança dependendo de onde está rodando.
- **Dev**: Usa mocks ou servidores locais para segurança e rapidez.
- **Prod**: Usa o endereço oficial (`https://prafrota-be-bff-tenant-api...`) e configurações de log/performance mais restritas.

### 5. Estrutura de Projetos (App, Models, etc.)
**Dúvida**: O que são as pastas dentro de projetos e qual seria necessidade dela, como app e models?
**Resposta Consolidada (Arquiteto)**:
O workspace segue o padrão multi-repo do Angular/Nx:
- **`idt_app`**: É o núcleo da interface de usuário principal.
- **`src/app/pages`**: Contém as telas reais do sistema.
- **`src/app/domain`**: Contém modelos de dados e lógica de negócio específica de cada entidade (Drivers, Vehicles).
As pastas `models` dentro de `domain` definem as interfaces (`.interface.ts`) que tipam os dados vindo das APIs.

### 6. Main.ts e Index.html
**Dúvida**: Como funciona o main.ts e o index.html?
**Resposta Consolidada (Dev Frontend)**:
O `index.html` é o arquivo "vazio" que o navegador carrega. O `main.ts` é o "faísca" que inicia o Angular, informando ao navegador qual é o componente principal (`AppComponent`) para ser renderizado dentro do `index.html`.

### 7. SCSS vs CSS
**Dúvida**: Por que o projeto utiliza scss e qual é diferença?
**Resposta Consolidada (UX Designer)**:
O SCSS é uma versão "turbinada" do CSS. Ele permite usar variáveis, funções e, principalmente, **aninhamento**, o que torna a manutenção de estilos complexos de um ERP muito mais organizada e rápida comparada ao CSS comum.

---

## 🛠️ Conclusão Técnica
O PraFrota FE é um projeto Angular de nível empresarial. Ele utiliza automação pesada e padrões de arquitetura (Domain Driven Design) para permitir que múltiplos desenvolvedores (ou IAs) trabalhem no mesmo código sem quebrar a consistência visual e funcional.
