|
|
||
|---|---|---|
| .. | ||
| FIXES_DOMAIN_GENERATION.md | ||
| README.md | ||
| analyze-branch.sh | ||
| create-domain-express.js | ||
| create-domain-v2-api-analyzer.js | ||
| create-domain-v2-generators.js | ||
| create-domain-v2.js | ||
| create-domain.js | ||
| git-commit.js | ||
| pr-tools.sh | ||
| setup-arch.sh | ||
| setup-linux-universal.sh | ||
| setup-rhel.sh | ||
| setup-ubuntu.sh | ||
| test-api-analyzer.js | ||
| test-create-domain-v2.js | ||
| test-strict-mode.js | ||
README.md
🛠️ 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
# 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
# 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:
@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
- Verificação - Pré-requisitos validados
- Coleta - Informações via questionário
- Confirmação - Revisão da configuração
- Branch - Criação automática da branch
feature/domain-[nome] - Geração - Criação automática dos arquivos
- 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
🌿 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
⚠️ 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
<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
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"
git checkout main
git pull origin main
Erro: "Email deve ter domínio @grupopralog.com.br"
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ãocontracts)
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
# Verificar imports
npm run build
# Verificar sintaxe
ng lint
📚 Documentação Relacionada
🎉 Próximos Passos
Após executar o script:
- ✅ Compilar -
ng build - ✅ Testar -
ng serve - ✅ Customizar - Ajustar campos específicos
- ✅ Documentar - Atualizar README do domínio
- ✅ 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:
# 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
# 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
# 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
# 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
# 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:
================================================================
🚀 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
# 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
# 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
- Execute análise antes de criar PR
- Use checklist para auto-revisão
- Verifique segurança em branches sensíveis
- Analise performance em features críticas
🎯 Para Code Reviewers
- Execute análise completa primeiro
- Foque nos pontos destacados pelas ferramentas
- Use output como base para comentários
- Verifique checklists automaticamente
🎯 Para Tech Leads
- Integre ao processo de CI/CD
- Estabeleça thresholds de complexidade
- Monitor padrões de qualidade
- Use para treinamento de equipe
🚀 FUNCIONALIDADES AVANÇADAS
🔄 Comparação de Branches
# 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
# 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
# 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"
# Verificar se branch existe
git branch -a | grep nome-da-branch
# Fazer fetch das branches remotas
git fetch origin
🔴 "Permission denied"
# Dar permissão de execução
chmod +x scripts/*.sh
🔴 "Not a git repository"
# 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! 🚀