# 🛠️ 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 { // 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
``` #### **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 # 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! 🚀**