testes/Modulos Angular/scripts
daivid.alves b5507a6002 Initial commit on frontend_React 2026-01-12 21:23:18 -03:00
..
FIXES_DOMAIN_GENERATION.md Initial commit on frontend_React 2026-01-12 21:23:18 -03:00
README.md Initial commit on frontend_React 2026-01-12 21:23:18 -03:00
analyze-branch.sh Initial commit on frontend_React 2026-01-12 21:23:18 -03:00
create-domain-express.js Initial commit on frontend_React 2026-01-12 21:23:18 -03:00
create-domain-v2-api-analyzer.js Initial commit on frontend_React 2026-01-12 21:23:18 -03:00
create-domain-v2-generators.js Initial commit on frontend_React 2026-01-12 21:23:18 -03:00
create-domain-v2.js Initial commit on frontend_React 2026-01-12 21:23:18 -03:00
create-domain.js Initial commit on frontend_React 2026-01-12 21:23:18 -03:00
git-commit.js Initial commit on frontend_React 2026-01-12 21:23:18 -03:00
pr-tools.sh Initial commit on frontend_React 2026-01-12 21:23:18 -03:00
setup-arch.sh Initial commit on frontend_React 2026-01-12 21:23:18 -03:00
setup-linux-universal.sh Initial commit on frontend_React 2026-01-12 21:23:18 -03:00
setup-rhel.sh Initial commit on frontend_React 2026-01-12 21:23:18 -03:00
setup-ubuntu.sh Initial commit on frontend_React 2026-01-12 21:23:18 -03:00
test-api-analyzer.js Initial commit on frontend_React 2026-01-12 21:23:18 -03:00
test-create-domain-v2.js Initial commit on frontend_React 2026-01-12 21:23:18 -03:00
test-strict-mode.js Initial commit on frontend_React 2026-01-12 21:23:18 -03:00

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

  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

🌿 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ã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

# Verificar imports
npm run build

# Verificar sintaxe
ng lint

📚 Documentação Relacionada

🎉 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:

# 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

  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

# 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! 🚀