Commit graph

6 commits

Author SHA1 Message Date
Gemini
5ee12c75d2 feat(2.0): remove a coluna de variáveis — vira autocomplete no campo de valor
Feedback de UX: com o Gerar template automático, a coluna ficava ociosa.
As variáveis do GLPI agora aparecem como autocomplete (datalist) direto no
campo de valor de cada linha, + um painel de referência colapsado (fechado
por padrão) para descoberta em remapeamentos. Editores em largura total.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 17:12:32 -03:00
Gemini
48600b9692 feat(2.0): dicionário "de → para" por operação + variáveis de autor
Feedback de UX: o admin precisa saber O QUE o Redmine espera, não só os
valores. Cada card do editor ganha a tabela colapsável "Campos que o
Redmine espera" (campos padrão da operação + custom fields do ambiente,
com obrigatoriedade e valores possíveis) — clicar num campo adiciona a
linha com o caminho pronto. A paleta vira explicitamente o "DE" (variáveis
do GLPI) e ganha chamado.tecnico e tarefa.autor (texto; autoria real segue
automática via impersonation). Sync passa a cachear custom_fields de todos
os tipos (issue/time_entry/project).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 17:00:19 -03:00
Gemini
1053b9f506 feat(2.0): Fase 2 — editor de templates na config + paleta + create_project
- seção "Templates de Payload (avançado)" no formconfig: card por operação,
  editor linha-a-linha (flatten/unflatten em JS puro) com toggle Ver JSON,
  Gerar template (seed + CFs descobertos), ativar/desativar
- paleta de variáveis clicável (copia tag) + referência do Redmine do ambiente
  (trackers/status/prioridades/atividades/custom fields com valores)
- buildFormContext (form.*) e wiring do create_project nos dois controllers,
  com fallback 1.x em erro de render
- validado: render da UI (4 cards + paleta + JS) e E2E create_project via
  template no Redmine dev (tipos nativos, identifier minúsculo, parent, trackers)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 16:04:22 -03:00
Gemini
b8f89cda8d feat: resolução de usuários self-healing + syncUsers upsert + fallback logado (1.6.0)
Causa raiz do incidente "autor = admin": cache de usuários vazio no prod.
- cache miss -> lookup ao vivo por e-mail no Redmine + upsert no cache
- syncUsers nunca mais esvazia a tabela (upsert por redmine_id)
- fallback para admin deixa rastro no log
- config exibe saúde do cache (contagem + alerta se vazio)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 12:56:49 -03:00
Gemini
1ea7af6435 fix: compat GLPI 11.0.4 — remove macro csrfField do form de config (1.5.1)
- config_form usava fields.csrfField() (inexistente no 11.0.4) -> erro fatal
- token CSRF agora via csrf_token_value (PHP); URL usa textField
- compatível com 11.0.0+

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-29 23:26:04 -03:00
Gemini
80d1576a80 Redmine Integration 1.3.0
Plugin de integração GLPI <-> Redmine:
- Config nativa (Twig) com API key cifrada (GLPIKey)
- Vínculo projeto GLPI <-> projeto Redmine (aba do projeto) + categoria por vínculo
- 1 issue Redmine por chamado; defaults (tracker/priority/activity) e mapa de status
- Tempo das TicketTasks -> time entries (gate em "Feito"), idempotente
- Autores via impersonation (X-Redmine-Switch-User) + auto-membership por role
- Mapeamento de usuários GLPI->Redmine (auto-match por e-mail + overrides)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-29 18:32:19 -03:00