Historial de archivos
El code editor mantiene un historial de versiones para cada archivo editado, permitiendo comparar cambios y restaurar versiones anteriores.
Endpoints
| Método | Ruta | Descripción |
|---|---|---|
GET | /admin/themes/files/history?path=... | Lista las 50 versiones de un archivo |
GET | /admin/themes/files/history/:id | Obtiene el contenido de una versión |
POST | /admin/themes/files/revert | Restaura 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(noplatform_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
editpor archivo (las más antiguas se eliminan automáticamente) platform_baselinese conserva indefinidamente- Las versiones se deduplican por hash SHA-256 del contenido