O quê/como/por quê da integração + regras do Redmine de produção
(custom fields obrigatórios, atividade por projeto, identifier lowercase,
comentário obrigatório, projeto ativo) e gotchas de manutenção.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- adiciona front matter completo ao record de namespaces (estava sem metadados)
- renomeia para o próximo ID livre (036), resolvendo a colisão de ID 032
- kb_check --fix: index.json sincronizado; kb_check: OK
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Documenta as colunas/tabelas reais usadas pelas 7 tools de KPI (MTTR via
solve_delay_stat, FCR via solução recusada, SLA TTR/TTO, workload, backlog,
CSAT, volume). Atualiza snapshot KB-026 para 26 tools.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
O snapshot original (26/05) era aspiracional e dava como prontos arquivos
que git log --all confirmou nunca terem existido: src/InputValidation.php,
src/ProjectTaskTools.php e as tools glpi_projecttask_*. Tabelas de estado,
métricas e seção de versão corrigidas para refletir o disco. Itens não
implementados rebaixados de 'feito' para 'planejado'. Documentados os
commits que realmente entraram (bi_stats, fix range, schema plan_*_date).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Confirmado no plugin sync: endpoint ajax sem include responde 302/403
(core bootado pelo LegacyFileLoadController). Corrige exemplo legado.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Credencial DEV vive em bin/.forgejo-dev.token (gitignored), não na KB.
- Criar repo via API exige PAT com write:user + write:repository (403 sem isso).
- Push-to-create desabilitado no Forgejo DEV: repo precisa existir antes do push.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Aprendizados validados no desenvolvimento do plugin sync:
- KB-PLUGIN-032: subclasse DBmysql read-only para banco externo (gotchas de
senha rawurldecode, query() guard, flag connected).
- KB-PLUGIN-033: comandos de console de plugin exigem src/ + namespace de nome
plugins:<key>:.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Processo definido: (1) acessar DEV CT100, (2) criar plugin direto em
plugins/ para dev+validacao conjunta via interface, (3) push Forgejo DEV,
(4) homologar, (5) push Forgejo PROD.
Regra de ouro: knowledge-base como fonte primaria; core do GLPI na
ausencia de KB; novo KB apos teste validado.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Novo runbook KB-PLUGIN-031: nascimento do plugin ate validacao E2E no
GLPI dev (scaffold, Forgejo local, deploy CT100, console, bootstrap
Kernel para testes CLI). Validado de ponta a ponta com o assetinherit.
- Registros KB-PLUGIN-021..030 existiam apenas no disco (drift) e foram
incluidos no versionamento; index.json sincronizado via kb-fix.
- Ignora lixo AppleDouble/.DS_Store do macOS.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
KB-PLUGIN-019 e KB-PLUGIN-020 estavam sem delimitador YAML.
KB-PLUGIN-011, 017, 018 tinham divergencias no index.json (titulo, status, severity).
Todos corrigidos via kb_check.py --fix.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>