# 🤖 INSTRUÇÕES ESPECÍFICAS PARA IA - PRAFROTA

## 🎯 OBJETIVO
Fornecer contexto específico e detalhado para que a IA entenda perfeitamente o projeto PraFrota e possa oferecer sugestões precisas e alinhadas com os padrões estabelecidos.

## 📋 CONTEXTO TÉCNICO ESSENCIAL

### Arquitetura Atual
- **Framework**: Angular 19.2.x com Standalone Components
- **Linguagem**: TypeScript 5.5.x (configuração strict)
- **Node.js**: Versão 20.x (definida em .nvmrc)
- **Padrão Principal**: BaseDomainComponent para domínios ERP
- **Sistema de Estado**: Observables + RxJS (não usar NgRx)

### Template de Referência OBRIGATÓRIO
**Arquivo**: `projects/idt_app/src/app/domain/drivers/drivers.component.ts`

Este é o MODELO PERFEITO que deve ser seguido para novos domínios. Contém:
- ✅ Padrão BaseDomainComponent otimizado
- ✅ Configuração de colunas completa
- ✅ Sistema de side card
- ✅ Formatação de dados (telefone, datas)
- ✅ Tratamento de erros null-safe

### Estrutura de Pastas Obrigatória
```
projects/idt_app/src/app/
├── domain/               # Domínios de negócio
│   ├── vehicles/        # Gestão de veículos
│   ├── drivers/         # Gestão de motoristas (TEMPLATE PERFEITO)
│   ├── routes/          # Gestão de rotas
│   └── finances/        # Gestão financeira
├── shared/              # Componentes e serviços compartilhados
│   ├── components/      # Componentes reutilizáveis
│   ├── services/        # Serviços globais
│   └── interfaces/      # Interfaces TypeScript
└── core/               # Configurações centrais
```

## 🛠️ PADRÕES DE DESENVOLVIMENTO

### 1. Componentes Standalone (OBRIGATÓRIO)
```typescript
@Component({
  selector: 'app-exemplo',
  standalone: true,
  imports: [CommonModule, ReactiveFormsModule],
  templateUrl: './exemplo.component.html',
  styleUrl: './exemplo.component.scss'
})
```

### 2. Services com Observable
```typescript
@Injectable({
  providedIn: 'root'
})
export class ExemploService {
  constructor(private http: HttpClient) {}
  
  getData(): Observable<DataType[]> {
    return this.http.get<DataType[]>('/api/endpoint');
  }
}
```

### 3. Interfaces TypeScript
```typescript
export interface ExemploData {
  id: number;
  name: string;
  status: 'active' | 'inactive';
  createdAt: Date;
}
```

## 🎨 COMPONENTES COMPARTILHADOS PRINCIPAIS

### DataTableComponent
**Localização**: `shared/components/data-table/`
- Tabela reutilizável com paginação, filtros e ordenação
- Suporte a server-side e client-side pagination
- Sistema de colunas configurável
- Ações customizáveis por linha

### TabSystemComponent  
**Localização**: `shared/components/tab-system/`
- Sistema de abas para formulários
- Integração com BaseDomainComponent
- Suporte a sub-abas dinâmicas
- Prevenção de perda de dados

### BaseDomainComponent
**Localização**: `shared/components/base-domain/`
- Classe base para domínios ERP
- Configuração mínima via getDomainConfig()
- Integração automática com TabSystem e DataTable

## 🔗 APIS E INTEGRAÇÕES

### PraFrota Backend API
- **URL Base**: `https://prafrota-be-bff-tenant-api.grupopra.tech`
- **Autenticação**: Bearer Token JWT
- **Padrão de Response**:
```typescript
interface ApiResponse<T> {
  data: T[];
  totalCount: number;
  pageCount: number;
  currentPage: number;
}
```

### Proxy Configuration
**Arquivo**: `proxy.conf.json`
- ViaCEP: `/api/ws/*` → `https://viacep.com.br`
- Backend: `/api/*` → PraFrota API

## 📝 REGRAS ESPECÍFICAS PARA SUGESTÕES

### SEMPRE Fazer:
1. **Verificar** se existe componente similar em `shared/components/`
2. **Usar** BaseDomainComponent para novos domínios
3. **Seguir** o padrão do `drivers.component.ts`
4. **Incluir** tratamento de erro null-safe
5. **Adicionar** comentários em português
6. **Usar** tipagem TypeScript forte
7. **Importar** apenas módulos necessários

### NUNCA Fazer:
1. ❌ Componentes sem standalone: true
2. ❌ Services sem Observable
3. ❌ Template-driven forms 
4. ❌ Console.log em código de produção
5. ❌ Imports de módulos inteiros desnecessários
6. ❌ Lógica complexa em templates
7. ❌ Código sem tratamento de erro
8. ❌ **COMANDOS DE SERVIDOR: `ng serve`, `npm start` - JÁ ESTÁ RODANDO VIA DEBUG!**

### ✅ SEMPRE Pode Executar Livremente:
1. ✅ **`ng build`** - Todas as configurações (production, development)
2. ✅ **`ng test`** - Execução de testes unitários
3. ✅ **`ng generate`** - Criação de componentes, services, etc.
4. ✅ **`npm install`** - Instalação de dependências
5. ✅ **Scripts de build** - Qualquer script que não seja servidor

### Estrutura de Resposta Ideal:
```markdown
## 📋 Solução:

### 1. Interface TypeScript
[código da interface]

### 2. Service
[código do service]

### 3. Component  
[código do component]

### 4. Template (se necessário)
[código do template]

## 💡 Explicação:
[explicação clara do que foi implementado]

## 🔧 Como usar:
[instruções de uso]
```

## 🎯 FOCO DE DESENVOLVIMENTO ATUAL

### Domínios Principais:
1. **Vehicles** - Gestão completa de frota
2. **Drivers** - Cadastro e gestão de motoristas (TEMPLATE PERFEITO)
3. **Routes** - Integração com Mercado Live
4. **Finances** - Contas a pagar e receber

### Componentes Prioritários:
1. **DataTable** - Performance e UX
2. **TabSystem** - Formulários complexos  
3. **AddressForm** - Integração ViaCEP
4. **BaseDomain** - Padrão ERP escalável

## 🚨 CONFIGURAÇÃO DE DESENVOLVIMENTO CRÍTICA

### ⚠️ SERVIDOR DE DESENVOLVIMENTO
**IMPORTANTE: NUNCA EXECUTE COMANDOS DE SERVIDOR!**

- ✅ **Servidor JÁ RODANDO**: via launch.json em modo debug
- ✅ **Porta**: localhost:4200 (sempre disponível)
- ✅ **Hot Reload**: Configurado automaticamente
- ✅ **Debug Mode**: Ativo por padrão
- ❌ **Não execute**: `ng serve`, `npm start`, ou similares

**Razão**: O desenvolvedor mantém o servidor rodando em modo debug configurado no VS Code. Executar comandos adicionais pode causar conflitos de porta ou interromper o debug.

### ✅ COMANDOS PERMITIDOS (Execute sem pedir permissão):
- **`ng build`** - Todas as configurações (production, development)
- **`ng test`** - Execução de testes
- **`ng generate`** - Geração de componentes, services, etc.
- **`npm install`** - Instalação de dependências
- **`npm run`** - Scripts do package.json (exceto servers)

## 📚 DOCUMENTAÇÃO DE REFERÊNCIA

### Arquivos Importantes:
- `.mcp/config.json` - Configuração do projeto
- `.mcp/README.md` - Guia de uso
- `projects/idt_app/docs/general/CURSOR.md` - Documentação específica
- `projects/idt_app/src/app/domain/drivers/` - TEMPLATE PERFEITO

### Exemplos de Código:
- **Melhor Component**: `drivers.component.ts`
- **Melhor Service**: `drivers.service.ts`
- **Melhor Interface**: `driver.interface.ts`

---

**IMPORTANTE**: Esta documentação deve ser o guia principal para todas as sugestões e códigos gerados pela IA. Sempre priorizar qualidade, padrões do projeto e reutilização de código existente. 