Control de Asistencia (ZKTeco F22 → Odoo)¶
Servicio que sincroniza las marcaciones del reloj biométrico ZKTeco F22
hacia el modelo hr.attendance de Odoo.
| Campo | Valor |
|---|---|
| Propósito | Empujar las marcaciones de entrada/salida del reloj biométrico a Odoo, sin captura manual. |
| Tipo | Oficina |
| Repo | bavilasx/sync-f22 |
| Stack | Python 3.10+ · pyzk · APScheduler · XML-RPC |
| Ejecución | Servicio de Windows (NSSM) en la PC de oficina con acceso a la red del reloj |
| Programación | Cada interval_minutes (default 5 min) |
| Hardware | ZKTeco F22 en LAN, puerto TCP 4370 |
| Entornos y URLs | Sin URL propia. El destino lo define cada sección [odoo.<n>] de config.ini |
| Owner / líder técnico | por definir |
| Integra con | Odoo (modelo zk.attendance.import), reloj ZKTeco F22 |
| Estado | Activo |
Visión general¶
El servicio corre en segundo plano y, cada N minutos, descarga las marcaciones del día desde uno o varios relojes ZKTeco, determina la entrada y la salida de cada empleado y las envía por XML-RPC a una o varias instancias de Odoo en paralelo.
Cada corrida descarga desde la medianoche del día actual, no desde el watermark. Así se recalcula la jornada con el cuadro completo del día, porque la entrada y la salida normalmente llegan en corridas distintas. El watermark solo se conserva como registro del último punch procesado.
Para que un empleado sea reconocido, su ficha en hr.employee debe tener el
campo zk_user_id poblado.
Contenido de esta sección¶
Nuances / notas
- La fuente de verdad es el código. El
README.mddel repo describe un pipeline anterior (split_into_sessions,dedupe_seconds,session_gap_min) que ya no existe ensync.py. La lógica vigente esgroup_by_day()conexit_hour, documentada en Reglas de negocio. - El repo vive en una cuenta personal (
bavilasx), no en la organizaciónLegalys-Panama. Conviene migrarlo. - Toda la configuración se lee al arrancar: cambiar
config.iniexige reiniciar el servicio. - El reloj no tiene IP fija. Al reiniciarse toma otra IP por DHCP y el servicio pierde la conexión hasta que se corrige a mano. La reserva DHCP está pendiente — ver Troubleshooting.