hr-reportes-api
Plataforma de reporting HR servida en reporte.matizal.com. Sustituyó al antiguo hr.reportes (eliminado 2026-04-11) el 2026-04-08.
Resumen
- Dominio: reporte.matizal.com
- Aliases: reportes.matizal.com, analitica.matizal.com
- Repo: PedroFenixia/hr-reportes-api
- Path local:
/Users/pedrosanchez/DEV/hr-reportes-api - VPS:
91.134.43.229puerto8500 - Estado: Producción
Stack
- Backend: FastAPI + Python 3.11 + Docker
- Frontend: SPA (sirve estáticos + endpoints internos)
- BD: SQLite local (10 tablas
rpt_*) + sync viasync_db.py
Tabs
Dashboard · Por Empleado / Cliente / Proyecto · Fichajes (Factorial + Kronos) · Ausencias · Vacaciones · Compensación · Actividad · Apps IA · Rentabilidad · Costes personal · Nóminas · Auditoría · Usuarios · Permisos.
Rentabilidad
- Turno Mercado
- Licencias Elec / Gas
- Implantación Elec / Gas
- Backoffice Elec / Gas con modelo intercompañía ZT → NEUR y PVP histórico
Endpoints internos
Consumidos por Finanzas con X-Internal-Token:
/api/internal/hours-by-year/api/internal/personal-cost-monthly— nómina real por empresa y mes/api/internal/hours-monthly— Factorial fichadas + JIRA totales por empresa y mes/api/internal/employees-by-company— empleados agrupados por grupos JIRA (NEUR = "NEURO para reportes" + turno_mercado, ZT = "ZT para reportes")
Endpoints públicos
/api/groups— CRUD grupos para gestión UI desde Admin. Los 6 grupos JIRA de sistema (*para reportes*) quedan read-only.
Sync resiliente
Desde 2026-05-01: cada fuente aislada, fallo en una NO aborta las demás. Desbloqueó Insightful tras 15 días sin datos.
- Columna
Employee.source: factorial / jira / kronos / manual - CRUD UI empleados manuales con baja/restore (preparación para Factorial+Kronos OFF)
- Import CSV masivo (upsert por email/factorial_id)
- Banner de frescura de datos en Fichajes/Ausencias/Vacaciones/Compensación
- Fix matcher empleados (FactorialDocument no se movía al consolidar duplicados)
- Fix informe AYF (incluye TODAS las horas JIRA del grupo, no solo
project_key=AYF/FIN) - Filtro Cliente Global en tab Por Empleado JIRA
Bind mounts
⚠️ El container usa bind mounts a /home/debian/hr-reportes-api-custom/. No editar ahí manualmente — siempre push + redeploy.
Generación de informes
report_hours.py genera HTML autocontenido con JS/CSS y datos JSON embebidos. Usa f-strings de Python con llaves dobles {{ para JS. Soporta _schedule_overrides con day_hours para correcciones por día de semana.
Pendientes
- Costes salarios (Factorial no expone, vía Kronos cuando vuelva)
- Saldo negativo Isabel
- Informe AYF (verificación)
- Recheck API Dashboard Zataca el 2026-05-01 (bloqueado por bugs API a 2026-04-28)
Dependencias
- Fenix Finanzas — consume
/api/internal/* - app-neurofactu — consume
/api/reports/billing-by-family - Factorial API + Kronos + JIRA + Insightful (sync)