Registro de versiones del sistema de asistencia, con los cambios funcionales, técnicos y los artefactos publicados en cada release.
| Versión | Fecha | Hito principal |
|---|---|---|
| v0.1.0 | 2026-09-15 | MVP: login + check-in/out georreferenciado con anti-spoofing |
| v0.2.0 | 2026-09-17 | Historial de asistencias + biométrico automático sin botón |
| v0.2.1 | 2026-09-17 | Fix biometría (FragmentActivity) + auto-refresh de token JWT |
| v0.2.2 | 2026-09-17 | Fix cuelgue en arranque (secure storage corrupto) |
| v0.3.0 | 2026-09-18 | Selección Entrada/Salida + logo INT + workflow de aprobación |
| v0.3.1 | 2026-09-18 | Backend de aprobaciones + panel admin React + badge “pendiente” |
| v0.3.1 (registro) | 2026-09-21 | Registro autoservicio por email + contraseña |
| (plan) | 2026-09-22 | Plan de integración con Odoo (hr.attendance) — solo
plan |
Versión actual: 0.3.1+6
(mobile/pubspec.yaml).
Primera versión funcional desplegada en producción.
AuthGate → LoginScreen → HomeScreen), check-in/out con
GPS, anti-spoofing en dos capas (detección mock/root/jailbreak),
geocercas PostGIS, autoridad de tiempo NTP en el servidor.db/000_schema.sql +
001_immutability.sql (triggers) + 002_seed.sql
(10 empleados ficticios, 3 sitios: CDMX / Monterrey / GDL).ia-asistencia.service, uvicorn :8095, PostGIS
Docker :5433, nginx).com.intt2hub.asistencia_geo,
minSdk efectivo 24.HistoryScreen (consume
GET /attendance/me).local_auth
automático al abrir (huella/rostro), deduce Entrada/Salida según sesión
abierta; fallback a botón si no hay biometría.version de
0.1.0+1 a 0.2.0+2 (versionCode correcto).MainActivity.kt pasa de
FlutterActivity a FlutterFragmentActivity
(requisito de local_auth en Android).AuthService.refresh() +
auto-refresh en 401 (ApiClient.onUnauthorized).flutter_secure_storage
corrupto tras reinstalar (BadPaddingException) →
AuthGate._check() sin try/catch dejaba
_loading=true para siempre.SecureStorage resiliente
(timeout(8s) + deleteAll + null →
login) y try/catch defensivo en AuthGate.#E08010.ProfileType.site/remote,
EmployeeSiteAssignment.valid_from/valid_until).attendance_approvals (enum
pending/approved/rejected); el check-in fuera de
zona/horario ya no bloquea, se guarda como
pending con motivo; services/geofence.py
devuelve (GeofenceStatus, site_id) sin lanzar./admin): assignments
CRUD, approvals (list/approve/reject con audit log), sites CRUD,
employees PATCH./panel.POST /auth/register (201):
crea User employee/remote, Argon2id, email
único (409), auto-login.INT_Asistencia_v0.3.1.apk (sin bump de
versión; misma 0.3.1).Ver PLAN_INTEGRACION_ODOO.md
y docs/05-odoo-integration.md.
El pipeline “salida” (Asistencia → hr.attendance) ya está
codificado (outbox odoo_sync +
odoo_client.py); falta schema de producción, custom fields
x_*, usuario API y activar el scheduler.
| Versión | APK (universal) | APK (arm64) | SHA-256 |
|---|---|---|---|
| v0.1.0 | asistencia-geo-v0.1.0.apk |
— | 92a9ffda… |
| v0.2.0 | asistencia-geo-v0.2.0.apk |
— | e0cf1bec… |
| v0.2.1 | asistencia-geo-v0.2.1.apk |
— | 9191fc9a… |
| v0.2.2 | asistencia-geo-v0.2.2.apk |
asistencia-geo-v0.2.2-arm64.apk |
dce240a9… |
| v0.3.0 | asistencia-geo-v0.3.0.apk |
asistencia-geo-v0.3.0-arm64.apk |
bba86727… / ed7c8d68… |
| v0.3.1 | asistencia-geo-v0.3.1.apk |
asistencia-geo-v0.3.1-arm64.apk |
3cd722d9… / 2ef59928… |
| v0.3.1 registro | INT_Asistencia_v0.3.1.apk |
INT_Asistencia_v0.3.1-arm64.apk |
ca6ff618… / a837b7e2… |
Los APK se publican en
https://www.intt2hub.com/ia/downloads/asistencia/<fecha>_vNNN/y el symlinklatestapunta al más reciente. El checksum completo está enentregas/asistencia-geo/SHA256SUMS.txt.