Documentación: diagramas, kiosko y chat, catálogos, respaldos y endpoints documentados
Diagramas en texto dentro de bloques de código, en vez de capturas: se editan
como texto, no pesan en el repositorio y no quedan desactualizados solos. Se
agregan el recorrido de un turno, quién firma cada consentimiento, el paso de
una muestra pendiente entre visitas y la línea de tiempo de las tomas seriadas.
Páginas nuevas del manual: kiosko y pantallas de TV (las dos que funcionan sin
nadie operándolas), y chat de WhatsApp, que explica por qué el bot deja de
responder cuando un operador toma la conversación y de dónde sale el límite de
24 horas.
Páginas técnicas nuevas: registro de exámenes, y los catálogos del laboratorio
agrupados en una sola página por compartir la misma forma. Operación suma
respaldos y recuperación, incluyendo qué datos históricos no son recuperables.
Los 10 endpoints que no tenían comentario de cabecera ahora lo tienen, así que
la tabla generada por {{endpoints}} queda completa: 83 de 83.
DOCUMENTACION_LAB.md y README_LAB.md quedan como puntero al módulo;
WEBHOOK_ENDPOINTS.md se elimina por estar ya migrado a la sección técnica.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
81c007c516
commit
71c9dfd424
@@ -0,0 +1,88 @@
|
||||
# Respaldos y recuperación
|
||||
|
||||
Qué hay que respaldar, y qué se pierde si no está.
|
||||
|
||||
## Las tres cosas a respaldar
|
||||
|
||||
```
|
||||
┌────────────────────┐ ┌────────────────────┐ ┌────────────────────┐
|
||||
│ BASE DE DATOS │ │ ARCHIVOS SUBIDOS │ │ CÓDIGO │
|
||||
│ │ │ │ │ │
|
||||
│ 91 tablas │ │ uploads/terms/ │ │ repositorio git │
|
||||
│ pacientes, turnos, │ │ uploads/turnero/ │ │ │
|
||||
│ formularios, │ │ │ │ ya respaldado por │
|
||||
│ firmas │ │ NO están en git │ │ estar en el remoto │
|
||||
└────────────────────┘ └────────────────────┘ └────────────────────┘
|
||||
crítico crítico cubierto
|
||||
```
|
||||
|
||||
El código está a salvo por estar versionado. Los otros dos **no tienen respaldo automático por el solo hecho de existir**.
|
||||
|
||||
## Base de datos
|
||||
|
||||
Es lo único irreemplazable. Contiene historia clínica, consentimientos firmados y facturación — información con valor legal y sin forma de reconstruirse.
|
||||
|
||||
```bash
|
||||
mysqldump -h <host> -u <usuario> -p <base> \
|
||||
--single-transaction --routines --triggers \
|
||||
| gzip > respaldo_$(date +%F).sql.gz
|
||||
```
|
||||
|
||||
`--single-transaction` evita bloquear las tablas mientras corre, así se puede hacer con el sistema en uso.
|
||||
|
||||
### Qué contiene lo crítico
|
||||
|
||||
| Tabla | Por qué importa |
|
||||
|---|---|
|
||||
| `lab_pacientes` | Fichas clínicas |
|
||||
| `turnero_consentimientos`, `lab_form_envios` | **Formularios firmados** — valor legal |
|
||||
| `turnero_turnos`, `turnero_solicitudes` | Historial de atención y facturación |
|
||||
| `terms_acceptance` | Aceptación de términos, ~5.000 registros |
|
||||
| `admin_users`, `roles`, `role_modules` | Acceso al sistema |
|
||||
|
||||
Las firmas se guardan como imagen **dentro** de las tablas, no como archivos sueltos. Un respaldo de la base las incluye.
|
||||
|
||||
## Archivos subidos
|
||||
|
||||
```
|
||||
uploads/terms/ documentos de términos y condiciones
|
||||
uploads/turnero/tv_media/ videos e imágenes de la pantalla de TV
|
||||
```
|
||||
|
||||
**No están en el repositorio.** Al mover el sistema de servidor hay que copiarlos aparte, o los enlaces quedan apuntando a archivos que ya no existen.
|
||||
|
||||
Es exactamente lo que pasó con el documento de términos cuando cambió el dominio: la base seguía apuntando a una URL que ya no respondía.
|
||||
|
||||
## Antes de un cambio riesgoso
|
||||
|
||||
Si vas a tocar datos en producción, respaldá **solo lo que vas a tocar**:
|
||||
|
||||
```bash
|
||||
mysqldump -h <host> -u <usuario> -p <base> role_modules admin_users \
|
||||
> antes_del_cambio.sql
|
||||
```
|
||||
|
||||
Es rápido y suele alcanzar. Un respaldo completo para cambiar una columna es desproporcionado; no tener ninguno es imprudente.
|
||||
|
||||
## Verificar que el respaldo sirve
|
||||
|
||||
Un respaldo que nunca se restauró no es un respaldo, es un archivo:
|
||||
|
||||
```bash
|
||||
gunzip -t respaldo_2026-08-03.sql.gz # ¿está íntegro?
|
||||
zcat respaldo_2026-08-03.sql.gz | head -40 # ¿tiene lo que esperás?
|
||||
```
|
||||
|
||||
Lo ideal es restaurarlo de vez en cuando en una base de prueba y comprobar que el sistema arranca contra ella.
|
||||
|
||||
## Qué NO es recuperable
|
||||
|
||||
Aunque tengas respaldos, hay datos que nunca se guardaron y no hay de dónde sacarlos:
|
||||
|
||||
| Dato | Desde cuándo existe |
|
||||
|---|---|
|
||||
| Quién creó cada consentimiento del turnero | 3 de agosto de 2026 |
|
||||
| Quién firmó cada toma de F-LAB-28 | 3 de agosto de 2026 |
|
||||
| Cédula del personal no enfermero | 3 de agosto de 2026 |
|
||||
|
||||
Los registros anteriores tienen esos campos vacíos, y **no hay traza de auditoría** que permita reconstruirlos. Vale como advertencia: cuando se agrega una columna para registrar quién hizo algo, lo anterior se pierde.
|
||||
Reference in New Issue
Block a user