O TE-DF é uma plataforma robusta baseada em Google Apps Script, projetada para gerenciar o transporte escolar do Distrito Federal. O sistema integra Frontend moderno (HTML/JS), Backend escalável (GAS) e processamento avançado via Google Colab, oferecendo uma solução completa para gestão de rotas, frequências, eventos e relatórios inteligentes.
A arquitetura é modular e em camadas, garantindo separação de responsabilidades, testabilidade e facilidade de manutenção.
- Visão Geral
- Destaques
- Arquitetura do Sistema
- Estrutura do Projeto
- Schemas de Dados
- Referência de Funções
- Endpoints de API
- Módulos MVP
- Módulos Frontend
- Ferramentas de Análise
- Rotinas de Manutenção
- Configuração e Deploy
- Arquitetura Enterprise: Implementação em camadas (Frontend, API Gateway, Business Logic, Data Layer).
- Autenticação Robusta: Sistema de login seguro com controle de sessão, auditoria e múltiplos níveis de permissão (Monitor, Secretário, Admin).
- Módulos MVP: Funcionalidades de ponta a ponta para Rotas, Frequência, Alunos e Relatórios com IA.
- Integração Colab: Processamento pesado e análise de dados via scripts Python integrados (Polling/Automated).
- Design System: Interface moderna e responsiva com componentes reutilizáveis e feedback visual rico.
- Ferramentas de Desenvolvimento: Suite completa de scripts Python para análise de código, detecção de erros e geração de documentação.
- CRUD Robusto: Sistema genérico de operações CRUD com validação de schema e tratamento de erros.
- Smart Caching: Cache multi-layer (Memory, Script Cache, Properties) com invalidação inteligente.
- Circuit Breaker: Proteção contra falhas em cascata com degradação graciosa.
O sistema TE-DF é uma aplicação Google Apps Script com arquitetura em camadas:
┌─────────────────────────────────────┐
│ Frontend (HTML/JS) │
│ MVP Modules, Components, Styles │
├─────────────────────────────────────┤
│ API Gateway (GAS) │
│ Handlers, Router, Auth │
├─────────────────────────────────────┤
│ Business Logic (GAS) │
│ Services, Validators, Events │
├─────────────────────────────────────┤
│ Data Layer (GAS) │
│ Repository, DAL, SpreadsheetAPI │
├─────────────────────────────────────┤
│ Google Sheets (Storage) │
└─────────────────────────────────────┘
| Camada | Descrição | Arquivos Principais |
|---|---|---|
| Config | Configurações e constantes do sistema | 00_Config.gs, 00_SectionConfig.gs |
| Core | Utilitários, tratamento de erros, degradação | 03_Utils.gs, 04_ErrorHandler.gs |
| Services | Serviços de infraestrutura | 10_LoggerService.gs, 12_CacheService.gs |
| Data Layer | Camada de acesso a dados | 20_SpreadsheetProvider.gs, 24_Repository.gs |
| Auth | Autenticação, autorização e sessões | 44_SessionManager.gs, 46_EnterpriseAuthService.gs, 47_AuthService.gs |
| Business | Lógica de negócios e eventos | 55_EventBus.gs, 56_EventService.gs |
| Features | Funcionalidades específicas | 73_CRUD_Functions.gs, 73_ChatbotService.gs |
| MVP | Módulos MVP do sistema | MVP_CRUD.gs, MVP_Eventos.gs, MVP_RelatorioIA.gs |
| Testing | Framework de testes | 85_TestFramework.gs, 91_TestRunner.gs |
O sistema possui integração com Google Colab para processamento avançado:
Colab_Automated.py: Processador de Jobs com Ativação Remota via webhookColab_Polling_Processor.py: Processador de Jobs via Polling (SEM WEBHOOK)
d:\TE-DF-PP
├── .clasp.json # Configuração do CLASP
├── appsscript.json # Manifest do Apps Script
│
├── 00_*.gs # Configurações e constantes
├── 01_*.gs - 05_*.gs # Core e utilitários
├── 10_*.gs - 13_*.gs # Serviços de infraestrutura
├── 20_*.gs - 25_*.gs # Data Layer
├── 30_*.gs - 38_*.gs # Data Services
├── 40_*.gs - 48_*.gs # Validação e Autenticação
├── 50_*.gs - 68_*.gs # Business Logic e Infrastructure
├── 70_*.gs - 79_*.gs # Sistema e Features
├── 80_*.gs - 89_*.gs # Colab, Workflows e Testes
├── 90_*.gs - 99_*.gs # Testes e Correções
├── MVP_*.gs # Módulos MVP Backend
│
├── Component-*.html # Componentes HTML reutilizáveis
├── JS-*.html # Scripts frontend modularizados
├── Page-*.html # Páginas da aplicação
├── Styles-*.html # Estilos CSS
├── index.html # Página principal (monolítica)
│
├── Colab_Automated.py # Processador Colab com webhook
├── Colab_Polling_Processor.py # Processador Colab com polling
│
├── docs/ # Documentação gerada
│ ├── API_REFERENCE.md # Referência de APIs
│ ├── ARCHITECTURE.md # Arquitetura do sistema
│ ├── FUNCTIONS_REFERENCE.md # Referência detalhada de funções
│ └── MVP_GUIDE.md # Guia dos módulos MVP
│
├── tools/ # Ferramentas de análise (Python)
│ ├── analyze_codebase.py
│ ├── check_best_practices.py
│ ├── detect_dependencies.py
│ ├── find_duplicates.py
│ └── generate_docs.py
│
└── tests/ # Testes automatizados
O sistema utiliza schemas definidos em 43_SchemaMapping.gs para validação e estruturação dos dados:
| Schema | Planilha | Descrição |
|---|---|---|
Alunos |
Alunos | Cadastro de alunos do transporte escolar |
Usuarios |
Usuarios | Usuários do sistema (admin, monitores, secretários) |
Rotas |
Rotas | Rotas de transporte com dados de otimização |
Veiculos |
Veiculos | Frota de veículos |
Frequencia |
Frequencia | Registro de frequência (IDA/VOLTA) |
Eventos |
Eventos | Eventos do calendário escolar |
Incidentes |
Incidentes | Registro de ocorrências |
Pessoal |
Pessoal | Cadastro de motoristas e monitores |
Logs |
Logs | Logs do sistema |
Auditoria |
Auditoria | Trilha de auditoria |
Sessoes |
Sessoes | Sessões de usuários |
JobQueue |
JobQueue | Fila de jobs assíncronos |
FeatureFlags |
FeatureFlags | Flags de funcionalidades |
Arquivo: 47_AuthService.gs
Função principal de autenticação, chamada pelo frontend via APIClient.run('Auth_login', email, password).
WORKFLOW ÚNICO:
- Aceita Username OU Email
- Senha em texto plano
- Consulta aba Usuarios
// Exemplo de uso no frontend
APIClient.run('Auth_login', 'admin', 'minhasenha')
.then(result => {
if (result.success) {
console.log('Logado como:', result.user.username);
console.log('Token:', result.token);
}
});@param{string} emailOrUsername - Email ou username do usuário@param{string} password - Senha em texto plano@return{Object}{success, user, token, message}
Arquivo: 47_AuthService.gs
Autentica usuário - WORKFLOW ÚNICO E PADRONIZADO.
FLUXO:
- Recebe Username OU Email + Password (texto plano)
- Consulta aba "Usuarios" na planilha centralizadora
- Busca por Username OU Email (case-insensitive)
- Compara senha em texto plano diretamente
- Retorna objeto padronizado
// Exemplo
authenticateUser('admin', 'minhasenha');
authenticateUser('admin@email.com', 'minhasenha');
authenticateUser({ username: 'admin', password: 'minhasenha' });@param{Object|string} credentialsOrUsername - Username, Email ou{username, password}@param{string} password - Senha em texto plano@return{Object}{success, user, token, message}
Arquivo: 47_AuthGlobals.gs
Obtém o usuário atualmente logado. Wrapper global para EnterpriseAuthService.getCurrentUser().
const result = getCurrentUser();
if (result.success) {
console.log('Usuário:', result.user.username);
console.log('Role:', result.user.role);
console.log('Rota Vinculada:', result.user.idRotaVinculada);
}@return{Object}{ success, user: { id, username, email, role, permissions, idRotaVinculada }, message }
Arquivo: 47_AuthService.gs
Troca de senha do usuário.
@param{string} username - Username ou Email@param{string} currentPassword - Senha atual (texto plano)@param{string} newPassword - Nova senha (texto plano)@param{boolean} isFirstAccess - Se é primeiro acesso (ignora senha atual)@return{Object}{success, message}
Arquivo: 47_AuthService.gs
Finaliza a sessão do usuário.
@param{string} token - Token da sessão@return{Object}{success, message}
Arquivo: 44_SessionManager.gs
Cria nova sessão enterprise com recursos avançados.
ENTERPRISE FEATURES:
-
Session fingerprinting com device detection
-
Idle timeout com grace period
-
Concurrent session control com eviction policy
-
Token rotation automático
-
Activity tracking detalhado
-
@param{Object} user - Dados do usuário -
@param{Object} options - Opções adicionais -
@return{Object}{success, token, sessionId, refreshToken, expiresAt, expiresIn}
Arquivo: 44_SessionManager.gs
Valida se uma sessão é válida e ativa.
@param{string} token - Token da sessão@param{Object} options - Opções de validação@return{Object}{valid, session, user, newToken, error}
Arquivo: 44_SessionManager.gs
Renova sessão usando refresh token.
@param{string} refreshToken - Refresh token@return{Object}{success, token, refreshToken, expiresAt}
Arquivo: 44_SessionManager.gs
Revoga uma sessão específica.
@param{string} token - Token da sessão@return{Object}{succe 10BC8 ss, message}
Arquivo: 44_SessionManager.gs
Revoga todas as sessões de um usuário.
@param{string} email - Email do usuário@return{Object}{success, count, message}
Arquivo: 44_SessionManager.gs
Obtém sessões ativas de um usuário.
@param{string} email - Email do usuário@return{Object}{success, sessions}
Arquivo: 47_AuthService.gs
Verifica se o usuário atual possui a permissão solicitada.
@param{string} permission - Permissão a verificar@return{boolean} True se permitido
Arquivo: 47_AuthService.gs
Verifica se o usuário atual possui o role especificado.
@param{string|Array} roles - Role(s) a verificar@return{boolean} True se possui o role
Arquivo: 47_AuthGlobals.gs
Requer que o usuário esteja autenticado. Lança erro se não estiver.
@return{Object}{ success, user }ou erro
Arquivo: 47_AuthGlobals.gs
Requer que o usuário tenha um role específico.
@param{string|Array} roles - Role(s) permitido(s)@return{Object}{ success, user }ou erro
Arquivo: 47_AuthGlobals.gs
Requer que o usuário seja Administrador.
@return{Object}{ success, user }ou erro
Arquivo: 47_AuthGlobals.gs
Requer que o usuário seja Secretário (ou Admin).
@return{Object}{ success, user }ou erro
Arquivo: 47_AuthGlobals.gs
Funções helper para verificar roles específicos.
@return{boolean}
Arquivo: 02_GenericCRUD.gs
Cria registro genérico. Substitui funções duplicadas como createAluno, createRota, createVeiculo.
genericCreate('Alunos', {
Nome_Completo: 'João Silva',
RA_Aluno: '12345',
ID_Rota: 'ROTA-001'
});@param{string} entityType - Tipo da entidade (Alunos, Rotas, etc)@param{Object} data - Dados do registro@param{Object} options - Opções adicionais@return{Object} Resultado da operação
Arquivo: 02_GenericCRUD.gs
Lê registros genéricos com filtros.
// Ler todos
genericRead('Alunos');
// Com filtros
genericRead('Alunos', { ID_Rota: 'ROTA-001', Status_Ativo: 'Ativo' });
// Com paginação
genericRead('Alunos', {}, { limit: 50, offset: 0 });@param{string} entityType - Tipo da entidade@param{Object} filters - Filtros de busca@param{Object} options - Opções (limit, offset, orderBy)@return{Object} Resultado com dados
Arquivo: 02_GenericCRUD.gs
Atualiza registro genérico.
@param{string} entityType - Tipo da entidade@param{string} id - ID do registro@param{Object} data - Novos dados@param{Object} options - Opções adicionais@return{Object} Resultado da operação
Arquivo: 02_GenericCRUD.gs
Deleta registro genérico.
@param{string} entityType - Tipo da entidade@param{string} id - ID do registro@param{Object} options - Opções (softDelete, etc)@return{Object} Resultado da operação
Arquivo: 99_CRUD_Fix.gs
Handler CRUD robusto que usa os headers reais da planilha para evitar discrepâncias de schema.
@param{string} sheetName - Nome da planilha@param{string} action - Ação: 'create', 'read', 'update', 'delete'@param{string} id - ID do registro@param{Object} data - Dados do registro@param{Object} filters - Filtros para read@return{Object} Resultado da operação
Arquivo: 73_APIHelpers.gs
Obtém dados de uma planilha.
// Frontend
google.script.run.getData('Alunos');
APIService.getData('Alunos');@param{string} sheetName - Nome da planilha@param{Object} [filters] - Filtros opcionais@return{Object}{ success: boolean, data?: Array, error?: string }
Arquivo: 73_APIHelpers.gs
Obtém registro por ID.
@param{string} sheetName - Nome da planilha@param{string} id - ID do registro@return{Object}{ success: boolean, data?: Object, error?: string }
Arquivo: 73_APIHelpers.gs
Cria registro - Aceita objeto params do frontend.
@param{Object} params -{ sheetName, data }@return{Object}{ success, id, message }
Arquivo: 73_APIHelpers.gs
Atualiza registro.
@param{Object} params -{ sheetName, id, data }@return{Object}{ success, message }
Arquivo: 73_APIHelpers.gs
Deleta registro.
@param{Object} params -{ sheetName, id }@return{Object}{ success, message }
Arquivo: 73_APIHelpers.gs
Lê registros - Aceita objeto params do frontend.
// Exemplos
readRecords({ sheetName: 'Alunos' });
readRecords({ sheetName: 'Alunos', id: 'ALU-001' });
readRecords({ sheetName: 'Alunos', filters: { Status: 'Ativo' } });@param{Object|string} params -{ sheetName, id?, filters? }@return{Object}{ success, data, count }
Arquivo: 99_FixFrequenciaAlunos.gs
Obtém alunos de uma rota específica para registro de frequência. Versão aprimorada com validação robusta.
@param{string} idRota - ID da rota selecionada@return{Object}{success, alunos, total, debug}
Arquivo: 74_DataPopulatorService.gs
Obtém alunos de uma rota de forma robusta, tentando múltiplas estratégias de busca.
@param{string} idRota - ID da rota@return{Object}{success, alunos, total, idRota}
Arquivo: 99_Frontend_Backend_Bridge.gs
Salva frequência V2 (chamado por MVP-Integration.html).
@param{Object} dados - Dados da frequência@return{Object} Resultado da operação
Arquivo: 35_FrequenciaService.gs
Obtém resumo da frequência de um dia específico.
@param{string} [data] - Data no formato YYYY-MM-DD (default: hoje)@return{Object} Resumo da frequência
Arquivo: 74_DataPopulatorService.gs
Obtém dados para card de frequência do dia.
@param{string} [data] - Data no formato YYYY-MM-DD (default: hoje)@return{Object}{ success, card: {...} }
Arquivo: 99_Frontend_Backend_Bridge.gs
Obtém eventos com filtros opcionais.
@param{Object} filter - Filtros{ tipo: '...' }@return{Object}{success, data}
Arquivo: 99_Frontend_Backend_Bridge.gs
Cria um novo evento a partir do modal.
@param{Object} payload - Dados do formulário
Arquivo: MVP_Eventos.gs
Atualiza evento existente.
Arquivo: MVP_Eventos.gs
Remove evento.
Arquivo: MVP_Eventos.gs
Obtém estatísticas de eventos.
Arquivo: 73_RealTimeTracking.gs
Obtém rotas ativas.
@return{Object} Lista de rotas
Arquivo: 99_Frontend_Backend_Bridge.gs
Obtém rotas com dados enriquecidos (contagem de alunos, veículo, motorista).
@return{Object}{success, data: Array}
Arquivo: 99_Frontend_Backend_Bridge.gs
Obtém estatísticas gerais de rotas para dashboard/KPIs.
@return{Object}{success, stats: {...}}
Arquivo: 99_FrontendBackendIntegration.gs
Obtém análise completa de todas as rotas para o Mapa Avançado.
@return{Object}{ success, resumo, rotas, timestamp }
Arquivo: 99_FrontendBackendIntegration.gs
Obtém sugestões de otimização para uma rota específica.
@param{string} idRota - ID da rota@return{Object}{ success, sugestoes, analise }
Arquivo: 99_FrontendBackendIntegration.gs
Detecta rotas com sobreposição.
@return{Object}{ success, total, sobreposicoes }
Arquivo: 99_FrontendBackendIntegration.gs
Gera relatório de frequência com análise de IA (Gemini).
🔒 AUTORIZAÇÃO:
-
Relatórios com IA (Gemini): Apenas Administradores
-
Relatórios básicos: Secretários e Administradores
-
@param{string} mes - Mês no formato YYYY-MM -
@param{string} [idRota] - ID da rota (opcional) -
@return{Object} Relatório completo com análise IA
Arquivo: 99_FrontendBackendIntegration.gs
Obtém lista de meses com dados de frequência.
@return{Object}{ success, meses: ['2025-01', '2025-02', ...] }
Arquivo: 99_FrontendBackendIntegration.gs
Obtém dados para dashboard de relatórios.
@param{string} mes - Mês de referência@return{Object} Métricas resumidas
Arquivo: 99_FrontendBackendIntegration.gs
Verifica se Gemini API está configurada.
@return{Object}{ disponivel, mensagem }
Arquivo: 82_ColabProcessorManager.gs
Ativa o processador Colab remotamente com retry e timeout.
@param{Object} optionsoptions.interval- Intervalo entre verificações (segundos)options.auto_stop_minutes- Auto-stop após X minutosoptions.max_iterations- Máximo de iteraçõesoptions.maxRetries- Máximo de tentativas (padrão: 3)options.timeout- Timeout em segundos (padrão: 30)
@return{Object} Resultado da ativação
Arquivo: 82_ColabProcessorManager.gs
Desativa o processador Colab remotamente.
@return{Object} Resultado da desativação
Arquivo: 82_ColabProcessorManager.gs
Verifica o status do processador Colab.
@return{Object} Status detalhado
Arquivo: 82_ColabProcessorManager.gs
Ativa o processador automaticamente quando há jobs pendentes.
Arquivo: 82_ColabProcessorManager.gs
Conta jobs pendentes na fila. OTIMIZADO: Lê apenas a coluna de status.
@return{number} Quantidade de jobs pendentes
Arquivo: 83_ColabSmartScheduler.gs
Analisa jobs pendentes e calcula duração estimada baseado em:
-
Quantidade de jobs pendentes
-
Tipo de job (complexidade)
-
Histórico de processamento
-
@return{Object} Estatísticas dos jobs
Arquivo: 83_ColabPollingControl.gs
Enfileira job para processamento pelo Colab.
@param{string} jobType - Tipo do job@param{Object} payload - Dados do job@return{string} ID do job criado
Arquivo: 74_APIResponseHelpers.gs
Cria resposta de sucesso padronizada.
@param{*} data - Dados@param{string} [message] - Mensagem@return{Object} Resposta estruturada
Arquivo: 74_APIResponseHelpers.gs
Cria resposta de erro padronizada.
function deleteUser(id) {
try {
if (!id) {
return apiError('ID obrigatório', 'VALIDATION');
}
// ...
} catch (error) {
return apiError(error);
}
}@param{Error|string} error - Erro@param{string} [type] - Tipo do erro@param{Object} [details] - Detalhes@return{Object} Resposta estruturada
Arquivo: 74_APIResponseHelpers.gs
Cria resposta de não encontrado.
@param{string} resource - Recurso@param{string} id - ID@return{Object} Resposta estruturada
Arquivo: 02_SafeExecutor.gs
Executa função de forma segura com tratamento de erro padronizado.
@param{Function} fn - Função a executar@param{Object} optionsoptions.context- Contexto para logoptions.fallback- Valor de fallback em caso de errooptions.rethrow- Se deve relançar o errooptions.logError- Se deve logar o erro (default: true)
@return{Object}{ success: boolean, data: any, error: string }
Arquivo: 02_SafeExecutor.gs
Executa função com retry automático.
@param{Function} fn - Função a executar@param{Object} optionsoptions.maxRetries- Máximo de tentativas (default: 3)options.delay- Delay entre tentativas em ms (default: 1000)options.context- Contexto para log
@return{Object} Resultado
Arquivo: 99_SafeHelpers.gs
Verifica se uma função existe de forma segura (substitui eval).
@param{string} functionName - Nome da função@return{boolean} True se a função existe
Arquivo: 99_SafeHelpers.gs
Logger seguro que sanitiza dados antes de registrar.
@param{string} message - Mensagem do log@param{*} [data] - Dados adicionais (serão sanitizados)@param{string} [level='INFO'] - Nível do log (INFO, WARN, ERROR, DEBUG)
Arquivo: 76_Bootstrap.gs
Função principal de entrada para requisições GET.
// Acesso direto: https://script.google.com/macros/s/.../exec
// Retorna: index.html
// Com parâmetro: https://script.google.com/macros/s/.../exec?page=dashboard
// Retorna: página do dashboard@param{Object} e - Objeto de evento do Apps Script@return{HtmlOutput} Página HTML renderizada
Arquivo: 76_Bootstrap.gs
Função para processar requisições HTTP POST (webhooks, callbacks).
@param{Object} e - Objeto de evento do Apps Script@return{ContentService.TextOutput|HtmlOutput} Resposta
Arquivo: 76_Bootstrap.gs
Função include para templates HTML.
<?!= include('Stylesheet') ?>
<?!= include('JS-Core') ?>@param{string} filename - Nome do arquivo (sem extensão .html)@return{string} Conteúdo do arquivo
Arquivo: 76_Bootstrap.gs
Verifica status do sistema.
const status = checkBootstrapStatus();
if (!status.initialized) {
console.log('Erros:', status.errors);
}@return{Object}return.initialized- Se sistema está inicializadoreturn.configOk- Se Config.gs está OKreturn.servicesOk- Se ServiceManager está OKreturn.routerOk- Se Router está OKreturn.errors- Lista de erros encontrados
Arquivo: 95_SystemDiagnostic.gs
Executa diagnóstico completo do sistema verificando as 8 seções fundamentais.
@return{Object} Resultado do diagnóstico
Arquivo: SystemInitializer.gs
Função principal de bootstrapping do sistema.
Arquivo: CreateMissingSheets.gs
🚀 Função que resolve tudo de uma vez:
- Cria todas as planilhas necessárias
- Configura headers corretos
- Cria usuário Admin (admin/admin123)
- Cria usuário Secretário (secretario/sec123)
- Cria 10 rotas com IDs padronizados
- Cria 10 monitores vinculados às rotas
- Cria 150 alunos (15 por rota) COM ID_Rota preenchido
- Cria 10 veículos vinculados às rotas
| Função | Arquivo | Categoria |
|---|---|---|
getData() |
73_APIHelpers.gs | Dados |
getRecordById() |
73_APIHelpers.gs | Dados |
getAvailableSheets() |
73_APIHelpers.gs | Metadados |
getSystemConfig() |
73_APIHelpers.gs | Config |
healthCheck() |
73_APIHelpers.gs | Sistema |
getCurrentUser() |
47_AuthGlobals.gs | Auth |
getAuditLogs() |
47_AuthService.gs | Auth |
getDashboardKPIs() |
74_DataPopulatorService.gs | Dashboard |
getKanbanTarefas() |
74_DataPopulatorService.gs | Dashboard |
getSelectRotas() |
74_DataPopulatorService.gs | Formulários |
getSelectAlunos() |
74_DataPopulatorService.gs | Formulários |
getAlunosParaFrequenciaV2() |
99_FixFrequenciaAlunos.gs | Frequência |
getRotasCompletas() |
99_Frontend_Backend_Bridge.gs | Rotas |
getAnaliseRotasCompleta() |
99_FrontendBackendIntegration.gs | Rotas |
getColabProcessorStatus() |
82_ColabProcessorManager.gs | Colab |
| Função | Arquivo | Categoria |
|---|---|---|
createRecordAPI() |
73_APIHelpers.gs | CRUD |
createEvent() |
99_Frontend_Backend_Bridge.gs | Eventos |
createIncidente() |
73_CRUD_Incidentes.gs | Incidentes |
Auth_login() |
47_AuthService.gs | Auth |
createSession() |
44_SessionManager.gs | Auth |
activateColabProcessor() |
82_ColabProcessorManager.gs | Colab |
| Função | Arquivo | Categoria |
|---|---|---|
updateRecordAPI() |
73_APIHelpers.gs | CRUD |
updateEvento() |
MVP_Eventos.gs | Eventos |
updateRota() |
MVP_CRUD.gs | Rotas |
changePassword() |
47_AuthService.gs | Auth |
| Função | Arquivo | Categoria |
|---|---|---|
deleteRecordAPI() |
73_APIHelpers.gs | CRUD |
deleteEvento() |
MVP_Eventos.gs | Eventos |
revokeSession() |
44_SessionManager.gs | Auth |
| Módulo | Arquivo | Funções | Descrição |
|---|---|---|---|
| 73_RotasMVP | 73_RotasMVP.gs |
22 | Otimização de rotas usando Google Directions API |
| MVP_CRUD | MVP_CRUD.gs |
19 | Funções CRUD do MVP com fallback robusto |
| MVP_Eventos | MVP_Eventos.gs |
10 | Funções de Eventos do MVP |
| MVP_Import | MVP_Import.gs |
5 | Importação de dados |
| MVP_ManutencaoPreditiva | MVP_ManutencaoPreditiva.gs |
1 | Alertas de manutenção de veículos |
| MVP_RelatorioIA | MVP_RelatorioIA.gs |
15 | Relatórios com IA (Gemini) |
| Módulo | Arquivo | Descrição |
|---|---|---|
| MVPNavigation | JS-MVP-Navigation.html |
Sistema de navegação MVP |
| JS-MVP-Modules-All | JS-MVP-Modules-All.html |
Bundle de todos os módulos |
| MVP-Integration | MVP-Integration.html |
Integração completa MVP |
| Page-Alunos-MVP | Page-Alunos-MVP.html |
Página de alunos |
| Page-Frequencia-MVP | Page-Frequencia-MVP.html |
Página de frequência |
| Page-Relatorio-IA-MVP | Page-Relatorio-IA-MVP.html |
Página de relatórios IA |
| Módulo | Arquivo | Descrição |
|---|---|---|
| AuthManager | JS-API-Auth-Manager.html |
Gerenciamento de autenticação |
| OfflineManager | JS-OfflineManager.html |
Gerenciamento offline |
| DrawerManager | JS-DrawerManager.html |
Gerenciamento de drawers |
| ToastManager | JS-Toast-System.html |
Sistema de notificações |
| CRUDManagerUniversal | JS-CRUD-Universal.html |
CRUD universal |
| Módulo | Arquivo | Descrição |
|---|---|---|
| APIService | Service-APIService.html |
Serviço de API |
| BackgroundSyncService | JS-BackgroundSync.html |
Sincronização em background |
| GoogleScriptRunner | JS-GoogleScriptRunner.html |
Wrapper para google.script.run |
| Módulo | Arquivo | Descrição |
|---|---|---|
| SchemaFormGenerator | JS-SchemaForm.html |
Geração de formulários por schema |
| DataPopulator | JS-DataPopulator.html |
População de dados |
| FrequenciaMonitor | JS-FrequenciaMonitor.html |
Monitor de frequência |
| MapaAvancado | JS-MapaAvancado.html |
Mapa avançado com otimização |
O projeto conta com um conjunto poderoso de ferramentas em tools/ para garantir a qualidade do código:
| Ferramenta | Descrição |
|---|---|
analyze_codebase.py |
Analisa métricas, complexidade e estrutura do projeto |
check_best_practices.py |
Valida adesão aos padrões de desenvolvimento |
detect_dependencies.py |
Mapeia dependências e ciclos entre arquivos |
find_duplicates.py |
Identifica código duplicado para refatoração |
check_inconsistencies.py |
Detecta inconsistências entre código e schemas |
generate_docs.py |
Gera automaticamente a documentação técnica |
# Executar todas as ferramentas
python tools/run_all_tools.py
# Executar ferramenta individual
python tools/analyze_codebase.py
python tools/check_best_practices.py
python tools/generate_docs.pyTodos os relatórios são salvos em tools/reports/ em formato JSON:
consolidated_report.json- Relatório consolidadocodebase_analysis.json- Análise completa do códigodependencies.json- Grafo de dependênciasbest_practices.json- Problemas de boas práticasinconsistencies.json- Inconsistências detectadas
O sistema calcula um Health Score (0-100) baseado em:
- Erros críticos (peso alto)
- Warnings (peso médio)
- Duplicatas (peso baixo)
- Complexidade (peso baixo)
Interpretação:
- 80-100: ✅ Excelente
- 60-79:
⚠️ Bom, com melhorias recomendadas - 0-59: ❌ Atenção necessária
- Verificar fila de jobs pendentes (
countPendingJobs()) - Monitorar status do Colab se ativo
- Executar
python tools/check_best_practices.py - Revisar logs de auditoria
- Executar análise completa:
python tools/run_all_tools.py - Atualizar documentação:
python tools/generate_docs.py - Backup do sistema
- Executar testes:
runAllTests() - Verificar diagnóstico:
runSystemDiagnostic() - Validar produção:
runConfigValidation()
- Node.js e CLASP instalados globalmente
- Python 3.8+ (para ferramentas de análise)
- Acesso ao projeto no Google Apps Script
- Clone o repositório
- Configure o
.clasp.jsoncom o ID do script - Instale as dependências:
npm install
# Push para Google Apps Script
clasp push
# Deploy como WebApp
clasp deploy --description "v6.0.0"- Execute
RESOLVER_TUDO()para criar estrutura inicial - Configure propriedades de segurança:
setupSecurityProperties() - Configure triggers:
setupAllTriggers(true) - Valide produção:
runConfigValidation()
docs/API_REFERENCE.md- Referência completa de APIsdocs/ARCHITECTURE.md- Arquitetura detalhadadocs/FUNCTIONS_REFERENCE.md- Referência de todas as funções (~12.000 linhas)docs/MVP_GUIDE.md- Guia dos módulos MVPDESIGN_SYSTEM_GUIDE.md- Guia do Design SystemTOAST_SYSTEM_GUIDE.md- Guia do sistema de notificaçõesGUIA_DEPLOY_PRODUCAO.md- Guia de deploy para produção
Versão 6.0.0 - Atualizado em Janeiro de 2026