Skip to content

feat(rh/entrevistas-ajuste): alta manual sin Buk, tablas en db_rh, mirrors...

Jose Luis Flores requested to merge recursos-humanos into qa

feat(rh/entrevistas-ajuste): alta manual sin Buk, tablas en db_rh, mirrors ref_* y PDF institucional

Modulo operable de punta a punta (RH confirmo que vive en el portal; Buk sigue en implementacion y queda deliberadamente fuera):

Backend

  • Tablas entrevistas_ajuste(+respuestas) MUDADAS a db_rh; DDL idempotente en ensure_rh_schema, router reescrito a SQL crudo (convencion del dominio), modelo ORM eliminado; constantes puras en services/entrevistas_ajuste_defs.
  • Alta manual: columna razon_social + endpoint catalogo-empresas (tipos fiscal/contabilidad, dedup por RFC) + endpoint de listado. Se elimina el endpoint de pendientes y toda lectura de colaboradores_rl.
  • Mirrors ref_empresa/ref_portafolio/ref_razon_social en db_rh (mismo diseno que juridico) + reconcile al boot y endpoint manual de reconcile; el selector lee del mirror.
  • Fechas POR FORMATO (obs. del area: el del jefe se agenda aparte o ni se hace): fecha_aplicacion_jefe NULL=pendiente; "aplicada" solo exige el formato del colaborador; KPI jefe_pendientes.
  • KPI honesto: puntualidad_pct de las aplicadas (sin universo de ingresos no existe denominador para "cumplimiento" - evita el falso 100%).

Frontend (portal_rh)

  • FIX CRITICO: front y backend usaban claves distintas (col_obj_generales vs col_obj_1, exc vs excelente, completada vs aplicada, payload anidado vs plano) - TODO guardado respondia 422; el modulo nunca habia podido guardar.
  • El panel es dueno del estado de AMBOS formatos (el PUT reemplaza el set completo: guardar una pestana borraba la otra).
  • Captura manual completa + selector buscable de razon social + tag "falta jefe" + dashboard con indicadores en blanco (los define el area).
  • SignaturePad: el trazo rapido no se emitia (estado async), no rehidrataba al editar y se cruzaba entre pestanas - firmas ahora persisten y repintan.
  • PDF: plantilla institucional D renderizada DESDE DATOS (una hoja, dos columnas, ambos formatos siempre), folio EA-anio-id, logo y verde CAABSA, firma de Atraccion con el nombre de quien aplica (match por aplicada_por), vista previa en pestana con Imprimir / Guardar como PDF (antes: popup con print() automatico que congelaba la app y encolaba dos dialogos).
  • Modal de captura: scroll interno (el header sticky dejaba hueco arriba).
  • Mockups A-D del PDF + logo horizontal en public/.

Merge request reports

Loading