SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: NO)SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: NO)
La base de datos está vacía. Ejecuta las migraciones en orden (001 → última) para crear las tablas y sembrar el super admin (superadmin / SuperAdmin-2026!, cámbialo después). La 000_creacion_db.sql se salta (la base ya existe).
Instalar — ejecutar las 15 en orden| # | Migración | Contenido | Ejecución | |
|---|---|---|---|---|
| 1 | 000_creacion_db.sql |
CREACION
base de datos END CREACION |
Pendiente | Ejecutar |
| 2 | 001_empresas.sql |
CREACION
tabla empresas -- tenants del SaaS. Cada empresa opera aislada; el super admin las crea. END CREACION |
Pendiente | Ejecutar |
| 3 | 002_usuarios.sql |
CREACION
tabla usuarios -- roles WEB (super admin, admin de empresa, supervisor). Los colaboradores (app movil) tienen su propia tabla `colaboradores` (Fase 1). |
Pendiente | Ejecutar |
| 4 | 003_zonas.sql |
CREACION
tabla zonas -- rotulo organizativo del colaborador (Norte/Sur/Este/Centro), por empresa. NO es geocerca (ver modulos.md §2b). Solo agrupa/filtra reportes. |
Pendiente | Ejecutar |
| 5 | 004_personal_unificado.sql |
CREACION
Personal unificado: dentro de una empresa NO hay tablas separadas por rol. Todo el personal (administrador, supervisor, colaborador) vive en `usuarios`, con un `rol` y campos de RRHH |
Pendiente | Ejecutar |
| 6 | 005_supervisor_zona.sql |
CREACION
tabla supervisor_zona -- asignación de zonas a un supervisor (muchos a muchos). Al supervisor se le asignan una o varias zonas y ve a los colaboradores de esas zonas (no hay vínculo |
Pendiente | Ejecutar |
| 7 | 006_zona_sin_zona.sql |
CREACION
Cada empresa nace con una zona "Sin Zona": todo colaborador que se cree sin zona explícita queda en ella (no puede haber colaborador sin zona). La zona "Sin Zona" es protegida -- no se |
Pendiente | Ejecutar |
| 8 | 007_fase2_puntos_rutas.sql |
CREACION
Fase 2 -- Puntos + Rutas planificadas. - `empresas.aprobacion_ruta`: quién aprueba la ruta que planifica quien va a calle. |
Pendiente | Ejecutar |
| 9 | 008_aprobacion_ruta_por_persona.sql |
CREACION
Configuración de rutas/marcación por empresa + aprobación de ruta POR PERSONA. - `empresas.aprobacion_ruta` = valor con el que NACE cada nuevo usuario; |
Pendiente | Ejecutar |
| 10 | 009_plantillas_ruta.sql |
CREACION
Plantillas de ruta -- POR PERSONA (`usuario_id`, como los puntos). Guardan un conjunto de puntos habituales ("Lunes zona centro", "Clientes A"); al cargar una plantilla en "Mi ruta de |
Pendiente | Ejecutar |
| 11 | 010_marcas.sql |
CREACION
Fase 3 -- Marcación. El corazón del sistema: cada visita deja una `marca` (hora del SERVIDOR + GPS del navegador). **Una fila por marca, nunca se actualiza.** Sin límite por día. Se puede |
Pendiente | Ejecutar |
| 12 | 011_reconocimiento_facial.sql |
CREACION
Reconocimiento facial en la marcación (patrón de MiJornada). El navegador extrae con face-api.js un descriptor de 128 floats en vivo de la cámara; la comparación (distancia |
Pendiente | Ejecutar |
| 13 | 012_token_acceso.sql |
CREACION
Link de acceso rápido para el colaborador. Un token largo por usuario; abrir `acceso/ir/<token>` inicia su sesión y lo deja directo en "Marcar". Pensado para pegarlo en el |
Pendiente | Ejecutar |
| 14 | 013_login_por_empresa.sql |
CREACION
Login por EMPRESA: el formulario pide RUC de la empresa + usuario + contraseña (el super admin entra por una pantalla aparte, sin empresa). Con eso el `usuario` (= documento) deja de tener |
Pendiente | Ejecutar |
| 15 | 014_ubigeo.sql |
CREACION
Catalogo de ubigeo (INEI) -- departamentos / provincias / distritos del Peru. Reusado del ERP (erp_mafort.ttubic_geog); se corrigio la N-tilde que en el ERP estaba como 'Q'. codigo = 6 |
Pendiente | Ejecutar |
| 16 | 015_puntos_catalogo.sql |
CREACION
Fase 2 del catalogo de puntos (decision Ytalo 2026-09-05): - `puntos.aprobacion`: los puntos que crea el admin nacen 'aprobado'; los que PROPONE un |
Pendiente | Ejecutar |