# glosario.md — Starter Kit RKM v6

## Entidades del dominio

| Término | Definición |
|---|---|
| **User** | Usuario del sistema. Campos: `name`, `email`, `password_hash`, `role`, `status`. Estado `1` = activo, `0` = inactivo. |
| **Role** | Rol de acceso (ej: `admin`, `user`). Guardado como string en `users.role`, no como FK. También existe la tabla `roles` para la gestión de permisos. |
| **Permission** | Permiso atómico con nombre descriptivo (ej: `users_manage`, `dashboard_view`). Se asocia a roles vía `role_permissions`. |
| **Notification** | Registro de un envío. Tiene `channel` (`internal`, `email`, `telegram`) y `status` (`sent`, `failed`). |
| **AuditLog** | Registro de acción del usuario: módulo, acción, descripción, IP, timestamp. Creado principalmente por el sync offline. |
| **MailQueue** | Fila de emails pendientes. Tabla existe; procesador no implementado. |
| **PasswordReset** | Token de recuperación de contraseña (64 hex chars). TTL 2 horas, se elimina tras su uso exitoso. |
| **Migration** | Archivo `.sql` en `/sql/` registrado en la tabla `migrations` para control de versión del schema. |

## Términos técnicos del kit

| Término | Definición |
|---|---|
| **Front Controller** | `public/index.php` — único punto de entrada HTTP. |
| **Router** | `app/core/Router.php` — mapea URL → Controller::método. |
| **Autoload** | `app/core/Autoload.php` — `spl_autoload_register` propio sin Composer. |
| **EventDispatcher** | Sistema pub/sub en memoria. Listeners se registran en `index.php` y se disparan desde servicios. |
| **SyncService** | Procesa payloads offline recibidos vía API. Deduplica por `uuid_offline` y escribe en `audit_logs`. |
| **CacheService** | Caché de archivos con `flock()`. Patrón `remember($key, $ttl, $fn)`. Prefijo `rkm_` en `/cache/`. |
| **MailService** | Wrapper de PHPMailer (si existe en `/vendor/phpmailer/`) o `mail()` nativo como fallback. |
| **NotificationService** | Orquesta el envío multicanal (internal / email / telegram). |
| **MigrationService** | Lee `.sql` de `/sql/`, los ejecuta en orden alfabético, registra en tabla `migrations`. |
| **ErrorHandler** | Captura excepciones, errores y fatales. Stack trace visible solo en localhost/127.0.0.1. |
| **installed.lock** | Archivo en `config/` que bloquea el acceso al instalador. Su ausencia redirige a `install.php`. |
| **config.local.php** | Override de credenciales de BD generado por el instalador. No versionar. |

## Siglas y abreviaturas

| Sigla | Significado |
|---|---|
| **PWA** | Progressive Web App — web instalable con manifest + service worker. |
| **SW** | Service Worker (`public/service-worker.js`). |
| **CSRF** | Cross-Site Request Forgery — token en sesión `$_SESSION['csrf']`, verificado en cada POST. |
| **TTL** | Time To Live — tiempo de vida de caché o tokens. |
| **MVC** | Model-View-Controller — patrón arquitectónico del kit. |
| **uuid_offline** | Identificador único generado en el cliente para deduplicar payloads de sync offline. |
| **RKM** | Nombre del starter kit. [PENDIENTE: confirmar expansión del acrónimo] |

## Permisos del sistema (seed inicial)

| Permiso | Roles con acceso por defecto |
|---|---|
| `dashboard_view` | admin, user |
| `notifications_view` | admin, user |
| `permissions_manage` | admin |
| `users_manage` | admin |
| `roles_manage` | admin |
| `migrations_manage` | admin |
