Saltar al contenido principal

Historial de archivos

El code editor mantiene un historial de versiones para cada archivo editado, permitiendo comparar cambios y restaurar versiones anteriores.

Endpoints

MétodoRutaDescripción
GET/admin/themes/files/history?path=...Lista las 50 versiones de un archivo
GET/admin/themes/files/history/:idObtiene el contenido de una versión
POST/admin/themes/files/revertRestaura una versión como borrador

Listar versiones de un archivo

GET /admin/themes/files/history?path=sections/hero.html

Devuelve:

{
"versions": [
{
"id": "uuid",
"created_at": "2026-07-17T15:30:00Z",
"comment": "",
"hash": "sha256-hex"
}
]
}
  • Máximo 50 versiones por archivo
  • Solo versiones de tipo edit (no platform_baseline)
  • Ordenadas de más reciente a más antigua
  • Deduplicadas por hash (no se guardan versiones con contenido idéntico)

Ver contenido de una versión

GET /admin/themes/files/history/:id
{
"content": "<section>...</section>"
}

Útil para mostrar diffs en el code editor.

Restaurar una versión

POST /admin/themes/files/revert
Body: { "path": "sections/hero.html", "version_id": "uuid" }
  • No sobreescribe el archivo directamente
  • Crea un borrador (theme_file_drafts) con el contenido de la versión
  • El borrador se materializa al archivo en vivo solo al hacer clic en Publicar
  • Devuelve { "ok": true, "content": "...", "draft": true }

Platform baseline

La primera vez que un tenant edita un archivo que existe en el tema base, el sistema congela una copia del contenido original como platform_baseline. Este snapshot:

  • Nunca se poda del historial
  • Permite el botón "Restaurar original" en el code editor
  • Se crea automáticamente en SaveThemeFile() si no existe aún

Flujo completo

1. Merchant abre sections/hero.html en el code editor
2. El archivo se carga desde el tema base (source: "base")
3. Merchant edita y guarda
→ Se crea platform_baseline (si es la primera edición)
→ Se guarda un draft en theme_file_drafts
→ Se crea un snapshot en theme_file_versions
4. Merchant hace clic en "Publicar"
→ El draft se materializa en GCS como tenant override
5. Merchant puede ver el historial y restaurar versiones anteriores

Retención

  • 50 versiones de tipo edit por archivo (las más antiguas se eliminan automáticamente)
  • platform_baseline se conserva indefinidamente
  • Las versiones se deduplican por hash SHA-256 del contenido