# Inventário de Componentes e Scripts Reutilizáveis - PraFrota FE

Este documento detalha os componentes e ferramentas automatizadas do workspace Angular.

## 🧩 Componentes de Domínio (BaseDomain)
Estes componentes são o coração do ERP PraFrota.

### 1. BaseDomainComponent (`shared/components/base-domain`)
- **O que é**: Classe base abstrata para todas as telas de gestão.
- **O que faz**: Automatiza a integração entre a tabela de dados, o sistema de abas e os modais de edição.
- **Estrutura**:
    - **getDomainConfig()**: Método obrigatório para configurar colunas e títulos.
    - **HeaderActions**: Gerencia botões de exportação e novo registro.
- **Processo**:
    1. Define as colunas do domínio.
    2. Conecta ao service correspondente.
    3. Renderiza a `app-tab-system` automaticamente.

### 2. TabSystemComponent (`shared/components/tab-system`)
- **O que é**: Orquestrador de visualização em abas.
- **O que faz**: Permite abrir múltiplos registros ou visualizações (Lista, Edição, Dashboard) sem trocar de página.
- **Processo**: Gerencia o estado de qual aba está ativa e evita perda de dados em formulários não salvos.

---

## 🏗️ Estrutura de Domínio ERP (Referência: Drivers)
Localizado em `projects/idt_app/src/app/domain/drivers/`.

### 1. DriversComponent
- **Descrição**: O "Template Perfeito" do sistema. Serve de modelo para qualquer nova tela.
- **Comentários**: Exemplo completo de como tratar máscaras de telefone, datas e status.
- **Processo**: Registra o formulário no `TabFormConfigService` e estende as funções globais do `BaseDomain`.

---

## 📜 Scripts de Automação (Altamente Reutilizáveis)
Localizados na pasta `scripts/`.

### 1. `create-domain-v2.js`
- **Descrição**: Script JS poderoso para gerar novos módulos de domínio automaticamente.
- **O que faz**: Cria arquivos de interface, service, component e HTML/SCSS baseados em um nome de entidade.
- **Processo**:
    1. Solicita o nome do domínio.
    2. Copia os templates da pasta de referência.
    3. Realiza substituição de strings globalmente para alinhar os nomes das classes e variáveis.

### 2. `test-api-analyzer.js`
- **Descrição**: Analisador de endpoints.
- **O que faz**: Verifica se as rotas da API estão disponíveis e se seguem o contrato de dados esperado pelo frontend.
- **Processo**: Realiza chamadas HTTP de teste e valida as respostas contra as interfaces TypeScript.

---

## ❓ Detalhes Específicos
- **Sleep no test-api**: Usado para simular latência de rede em testes de UX (verificar se spinners/loaders aparecem corretamente).
- **.nvmrc**: Arquivo que instrui o sistema a usar o Node.js v20.x, garantindo compatibilidade entre os desenvolvedores.
- **Onde define as telas?**: As telas são definidas primarily no `app.routes.ts` (roteamento) e os menus de navegação em componentes de layout (Sidebar/Header).
