Documentação técnica
Limites, formatos, comportamentos e aproximações do Gamtty, verificados no código. Se algo aqui divergir do produto, o erro é nosso — abra um chamado.
Atualizada em 3 de agosto de 2026
Arquivo de entrada
Tudo começa com a exportação nativa do Primavera P6. Estas são as regras que o arquivo precisa cumprir.
- Extensão aceita
- Apenas .xer — a exportação nativa do P6. Não aceitamos .mpp, .xml, .xlsx nem .pdf.
- Maiúsculas na extensão
- A extensão precisa estar em minúsculas: cronograma.xer é aceito, CRONOGRAMA.XER é recusado. Renomeie antes de enviar.
- Tamanho máximo
- 100 MiB (104.857.600 bytes). Acima disso o envio é recusado com "Arquivo muito grande (máximo 100 MB)".
- Codificações aceitas
- cp1252 (Windows-1252), UTF-8 e latin-1 (ISO-8859-1), tentadas nessa ordem. Se nenhuma decodificar o arquivo, a conversão falha.
- Separador de campo
- Tabulação — o padrão do XER. Não altere o arquivo em editor de texto antes de enviar.
- Separador decimal
- Ponto ou vírgula. P6 configurado em português exporta "298,5"; o Gamtty normaliza automaticamente.
- Formato de data no arquivo
- AAAA-MM-DD ou AAAA-MM-DD HH:MM. Datas em outro formato são ignoradas e o campo fica vazio.
Sobre acentos e caracteres especiais: nomes de atividade com acento, cedilha ou símbolo são preservados. A tolerância de três codificações existe justamente porque instalações do P6 em português gravam o arquivo em cp1252, não em UTF-8. Se o seu arquivo vier de um sistema com codificação exótica e a conversão falhar, reexporte do P6 em vez de converter o texto à mão.
O limite é verificado ao final do envio: um arquivo de 500 MB é transmitido por inteiro antes de a recusa aparecer. Em conexão lenta, confira o tamanho antes de enviar.
O leitor interpreta 14 tabelas do arquivo. Tabelas presentes fora desta lista são simplesmente ignoradas — não causam erro.
| Tabela | O que o Gamtty extrai |
|---|---|
| PROJECT | Projeto: código, nome, data de status |
| PROJWBS | Estrutura analítica (EAP/WBS) |
| TASK | Atividades, durações, datas e folgas |
| TASKPRED | Vínculos de precedência |
| ACTVTYPE | Tipos de Activity Code |
| ACTVCODE | Valores de Activity Code |
| TASKACTV | Activity Codes atribuídos por atividade |
| UDFTYPE | Tipos de campo personalizado (UDF) |
| UDFVALUE | Valores de campo personalizado |
| CALENDAR | Calendários e dias úteis |
| RSRC | Recursos |
| RSRCCURV | Curvas de recurso (21 pontos) |
| RSRCRATE | Limites de disponibilidade de recurso |
| TASKRSRC | Alocação de recurso por atividade |
Como a conversão funciona
O processamento é assíncrono: o navegador não fica travado esperando, e você acompanha o progresso em tempo real.
- O arquivo é enviado e um job é criado.
- Um processo em segundo plano lê o XER e reconstrói projeto, EAP, atividades, vínculos, calendários e recursos no banco.
- A planilha é montada e fica disponível para download.
- O progresso chega ao navegador por conexão contínua (Server-Sent Events), com etapas nomeadas — lendo XER, processando hierarquia, inserindo atividades, construindo Excel.
- Envios por minuto
- Até 20 envios por minuto por endereço IP. O restante da API aceita 60 requisições por minuto.
- Nível da EAP
- A raiz é o nível 1. A reconstrução tem proteção contra referência circular — uma EAP com ciclo não travará o processamento.
- Falha no processamento
- O job recebe status de erro e a mensagem técnica da falha. A conversão não consome sua cota quando falha.
Planilha e colunas
São dois exportadores: o padrão, disponível a todos, e o personalizado, do plano Pro.
A planilha padrão tem uma aba chamada Cronograma, com cinco colunas e a EAP reconstruída como grupos colapsáveis do Excel.
| Coluna | Origem |
|---|---|
| Activity ID | Código da atividade no P6 |
| Activity Name | Descrição da atividade |
| Original Duration | Duração original |
| Start | Data real de início; na ausência dela, a data planejada |
| Finish | Data real de término; na ausência dela, a data planejada |
- Cores da EAP
- Sete níveis com cor própria. Acima do nível 7, as cores 5 a 7 se repetem.
- Datas reais
- Destacadas em verde-escuro e itálico, para distinguir do planejado.
- Cabeçalho
- Painel congelado e filtro automático já aplicados.
- Formato de data
- dd/mm/aaaa, gravado como texto — não como data serial do Excel.
O exportador personalizado do Pro oferece 27 colunas padrão, nesta ordem, e você escolhe quais entram e em que sequência:
- Activity ID
- Activity Name
- Original Duration
- Remaining Duration
- Physical % Complete
- Total Float
- Free Float
- Activity Type
- Activity Status
- Target Start
- Target Finish
- Actual Start
- Actual Finish
- Early Start
- Early Finish
- Late Start
- Late Finish
- Primary Constraint
- Constraint Date
- Suspend Date
- Resume Date
- WBS
- Schedule % Complete
- Duration % Complete
- Units % Complete
- Labor Units % Complete
- Nonlabor Units % Complete
- Activity Codes
- Uma coluna por tipo de Activity Code presente no seu arquivo. A lista é descoberta no upload, não é fixa.
- Campos personalizados (UDF)
- Uma coluna por tipo de UDF presente no arquivo. Um cronograma com 12 UDFs oferece as 12.
- Total Float e Free Float
- O P6 guarda folga em horas; a exportação converte para dias dividindo por 8, com uma casa decimal.
- Colunas de % de unidades
- Seguem a fórmula do P6: realizado ÷ (realizado + restante) × 100. Quando não há quantidade na base, a célula fica vazia em vez de mostrar 0%.
- Prévia antes de exportar
- Mostra as cinco primeiras atividades com as colunas escolhidas.
- Largura das colunas
- Ajustada automaticamente entre 10 e 60 caracteres. Activity Name fica alinhada à esquerda; as demais, centralizadas.
Planos e limites de uso
- Plano gratuito
- Uma conversão a cada 45 dias. É um intervalo entre conversões, não uma cota mensal: a contagem parte da sua última conversão concluída.
- O que conta como conversão
- Cada arquivo .xer processado com sucesso. Job que falha não consome o intervalo.
- Quando o limite é verificado
- Antes de o arquivo ser gravado. Se ainda estiver no intervalo, o envio é recusado e a data da próxima liberação aparece na mensagem.
- Marca na planilha (gratuito)
- A primeira linha traz a faixa "Convertido com Gamtty Free — assine o Pro para remover esta marca", e a aba fica protegida contra edição casual.
- Plano Pro
- Conversões ilimitadas, sem marca, e acesso ao Workspace: Curva S, indicadores de EVM, auditoria DCMA, Integridade da Baseline, dashboards, relatório em PDF e Modo Dinâmico.
Sobre a proteção da aba: ela impede a remoção casual pela interface do Excel, não é criptografia. Não é uma medida de segurança — é um freio de interface, e nós preferimos dizer isso a sugerir o contrário.
Se um acesso Pro for revogado, o intervalo de 45 dias retoma a partir da conversão mais recente, incluindo as feitas durante o período Pro — não volta ao estado anterior à assinatura.
Retenção e exclusão de dados
O que é apagado, quando, e o que permanece. Esta seção é deliberadamente literal.
- Apagados em ~30 minutos
- O arquivo .xer que você enviou e a planilha padrão gerada, ambos removidos do disco, mais o registro do job.
- Não apagados nesse prazo
- A planilha personalizada gerada pelo exportador do Pro permanece no disco. Os dados do projeto — atividades, EAP, vínculos, recursos — permanecem no banco: são eles que alimentam os módulos do Workspace.
- Prazo configurável
- Os 30 minutos são o padrão da instalação e podem ser ajustados pelo operador do ambiente.
Por que não apagamos tudo: se os dados do projeto fossem descartados junto com o arquivo, Curva S, indicadores e auditorias precisariam de um novo upload a cada abertura, e o Modo Dinâmico não existiria. Se você quiser que um projeto desapareça, exclua-o pelo Workspace.
Conta, acesso e sessão
- Sessão
- Cookie httpOnly com token assinado (JWT, HS256), válido por 30 dias. Não há token de API para uso externo.
- Cadastro em duas etapas
- Um cookie temporário de 20 minutos cobre o intervalo entre criar a conta e concluir o perfil e a verificação.
- Login social
- Google, Microsoft e GitHub.
- Verificação por SMS
- Envio de código por SMS na conclusão do cadastro, limitado a 5 pedidos por minuto.
- Senha
- Guardada com bcrypt. O formulário pede no mínimo 8 caracteres.
- Conta criada por login social
- Pode definir uma senha depois, sem informar senha anterior — porque não havia uma.
Sobre o mínimo de 8 caracteres: hoje essa exigência é validada pelo navegador, no formulário. Recomendamos senha longa e exclusiva de qualquer forma — e, de preferência, o login social, que dispensa senha.
Formatos de saída
- Planilha
- Arquivo .xlsx (Excel 2007 ou superior, e qualquer editor compatível: LibreOffice, Google Sheets, Numbers).
- Nome do arquivo
- O mesmo do arquivo enviado, com a extensão trocada. A versão personalizada recebe o sufixo -personalizado.
- Relatório
- PDF gerado no servidor, com capa, gráficos embutidos como imagem e até 13 seções selecionáveis.
- Orientação das páginas do PDF
- Curva S, Gráficos de Recursos e Avanço por EAP saem em paisagem, porque seus gráficos ficam ilegíveis comprimidos em retrato. As demais seções, em retrato.
- Exportações do Workspace
- Integridade da Baseline exporta em .xlsx, por dimensão ou tudo em uma pasta de trabalho.
Aproximações e limitações declaradas
Onde o cálculo é uma aproximação, dizemos qual e por quê. Nenhum destes itens é defeito: são escolhas de engenharia documentadas, e você merece saber delas antes de levar o número para uma reunião.
- DCMA — ponto 12 (Teste de Caminho Crítico)
- É uma aproximação estrutural: detecta atividade crítica isolada, sem predecessora nem sucessora também crítica, o que indica quebra de lógica. Não é o teste literal de acrescentar 600 dias e recalcular o CPM. O resultado vem marcado como aproximação na própria tela.
- DCMA — ponto 13 (CPLI)
- O comprimento do caminho crítico é medido em dias corridos. A folga total já vem calculada pelo P6, respeitando o calendário.
- DCMA — ponto 8 (Duração Alta)
- Aplica o limite de 44 dias sem a exceção de Rolling Wave da revisão de novembro de 2009.
- DCMA — ponto 5 (Restrições Rígidas)
- Usa o conjunto de restrições do P6, e não a lista voltada ao MS Project que aparece em algumas versões do checklist.
- Curva S — feriados
- A distribuição usa o padrão de dias úteis do calendário (segunda a sexta, ou 7 dias), mas ignora a lista de feriados. Calendários "24h" do P6 lançam todos os fins de semana como exceção — milhares de entradas — e considerá-las excluiria quase todos os dias do projeto, colapsando a curva. Para uma curva mensal, o impacto de feriados individuais é desprezível.
- Schedule % Complete
- Aproximado por dias corridos entre início e término mais cedo. Marcos são lidos como 100% no instante em que sua data chega.
- Folga em horas
- O P6 guarda folga em horas. Convertemos para dias dividindo por 8 em toda a interface e nas exportações.
- Identificadores de recurso
- O código interno de recurso do P6 é único dentro de cada arquivo, não entre arquivos. Ao comparar duas revisões, os recursos são reconciliados pelo nome.
- Nivelamento de recursos
- Os modelos Nivelamento e Combinado são leituras diferentes do mesmo dado do histograma; não há um cálculo de nivelamento distinto por trás.
Mensagens de erro
O que cada recusa significa e o que fazer.
| Mensagem | Causa e solução |
|---|---|
| Apenas arquivos .xer são aceitos | A extensão não é .xer minúsculo. Renomeie o arquivo ou reexporte do P6. |
| Arquivo muito grande (máximo 100 MB) | O arquivo passa de 100 MiB. Exporte um intervalo menor do cronograma ou remova projetos que não interessam da exportação. |
| Limite do plano Free: 1 conversão a cada 45 dias | Você está no intervalo entre conversões. A data da próxima liberação vem na mensagem; o plano Pro remove o limite. |
| Disponível apenas para o plano Pro | O recurso pertence ao Workspace. Assine o Pro para liberar. |
| Job não encontrado ou ainda não concluído | A conversão ainda está em andamento, ou o job já passou da janela de retenção de 30 minutos. |
| Arquivo não encontrado no servidor | A janela de retenção expirou e o arquivo foi apagado. Converta novamente. |
| Código inválido ou expirado | O código de SMS venceu ou foi digitado errado. Peça um novo. |
| Não autenticado | A sessão expirou ou o cookie foi bloqueado. Entre de novo e verifique se o navegador aceita cookies do site. |
Erro durante o processamento: quando a falha acontece na leitura do arquivo, a mensagem exibida é o texto técnico da exceção, não um texto tratado. Se ela não fizer sentido, abra um chamado com o nome do arquivo e a mensagem — é o caminho mais rápido.
Requisitos do navegador
- Navegador atual com suporte a módulos ES nativos — Chrome, Edge, Firefox ou Safari em versão recente.
- JavaScript habilitado: a aplicação é uma interface de página única.
- Cookies do site permitidos. A sessão depende de cookie; bloqueá-lo impede o login.
- Conexão contínua (Server-Sent Events) para acompanhar o progresso da conversão em tempo real.
- Arrastar e soltar arquivo, se você preferir esse caminho ao seletor.
- Editor de dashboards
- Disponível apenas no computador, em telas de 1024 px ou mais. A montagem usa arrastar e soltar numa grade de 12 colunas, que fica inutilizável em tela pequena. A visualização de dashboards funciona em qualquer tamanho.
- Idiomas
- Português e inglês, inclusive nas mensagens de erro da API. O idioma segue sua escolha no site.
Uma ressalva honesta: o conteúdo do relatório em PDF é gerado no servidor e permanece em português mesmo com a interface em inglês. Os títulos dos 14 pontos DCMA também vêm do servidor em português.
Referência da API
A API é interna, usada pela própria aplicação. Não há token de API para integração externa: a autenticação é por cookie de sessão, e não existe chave que você possa emitir. Esta referência serve para entender o comportamento do produto, não para automatizar de fora.
Todos os caminhos têm o prefixo /api/v1. As rotas do Workspace exigem sessão autenticada e plano Pro.
| Método e rota | O que faz | Requer |
|---|---|---|
| POST /upload | Recebe o .xer, valida extensão, intervalo do plano e tamanho, e inicia a conversão | Sessão |
| GET /jobs/{id}/status | Situação atual da conversão | Sessão |
| GET /jobs/{id}/progress | Progresso em tempo real (conexão contínua) | Sessão |
| GET /jobs/{id}/download | Baixa a planilha padrão | Sessão |
| GET /jobs/{id}/available-fields | Colunas padrão, Activity Codes e UDFs disponíveis no arquivo | Pro |
| GET /jobs/{id}/preview | Prévia de cinco atividades com as colunas escolhidas | Pro |
| POST /jobs/{id}/export | Gera a planilha personalizada | Pro |
| GET /jobs/{id}/download-custom | Baixa a planilha personalizada | Sessão |
| GET, POST /user-projects | Lista e cria projetos do Workspace | Pro |
| GET, POST, DELETE /user-projects/{id}/schedules | Biblioteca de cronogramas do projeto, e qual é o ativo | Pro |
| GET /user-projects/{id}/scurve | Curva S do par baseline e corrente | Pro |
| GET /user-projects/{id}/kpis | Indicadores de EVM | Pro |
| GET /user-projects/{id}/dcma-assessment | Auditoria DCMA de 14 pontos | Pro |
| GET /user-projects/{id}/baseline-adherence | Integridade da Baseline em seis dimensões | Pro |
| GET, POST, PUT, DELETE /user-projects/{id}/dashboards | Dashboards personalizados | Pro |
| GET /user-projects/{id}/general-report/pdf | Relatório geral em PDF | Pro |
| POST /auth/signup, /auth/login, /auth/logout | Cadastro, entrada e saída | — |
| GET /auth/me | Dados da sessão atual | Sessão |
| GET, POST /support/tickets | Chamados de suporte | Sessão |
Limite de requisições: 60 por minuto por endereço IP no geral, 20 por minuto no envio de arquivo, 10 por minuto em cadastro, login e troca de senha, e 5 por minuto no envio de código por SMS.