testes/Modulos Angular/scripts/README.md

660 lines
19 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🛠️ Scripts de Desenvolvimento - Sistema PraFrota
## 🚀 create-domain.js - Criador Interativo de Domínios
### 📋 Descrição
Script interativo que guia novos desenvolvedores na criação de domínios completos no sistema PraFrota. Implementa o **framework de geração automática de telas** com todas as funcionalidades necessárias.
### ✅ Pré-requisitos
- Node.js instalado
- Git configurado com email @grupopralog.com.br
- Branch main atualizada localmente
### 🎯 Funcionalidades
-**Verificação automática** de pré-requisitos
-**Questionário interativo** para configuração
-**Geração automática** de toda estrutura
-**Validação** de dados de entrada
-**Confirmação** antes da criação
### 🔧 Como Usar
#### 1. Preparação
```bash
# Atualizar branch main
git checkout main
git pull origin main
# Configurar Git (se necessário)
git config --global user.name "Seu Nome"
git config --global user.email "seu.email@grupopralog.com.br"
```
#### 2. Executar Script
```bash
# Executar o criador de domínios
node scripts/create-domain.js
```
#### 3. Seguir o Questionário
O script fará perguntas sobre:
- 📝 Nome do domínio
- 🧭 Posição no menu lateral
- 📸 Sub-aba de fotos
- 🃏 Side card
- 🎨 Componentes especializados
- 🔗 Campos remote-select
### 📁 Estrutura Gerada
```
domain/[nome-do-dominio]/
├── [nome].component.ts # Componente principal
├── [nome].component.html # Template HTML
├── [nome].component.scss # Estilos CSS
├── [nome].service.ts # Service para API
├── [nome].interface.ts # Interface TypeScript
└── README.md # Documentação específica
```
### 🎨 Componentes Incluídos Automaticamente
#### **Básicos**
- ✅ BaseDomainComponent (herança)
- ✅ Registry Pattern (auto-registro)
- ✅ Data Table (listagem)
- ✅ Tab System (formulários)
- ✅ Validação (campos obrigatórios)
#### **Especializados** (conforme seleção)
- 🛣️ kilometer-input (quilometragem)
- 🎨 color-input (seletor de cores)
- 📊 status (badges coloridos)
- 🔍 remote-select (busca em APIs)
- 📸 send-image (upload de fotos)
### 📊 Exemplo de Uso
#### **Input do Usuário:**
```
Nome do domínio: contracts
Posição no menu: finances
Sub-aba de fotos: sim
Side Card: sim
Campo quilometragem: não
Campo cor: não
Campo status: sim
Campos remote-select: sim (vehicles, drivers)
```
#### **Resultado Gerado:**
```typescript
@Component({
selector: 'app-contracts',
standalone: true,
imports: [CommonModule, TabSystemComponent],
templateUrl: './contracts.component.html',
styleUrl: './contracts.component.scss'
})
export class ContractsComponent extends BaseDomainComponent<Contract> {
// Configuração automática baseada nas respostas
// Registry pattern implementado
// Remote-selects para vehicles e drivers
// Sub-aba de fotos configurada
// Side card com resumo
// Status com badges coloridos
}
```
### 🔄 Fluxo Completo
1. **Verificação** - Pré-requisitos validados
2. **Coleta** - Informações via questionário
3. **Confirmação** - Revisão da configuração
4. **Branch** - Criação automática da branch `feature/domain-[nome]`
5. **Geração** - Criação automática dos arquivos
6. **Finalização** - Estrutura pronta para uso
### 🌿 Criação Automática de Branch
#### **Funcionalidade Implementada**
-**Nome automático**: `feature/domain-[nome-dominio]`
-**Verificação**: Se branch já existe, pergunta se quer usar
-**Checkout automático**: Muda para a nova branch
-**Descrição automática**: Funcionalidades documentadas
#### **Exemplo de Saída**
```bash
🌿 CRIAÇÃO DE BRANCH
Criando nova branch: feature/domain-products
✅ Branch criada e ativada: feature/domain-products
📝 Descrição da branch: Implementação do domínio Produtos
🎯 Funcionalidades: CRUD básico, upload de fotos, painel lateral, campo quilometragem
```
#### **Tratamento de Branch Existente**
```bash
⚠️ Branch 'feature/domain-products' já existe
🔄 Deseja mudar para a branch existente? (s/n): s
✅ Mudado para branch existente: feature/domain-products
```
### 🚨 Validações Implementadas
#### **Git**
- Branch deve ser `main`
- Email deve ter domínio `@grupopralog.com.br`
- Nome de usuário configurado
#### **Domínio**
- Nome singular, minúsculo, sem espaços
- Não pode conflitar com domínios existentes
#### **Configuração**
- Opções válidas para menu lateral
- Componentes especializados válidos
- APIs disponíveis para remote-select
### 🎯 Vantagens
#### **Para Novos Desenvolvedores**
- 🎓 **Onboarding fluido** e guiado
- 🛡️ **Segurança** com validações
- 📚 **Aprendizado** do padrão do projeto
-**Produtividade** imediata
#### **Para o Projeto**
- 🏗️ **Consistência** arquitetural
- 📋 **Padrões** unificados
- 🔧 **Manutenibilidade** alta
- 🚀 **Escalabilidade** infinita
### 🔧 CORREÇÕES IMPLEMENTADAS
#### **Problemas Corrigidos (Versão Atual)**
-**Template HTML** - Estrutura correta com eventos conectados
-**SideCard** - Configuração completa com statusConfig
-**Sub-abas** - Apenas as solicitadas são criadas
-**Campos** - Posicionados dentro das sub-abas (estrutura nova)
-**API Swagger** - Consulta obrigatória antes da geração
-**Validação** - Campos baseados na documentação real
#### **Estrutura HTML Correta**
```html
<div class="domain-container">
<div class="main-content">
<app-tab-system
#tabSystem
[config]="tabConfig"
[events]="tabEvents"
(tableEvent)="onTableEvent($event)">
</app-tab-system>
</div>
</div>
```
#### **Estrutura de Campos Correta**
```typescript
getFormConfig(): TabFormConfig {
return {
fields: [], // ✅ VAZIO - campos nas sub-abas
subTabs: [
{
id: 'dados',
fields: [ // ✅ Campos DENTRO da sub-aba
{ key: 'name', label: 'Nome', type: 'text' }
]
}
]
};
}
```
### 🆘 Troubleshooting
#### **Erro: "Branch deve ser main"**
```bash
git checkout main
git pull origin main
```
#### **Erro: "Email deve ter domínio @grupopralog.com.br"**
```bash
git config --global user.email "seu.email@grupopralog.com.br"
```
#### **Erro: "Nome deve ser singular, minúsculo"**
- Use apenas letras minúsculas
- Sem espaços ou caracteres especiais
- Singular (ex: `contract`, não `contracts`)
#### **Erro: "Botão editar não funciona"**
- Verificar se template HTML tem eventos conectados
- Confirmar presença do `(tableEvent)="onTableEvent($event)"`
#### **Erro: "SideCard não aparece"**
- Verificar configuração completa do sideCard
- Confirmar presença do statusConfig
#### **Erro de compilação após criação**
```bash
# Verificar imports
npm run build
# Verificar sintaxe
ng lint
```
### 📚 Documentação Relacionada
- 📖 [Guia de Onboarding](../projects/idt_app/docs/ONBOARDING_NEW_DOMAIN.md)
- 🎯 [Padrões do Projeto](../projects/idt_app/docs/general/CURSOR.md)
- 🔧 [Configuração MCP](../.mcp/config.json)
- 🏗️ [Arquitetura](../projects/idt_app/docs/architecture/)
### 🎉 Próximos Passos
Após executar o script:
1.**Compilar** - `ng build`
2.**Testar** - `ng serve`
3.**Customizar** - Ajustar campos específicos
4.**Documentar** - Atualizar README do domínio
5.**Commit** - Salvar mudanças
---
**Criado com ❤️ para facilitar o desenvolvimento no Sistema PraFrota! 🚀**
# 🔍 Ferramentas de Análise de Branches e PRs
> **Scripts automatizados para análise completa de branches, PRs e code review**
>
> **Autor**: Jonas Santos
> **Data**: Janeiro 2025
> **Versão**: 1.0
---
## 📋 **VISÃO GERAL**
Este conjunto de ferramentas foi criado para **automatizar e padronizar** a análise de branches e Pull Requests, proporcionando uma **revisão mais eficiente e completa**.
### **🎯 Objetivos:**
-**Acelerar code reviews**
-**Padronizar análises**
-**Detectar problemas automaticamente**
-**Melhorar qualidade do código**
-**Reduzir erros em produção**
---
## 🛠️ **FERRAMENTAS DISPONÍVEIS**
### **1. 🔍 `analyze-branch.sh` - Análise Completa de Branch**
**Análise abrangente de qualquer branch com informações detalhadas para code review.**
#### **📊 O que analisa:**
- **Informações básicas**: commits, autor, data, mensagens
- **Arquivos modificados**: lista completa e estatísticas
- **Tipos de arquivo**: distribuição por extensão
- **Complexidade**: linhas adicionadas/removidas, classificação
- **Conflitos**: verificação automática de merge conflicts
- **Testes**: cobertura e arquivos de teste afetados
- **Sugestões**: checklist personalizado para revisão
#### **🚀 Como usar:**
```bash
# Análise básica
./scripts/analyze-branch.sh feature/checkbox-vehicle
# Comparar com branch específica
./scripts/analyze-branch.sh feature/new-feature -b develop
# Ver ajuda
./scripts/analyze-branch.sh --help
```
### **2. 🛠️ `pr-tools.sh` - Ferramentas Avançadas de PR**
**Análises especializadas focadas em segurança, performance e qualidade.**
#### **🔧 Comandos disponíveis:**
| Comando | Descrição | Exemplo |
|---------|-----------|---------|
| `security` | Análise de segurança | `./scripts/pr-tools.sh security feature/login` |
| `performance` | Análise de performance | `./scripts/pr-tools.sh perf feature/optimization` |
| `dependencies` | Análise de dependências | `./scripts/pr-tools.sh deps feature/upgrade` |
| `checklist` | Checklist completo de PR | `./scripts/pr-tools.sh check feature/new-api` |
| `compare` | Comparar duas branches | `./scripts/pr-tools.sh comp feature/a feature/b` |
| `commits` | Análise de mensagens | `./scripts/pr-tools.sh msg feature/refactor` |
| `full` | Análise completa | `./scripts/pr-tools.sh full feature/checkbox-vehicle` |
---
## 📈 **EXEMPLOS PRÁTICOS**
### **🎯 Cenário 1: Análise Rápida de PR**
```bash
# Análise completa de uma branch
./scripts/analyze-branch.sh feature/checkbox-vehicle
# Output: Relatório detalhado com todas as informações
```
### **🎯 Cenário 2: Verificação de Segurança**
```bash
# Verificar problemas de segurança
./scripts/pr-tools.sh security feature/user-authentication
# Detecta: senhas hardcoded, API keys expostas, URLs produção
```
### **🎯 Cenário 3: Análise de Performance**
```bash
# Verificar impacto na performance
./scripts/pr-tools.sh performance feature/data-optimization
# Detecta: loops aninhados, DOM operations, memory leaks
```
### **🎯 Cenário 4: Checklist de Revisão**
```bash
# Gerar checklist personalizado
./scripts/pr-tools.sh checklist feature/new-component
# Output: Checklist completo baseado nas mudanças detectadas
```
---
## 🔍 **DETALHAMENTO DAS ANÁLISES**
### **📊 Análise de Informações Básicas**
-**Último commit**: hash, autor, data, mensagem
-**Status da branch**: commits à frente/atrás da base
-**Alertas**: branch desatualizada, necessidade de rebase
### **📁 Análise de Arquivos**
-**Lista completa**: todos os arquivos modificados
-**Estatísticas**: linhas adicionadas/removidas por arquivo
-**Distribuição**: contagem por tipo de arquivo
-**Arquivos críticos**: configuração, dependências, segurança
### **⚡ Análise de Complexidade**
-**Total de mudanças**: linhas modificadas
-**Classificação**: BAIXA/MÉDIA/ALTA/MUITO ALTA
-**Top 5 arquivos**: com mais modificações
-**Sugestões**: baseadas na complexidade
### **🔀 Verificação de Conflitos**
-**Merge dry-run**: teste automático de conflitos
-**Arquivos conflitantes**: lista detalhada
-**Status**: merge limpo ou conflitos detectados
### **🧪 Análise de Testes**
-**Testes modificados**: arquivos .test/.spec alterados
-**Cobertura**: arquivos sem testes correspondentes
-**Alertas**: código novo sem testes
### **🔒 Análise de Segurança**
-**Credenciais hardcoded**: senhas, API keys, secrets
-**URLs de produção**: hardcoded no código
-**Console.log**: debug code em produção
-**Padrões perigosos**: regex patterns de segurança
### **⚡ Análise de Performance**
-**Loops aninhados**: estruturas custosas
-**DOM operations**: querySelector, getElementById
-**Memory leaks**: subscribe sem unsubscribe
-**Imports pesados**: import * desnecessários
### **📦 Análise de Dependências**
-**Mudanças**: package.json modificações
-**Dependências novas**: adicionadas/removidas
-**Dependências perigosas**: eval, fs, child_process
-**Compatibilidade**: verificação de versões
---
## 🎨 **OUTPUT VISUAL**
### **🌈 Cores e Emojis**
- 🟢 **Verde**: Informações positivas, tudo OK
- 🟡 **Amarelo**: Avisos, atenção necessária
- 🔴 **Vermelho**: Problemas críticos, ação imediata
- 🔵 **Azul**: Informações neutras, contexto
- 🟣 **Roxo**: Comandos, instruções
### **📋 Exemplo de Output:**
```bash
================================================================
🚀 BRANCH ANALYZER - Análise Completa de Branch/PR
================================================================
INFORMAÇÕES BÁSICAS
--------------------------------------------------
✅ Branch: feature/checkbox-vehicle
✅ Último commit: 220b846
✅ Autor: PraDev001
✅ Data: 23/07/2025 11:51
✅ Mensagem: feat(vehicles): implement vehicle accessories tab with checkboxes
📊 ANÁLISE DE COMPLEXIDADE
--------------------------------------------------
📊 Linhas adicionadas: +387
📊 Linhas removidas: -13
📊 Total de mudanças: 400
⚠️ Complexidade: ALTA (200-500 linhas)
🔒 ANÁLISE DE SEGURANÇA
--------------------------------------------------
🔍 Verificando padrões sensíveis...
✅ Nenhum problema crítico de segurança detectado
```
---
## 📋 **CHECKLISTS AUTOMÁTICOS**
### **🔍 Checklist de Revisão de Código**
- [ ] Código segue padrões do projeto
- [ ] Nomenclatura clara e consistente
- [ ] Lógica de negócio está correta
- [ ] Tratamento de erros adequado
- [ ] Sem código comentado/debug
- [ ] Imports organizados
### **🧪 Checklist de Testes**
- [ ] Testes unitários criados/atualizados
- [ ] Todos os testes passando
- [ ] Cobertura de código adequada
- [ ] Testes de integração (se necessário)
### **🚀 Checklist de Funcionalidade**
- [ ] Feature funciona conforme especificado
- [ ] Casos edge testados
- [ ] Responsividade verificada
- [ ] Performance adequada
- [ ] Acessibilidade considerada
### **🔒 Checklist de Segurança**
- [ ] Sem credenciais hardcoded
- [ ] Validação de inputs
- [ ] Autorização/autenticação OK
- [ ] Sem vazamentos de dados sensíveis
---
## 🔧 **CONFIGURAÇÃO E INSTALAÇÃO**
### **📋 Pré-requisitos**
-**Git** instalado e configurado
-**Bash** shell (Linux/macOS/WSL)
-**Repositório Git** inicializado
### **⚙️ Instalação**
```bash
# 1. Clonar/baixar os scripts
git clone <repo>
# 2. Tornar executáveis
chmod +x scripts/analyze-branch.sh
chmod +x scripts/pr-tools.sh
# 3. Testar
./scripts/analyze-branch.sh --help
./scripts/pr-tools.sh --help
```
### **🔗 Integração com Workflow**
```bash
# Adicionar ao .bashrc/.zshrc para uso global
export PATH="$PATH:/caminho/para/scripts"
# Criar aliases úteis
alias analyze="./scripts/analyze-branch.sh"
alias prtools="./scripts/pr-tools.sh"
```
---
## 💡 **DICAS E MELHORES PRÁTICAS**
### **🎯 Para Desenvolvedores**
1. **Execute análise antes de criar PR**
2. **Use checklist para auto-revisão**
3. **Verifique segurança em branches sensíveis**
4. **Analise performance em features críticas**
### **🎯 Para Code Reviewers**
1. **Execute análise completa primeiro**
2. **Foque nos pontos destacados pelas ferramentas**
3. **Use output como base para comentários**
4. **Verifique checklists automaticamente**
### **🎯 Para Tech Leads**
1. **Integre ao processo de CI/CD**
2. **Estabeleça thresholds de complexidade**
3. **Monitor padrões de qualidade**
4. **Use para treinamento de equipe**
---
## 🚀 **FUNCIONALIDADES AVANÇADAS**
### **🔄 Comparação de Branches**
```bash
# Comparar duas features
./scripts/pr-tools.sh compare feature/login feature/auth
# Ver diferenças entre versões
./scripts/pr-tools.sh compare v1.0 v1.1
```
### **💬 Análise de Commit Messages**
```bash
# Verificar se seguem Conventional Commits
./scripts/pr-tools.sh commits feature/new-api
# Output:
# ✅ feat(api): add user authentication
# ⚠️ fixed bug in login (não segue padrão)
```
### **📊 Relatórios Personalizados**
```bash
# Análise focada em segurança
./scripts/pr-tools.sh security feature/payment
# Análise focada em performance
./scripts/pr-tools.sh performance feature/dashboard
```
---
## 🔮 **FUTURAS MELHORIAS**
### **🎯 Em Desenvolvimento**
- [ ] **Integração com GitHub API** - comentários automáticos
- [ ] **Métricas de qualidade** - scores numéricos
- [ ] **Integração CI/CD** - Jenkins, GitHub Actions
- [ ] **Dashboard web** - visualização gráfica
- [ ] **Alertas Slack** - notificações automáticas
- [ ] **Histórico de análises** - banco de dados
- [ ] **Machine Learning** - detecção inteligente de bugs
### **🎯 Configurações Futuras**
- [ ] **Configuração por projeto** - rules customizadas
- [ ] **Thresholds configuráveis** - limits por equipe
- [ ] **Templates de checklist** - por tipo de feature
- [ ] **Integração com Jira** - sync com tasks
---
## 🆘 **TROUBLESHOOTING**
### **❓ Problemas Comuns**
#### **🔴 "Branch não encontrada"**
```bash
# Verificar se branch existe
git branch -a | grep nome-da-branch
# Fazer fetch das branches remotas
git fetch origin
```
#### **🔴 "Permission denied"**
```bash
# Dar permissão de execução
chmod +x scripts/*.sh
```
#### **🔴 "Not a git repository"**
```bash
# Verificar se está em repositório Git
git status
# Inicializar se necessário
git init
```
### **💡 Tips de Performance**
- **Use com branches pequenas** para análise mais rápida
- **Fetch regular** para manter referências atualizadas
- **Cleanup de branches** antigas para evitar confusão
---
## 📞 **SUPORTE E CONTRIBUIÇÃO**
### **🐛 Reportar Bugs**
- Criar issue no repositório
- Incluir output completo do comando
- Especificar OS e versão do Git
### **💡 Sugestões de Melhorias**
- Fork do repositório
- Implementar funcionalidade
- Criar Pull Request
### **📚 Documentação**
- Exemplos de uso no README
- Comentários no código
- Wiki com casos de uso
---
## 📄 **LICENÇA**
```
MIT License - Livre para uso, modificação e distribuição
Copyright (c) 2025 Jonas Santos
```
---
**🎉 Essas ferramentas transformaram a forma como analisamos PRs no projeto PraFrota! Use, adapte e contribua para melhorar ainda mais! 🚀**