Files
acai-scaffold/docs/deploy-and-sync.md
Dmielgo f2021361ec Add production rules discovered during real projects
- Correct hooks-and-api.md: file hooks vs module hooks param injection,
  FK naming not always _num, CmsApi.hook Promise pattern
- Add 9 new rules to hooks-and-api.md: reserved `tipo` var, ghost modules,
  cms_uploads schema, name vs title by menuType, menuOrder, localCache
  gotcha, slug generation, uploads from hooks, CocoEmail
- Add 5 rules to modular-system.md: minified/ dir, Docker workflow,
  debug tools (?compiletwig/?pruebas), general sections deploy, controlador
- Add 2 rules to css-js-conventions.md: Vue inline conflict, Vue mount delay
- Add testing section to quick-reference.md
- Create docs/deploy-and-sync.md for production deploy and sync rules
- Promote 3 critical rules to CLAUDE.md (rules 11-13)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 16:17:00 +00:00

57 lines
1.9 KiB
Markdown

# Deploy & Sync
Reglas para desplegar módulos y secciones generales a producción via MCP, y para sincronizar con el servidor.
---
## Protocolo para `save_module`
1. `save_module` con `html`, `js`, `css`**LOS 3 SIEMPRE**. Si omites uno, se borra de prod (queda 0 bytes).
2. Ejecutar `check_module` → fuerza recompilación de `index-twig.tpl`
3. Visitar `?compiletwig` en una página que use el módulo
4. Verificar que renderiza
---
## NUNCA pasar `html` a módulos con builder vars configurados
Módulos con sample data en el builder (banners, carouseles, módulos con imágenes/colores configurados desde el admin) se ROMPEN al recompilar el HTML. El `save_module` puede perder/corromper la configuración visual.
**Para estos módulos:**
- Solo pasar `js` y/o `css`, nunca `html`
- Si se rompe: `recover_git` con `list_git_log` para revertir
- Editar el HTML desde el panel admin de Acai, no por MCP
---
## Forzar regeneración de minified
Si subes solo `js`, el `minified/script-{hash}.js` NO se regenera automáticamente.
**Solución:**
1. Leer el HTML actual de prod con `get_module` (sections: `["html"]`)
2. Añadir un espacio al final
3. `save_module` con los 3 (html+espacio, js, css)
**IMPORTANTE:** Usar SIEMPRE el HTML de prod (`get_module`), NUNCA el local.
---
## General Sections (`custom-*`)
Se despliegan con `save_general_section`, no `save_module`:
- El módulo se llama `custom-{nombre_tabla}` (ej: `custom-productos`)
- Se sube con `table: "productos"`, `content`, `javascript`, `css`
---
## Sync y Versionado
### Sync from server puede borrar módulos locales
El "Sync from server" puede eliminar módulos que existen en local pero no en el servidor. Si borra `custom-header` o `custom-footer`, TODAS las páginas crashean.
**Regla:** Hacer commit ANTES de cualquier sync.
### Sync solo sube archivos modificados
Para forzar un sync de un archivo sin cambios reales, añadir un espacio al final.