21 documentos en cuatro secciones, escritos sobre el comportamiento real del sistema —incluidos los casos que costaron diagnosticar esta semana. Manual de usuario (visible para todos): primeros pasos, recepción, toma de muestras, portal del enfermero y administración. Orientado a tareas concretas, no a describir pantallas. Documentación técnica: índice de módulos, turnero, formularios y firma digital, WhatsApp y bot, domicilios, webhook (migrado de WEBHOOK_ENDPOINTS.md) e inventario de endpoints. Arquitectura: visión general, enrutamiento y registro de módulos, roles y permisos, modelo de datos, integración con WhatsApp, y decisiones tomadas con su deuda técnica asociada. Operación: runbook de incidentes ordenado por síntoma, configuraciones críticas —incluido qué vive en Meta y no en la base— y despliegue. Se documentan explícitamente las trampas conocidas: role/role_id que hay que mantener sincronizados, las columnas can_* que el control de acceso no lee, las URL de plantilla que no se cambian desde el código, y las columnas históricas que quedaron en NULL sin forma de recuperarlas. README_DOCS.md apunta al módulo y explica cómo agregar páginas. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
42 lines
1.5 KiB
Markdown
42 lines
1.5 KiB
Markdown
# Endpoints
|
|
|
|
Inventario de los endpoints de todos los módulos, generado del filesystem en cada carga. La descripción sale del comentario de cabecera de cada archivo.
|
|
|
|
## Convenciones
|
|
|
|
Los endpoints son archivos PHP sueltos que devuelven JSON. **No pasan por el enrutador**: se invocan por su ruta real.
|
|
|
|
```
|
|
modules/turnero/api/get_historial.php
|
|
api/lab/save_domicilio.php
|
|
```
|
|
|
|
Cada módulo tiene su `api/_helpers.php` con lo común. Los archivos que empiezan con guión bajo son internos y no se listan acá.
|
|
|
|
### Helpers típicos
|
|
|
|
| Función | Qué hace |
|
|
|---|---|
|
|
| `db()` | Conexión PDO |
|
|
| `inputJson()` | Cuerpo de la petición como arreglo |
|
|
| `jsonOk($datos)` | Respuesta correcta |
|
|
| `jsonError($msg, $codigo)` | Error con código HTTP |
|
|
| `adminId()` | Id del usuario de la sesión |
|
|
| `requireMethod('POST')` | Corta si el método no coincide |
|
|
| `requireTurnero()` | Corta si no tiene acceso al turnero |
|
|
|
|
### Reglas al agregar uno
|
|
|
|
1. **Verificá permisos en el propio endpoint.** Que la vista haya ocultado el botón no protege nada.
|
|
2. **Resolvé la identidad en el servidor.** Para saber quién hace una acción, usá `adminId()`, no un valor que mande el navegador.
|
|
3. **Consultas preparadas siempre.**
|
|
4. **Dejá un comentario de cabecera** describiendo qué hace y qué recibe: es lo que aparece en la tabla de abajo.
|
|
|
|
## Inventario
|
|
|
|
{{endpoints}}
|
|
|
|
## Endpoints fuera de módulos
|
|
|
|
`api/lab/` agrupa los del laboratorio de la generación anterior — domicilios, pacientes, formularios, configuración. Siguen las mismas convenciones y usan `api/lab/_helpers.php`.
|