chore: auto-commit (286 archivos)
- .claude/agents/fn-orquestador/SKILL.md - .claude/commands/fn_claude.md - .claude/rules/INDEX.md - .claude/rules/cpp_apps.md - .claude/rules/ids_naming.md - CHANGELOG.md - apps/dag_engine/README.md - apps/dag_engine/api.go - apps/dag_engine/dags_migrated/example.yaml - apps/dag_engine/dags_migrated/example_lineage_tracking.yaml - ... Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
---
|
||||
name: metabase-versioning
|
||||
id: 0006
|
||||
status: pending
|
||||
created: 2026-05-16
|
||||
updated: 2026-05-16
|
||||
priority: medium
|
||||
risk: medium
|
||||
related_issues: []
|
||||
apps:
|
||||
- auto_metabase
|
||||
- dag_engine
|
||||
- agents_and_robots
|
||||
trigger: cron
|
||||
schedule: "0 2 * * *"
|
||||
expected_runtime_s: 60
|
||||
tags: [metabase, sync, gitops, backup]
|
||||
---
|
||||
|
||||
## 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_metabase` configurado con credenciales (`METABASE_URL`, `METABASE_TOKEN`).
|
||||
- `projects/metabase_registry/` existe con sub-repo git inicializado.
|
||||
|
||||
## Flow
|
||||
|
||||
1. DAG `metabase-snapshot.yaml` diario 02:00:
|
||||
```yaml
|
||||
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]
|
||||
```
|
||||
2. data_factory: node `metabase_snapshot` kind=extractor (source=metabase). Tag `gitops`.
|
||||
3. 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).
|
||||
|
||||
## 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>`.
|
||||
Reference in New Issue
Block a user