6ad82167bb
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
4.0 KiB
4.0 KiB
name, id, status, created, updated, priority, risk, related_issues, apps, trigger, schedule, expected_runtime_s, tags
| name | id | status | created | updated | priority | risk | related_issues | apps | trigger | schedule | expected_runtime_s | tags | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| metabase-versioning | 0006 | pending | 2026-05-16 | 2026-05-16 | medium | medium |
|
cron | 0 2 * * * | 60 |
|
Goal
Probar flujo INVERSO al tipico: extraer estado de un servicio interno (Metabase) y persistirlo como codigo. Sirve de backup + auditoria + reproducibilidad.
Pre-requisitos
- Metabase corriendo (local docker o produccion).
auto_metabaseconfigurado con credenciales (METABASE_URL,METABASE_TOKEN).projects/metabase_registry/existe con sub-repo git inicializado.
Flow
- DAG
metabase-snapshot.yamldiario 02:00:name: metabase-snapshot schedule: "0 2 * * *" steps: - name: pull_metabase function: auto_metabase_pull_bash_pipelines args: ["--target", "projects/metabase_registry"] - name: git_diff_check command: cd projects/metabase_registry && git diff --stat - name: commit_if_changes command: | cd projects/metabase_registry git add -A if ! git diff --cached --quiet; then git commit -m "snapshot: $(date -u +%FT%TZ)" git push origin master echo "CHANGES_PUSHED" else echo "NO_CHANGES" fi depends: [pull_metabase] - name: notify function: matrix_send_message_<id> args: ["#fn-registry-ops", "Metabase snapshot: <stdout from prev step>"] depends: [commit_if_changes] - data_factory: node
metabase_snapshotkind=extractor (source=metabase). Taggitops. - Verificar que YAML files generados son legibles y diff-friendly.
Acceptance
- DAG corre 3 dias consecutivos sin error.
- >=1 commit registrado en repo
metabase_registry. - data_factory.runs muestra historico.
- Matrix recibe 1 mensaje/dia (con "NO_CHANGES" o "CHANGES_PUSHED").
- Si se rompe un dashboard manualmente en Metabase -> push de YAML viejo lo restaura (test).
Telemetria esperada
- 1 run/dia en data_factory.
- 7 commits en metabase_registry repo (1 semana baseline).
Definition of Done
Ver README.md seccion DoD + user-facing.
Generico
- Repetibilidad: cron diario 02:00 corre 7 dias consecutivos sin error.
- Observabilidad:
data_factory.runs+ 1 commit en repometabase_registrypor dia (oNO_CHANGES). - Error-path: token Metabase expirado → healthcheck pre-pull falla con mensaje claro, no silencio.
- Idempotencia: NO_CHANGES no genera commit vacio en git.
- Secrets: token Metabase en
pass metabase/api-token. - Docs:
## Notascon onboarding + rollback procedure. - Registry-first: pull/diff/push reusan funciones registry.
- INDEX + status:
status: done+ INDEX + movido.
User-facing
- User-facing: usuario navega a
https://gitea.../dataforge/metabase_registry/commits/master→ ve commits diarios con diff YAML de dashboards/cards. - User-facing repeat: misma URL manana muestra commit nuevo (o
NO_CHANGESskip); rollback con click derecho en commit → restore. - User-facing onboarding: parrafo en
## Notas: "Para auditar cambios Metabase: abrir Gitea repodataforge/metabase_registry. Rollback: revertir commit en Gitea → push trigger DAG manual → Metabase restaurado. Matrix bot diario en#fn-registry-opsa las 09:00." - User-facing latencia: cambio manual en Metabase → commit visible al dia siguiente 02:00.
Custom
- Rollback E2E probado: revertir commit → siguiente run aplica YAML viejo → Metabase restaura dashboard.
- Diff YAML estable: keys ordenadas, no churn aleatorio.
- Dashboards eliminados → commit
DELETED:, no tombstone huerfano. - Backup adicional a vault (no solo git).
Notas
- Riesgo: si Metabase token expira, el DAG falla silenciosamente. Anadir healthcheck pre-pull.
- Restore es manual hoy. Futuro: comando
auto_metabase push --from-commit <SHA>.