# st-tapasvi/biometric_integration architecture

> Architecture diagram of the GitHub repository st-tapasvi/biometric_integration, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/st-tapasvi/biometric_integration
- Repository: https://github.com/st-tapasvi/biometric_integration

## Overview

Biometric Integration is a Frappe/ERPNext HR app for ingesting Hikvision and mobile attendance events, preserving movement history, and reconciling punches into standard Employee Checkins. The core documented flow is device or mobile input through synchronization, movement records, and shift-aware reconciliation; manual checkins are protected. Separate capabilities cover device and employee enrollment, access restrictions, alerts, health, and HR reports. The README establishes the shared pipeline and product features; sampled sources are limited, so unsampled subsystem wiring is represented only where documented, and legacy CSV and disabled reports are excluded.

Main entry points: [`biometric_integration/biometric_integration/movement.py`](https://github.com/st-tapasvi/biometric_integration/blob/main/biometric_integration/biometric_integration/movement.py) (Movement tracking), [`biometric_integration/biometric_integration/doctype/biometric_device/biometric_device.py`](https://github.com/st-tapasvi/biometric_integration/blob/main/biometric_integration/biometric_integration/doctype/biometric_device/biometric_device.py) (Biometric device), [`biometric_integration/biometric_integration/biometric_enrollment.py`](https://github.com/st-tapasvi/biometric_integration/blob/main/biometric_integration/biometric_integration/biometric_enrollment.py) (Biometric enrollment), [`biometric_integration/biometric_integration/access_control.py`](https://github.com/st-tapasvi/biometric_integration/blob/main/biometric_integration/biometric_integration/access_control.py) (Access control)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ingest["Capture And Sync"]
  node_device_sync["Device sync<br/>[device_sync.py]"]
  node_mobile_api["Mobile API<br/>[mobile_api.py]"]
end

subgraph group_attendance["Attendance Processing"]
  node_movement["Movement tracking<br/>[movement.py]"]
  node_movement_store[("Employee Movement")]
  node_daily_logs[("Daily Movement Log")]
  node_reconciliation["Shift reconciliation<br/>[reconciliation.py]"]
  node_checkin_hooks["Checkin safeguards<br/>[checkin_hooks.py]"]
end

subgraph group_devices["Device Management"]
  node_settings[("Integration settings")]
  node_device["Biometric device"]
  node_employee_sync["Employee sync<br/>[employee_sync.py]"]
  node_enrollment["Biometric enrollment"]
  node_access["Access control<br/>[access_control.py]"]
  node_anti_passback["Anti-passback<br/>[anti_passback.py]"]
  node_bulk_ops["Bulk operations<br/>[bulk_operations.py]"]
  node_device_health["Device health<br/>[device_health.py]"]
  node_audit_log[("Biometric audit log")]
end

subgraph group_insights["HR Access And Reports"]
  node_alerts["Attendance alerts"]
  node_reports["Attendance reports"]
  node_leave_report["Leave report"]
  node_access_report["My biometric access"]
end

node_hikvision(("Hikvision terminals"))
node_mobile_users(("Mobile clients"))
node_erp_checkin[("Employee Checkin")]
node_employee[("ERPNext Employee")]

node_hikvision -->|"sends punches"| node_device_sync
node_device_sync -->|"records movement"| node_movement
node_mobile_users -->|"submits punches"| node_mobile_api
node_mobile_api -->|"records movement"| node_movement
node_movement -->|"stores history"| node_movement_store
node_movement -->|"stores daily totals"| node_daily_logs
node_movement -->|"reconciles punches"| node_reconciliation
node_reconciliation -->|"creates checkins"| node_erp_checkin
node_checkin_hooks -->|"flags manual edits"| node_erp_checkin
node_settings -->|"configures devices"| node_device
node_employee_sync -->|"reads employee"| node_employee
node_employee_sync -->|"syncs employee"| node_device
node_enrollment -->|"reads employee"| node_employee
node_enrollment -->|"enrolls biometrics"| node_device
node_access -->|"checks permissions"| node_employee
node_access -->|"enforces restrictions"| node_device
node_anti_passback -->|"checks movement"| node_movement
node_bulk_ops -->|"runs bulk actions"| node_device
node_device_health -->|"checks status"| node_device
node_alerts -->|"checks attendance"| node_erp_checkin
node_reports -->|"reads history"| node_movement_store
node_leave_report -->|"joins leave data"| node_employee
node_access_report -->|"gets access summary"| node_access
node_access_report -->|"checks enrollment"| node_enrollment

click node_device_sync "https://github.com/st-tapasvi/biometric_integration/blob/main/biometric_integration/biometric_integration/device_sync.py"
click node_mobile_api "https://github.com/st-tapasvi/biometric_integration/blob/main/biometric_integration/biometric_integration/mobile_api.py"
click node_movement "https://github.com/st-tapasvi/biometric_integration/blob/main/biometric_integration/biometric_integration/movement.py"
click node_movement_store "https://github.com/st-tapasvi/biometric_integration/blob/main/biometric_integration/biometric_integration/doctype/employee_movement/employee_movement.py"
click node_daily_logs "https://github.com/st-tapasvi/biometric_integration/blob/main/biometric_integration/biometric_integration/doctype/daily_movement_log/daily_movement_log.py"
click node_reconciliation "https://github.com/st-tapasvi/biometric_integration/blob/main/biometric_integration/biometric_integration/reconciliation.py"
click node_checkin_hooks "https://github.com/st-tapasvi/biometric_integration/blob/main/biometric_integration/biometric_integration/checkin_hooks.py"
click node_settings "https://github.com/st-tapasvi/biometric_integration/blob/main/biometric_integration/biometric_integration/doctype/biometric_integration_settings/biometric_integration_settings.py"
click node_device "https://github.com/st-tapasvi/biometric_integration/blob/main/biometric_integration/biometric_integration/doctype/biometric_device/biometric_device.py"
click node_employee_sync "https://github.com/st-tapasvi/biometric_integration/blob/main/biometric_integration/biometric_integration/employee_sync.py"
click node_enrollment "https://github.com/st-tapasvi/biometric_integration/blob/main/biometric_integration/biometric_integration/biometric_enrollment.py"
click node_access "https://github.com/st-tapasvi/biometric_integration/blob/main/biometric_integration/biometric_integration/access_control.py"
click node_anti_passback "https://github.com/st-tapasvi/biometric_integration/blob/main/biometric_integration/biometric_integration/anti_passback.py"
click node_bulk_ops "https://github.com/st-tapasvi/biometric_integration/blob/main/biometric_integration/biometric_integration/bulk_operations.py"
click node_device_health "https://github.com/st-tapasvi/biometric_integration/blob/main/biometric_integration/biometric_integration/device_health.py"
click node_audit_log "https://github.com/st-tapasvi/biometric_integration/blob/main/biometric_integration/biometric_integration/doctype/biometric_audit_log/biometric_audit_log.py"
click node_alerts "https://github.com/st-tapasvi/biometric_integration/blob/main/biometric_integration/biometric_integration/attendance_alerts.py"
click node_reports "https://github.com/st-tapasvi/biometric_integration/tree/main/biometric_integration/biometric_integration/report"
click node_leave_report "https://github.com/st-tapasvi/biometric_integration/blob/main/biometric_integration/biometric_integration/report/biometric_leave_report/biometric_leave_report.py"
click node_access_report "https://github.com/st-tapasvi/biometric_integration/blob/main/biometric_integration/biometric_integration/report/my_biometric_access/my_biometric_access.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_device_sync,node_mobile_api,node_mobile_users toneBlue
class node_movement,node_movement_store,node_daily_logs,node_reconciliation,node_checkin_hooks,node_erp_checkin,node_employee toneAmber
class node_settings,node_device,node_employee_sync,node_enrollment,node_access,node_anti_passback,node_bulk_ops,node_device_health,node_audit_log toneMint
class node_alerts,node_reports,node_leave_report,node_access_report toneRose
class node_hikvision toneIndigo
```

## Components

### Capture And Sync

- [Device sync](https://github.com/st-tapasvi/biometric_integration/blob/main/biometric_integration/biometric_integration/device_sync.py): `biometric_integration/biometric_integration/device_sync.py`
- [Mobile API](https://github.com/st-tapasvi/biometric_integration/blob/main/biometric_integration/biometric_integration/mobile_api.py): `biometric_integration/biometric_integration/mobile_api.py`

### Attendance Processing

- [Movement tracking](https://github.com/st-tapasvi/biometric_integration/blob/main/biometric_integration/biometric_integration/movement.py): `biometric_integration/biometric_integration/movement.py`
- [Employee Movement](https://github.com/st-tapasvi/biometric_integration/blob/main/biometric_integration/biometric_integration/doctype/employee_movement/employee_movement.py): `biometric_integration/biometric_integration/doctype/employee_movement/employee_movement.py`
- [Daily Movement Log](https://github.com/st-tapasvi/biometric_integration/blob/main/biometric_integration/biometric_integration/doctype/daily_movement_log/daily_movement_log.py): `biometric_integration/biometric_integration/doctype/daily_movement_log/daily_movement_log.py`
- [Shift reconciliation](https://github.com/st-tapasvi/biometric_integration/blob/main/biometric_integration/biometric_integration/reconciliation.py): `biometric_integration/biometric_integration/reconciliation.py`
- [Checkin safeguards](https://github.com/st-tapasvi/biometric_integration/blob/main/biometric_integration/biometric_integration/checkin_hooks.py): `biometric_integration/biometric_integration/checkin_hooks.py`

### Device Management

- [Integration settings](https://github.com/st-tapasvi/biometric_integration/blob/main/biometric_integration/biometric_integration/doctype/biometric_integration_settings/biometric_integration_settings.py): `biometric_integration/biometric_integration/doctype/biometric_integration_settings/biometric_integration_settings.py`
- [Biometric device](https://github.com/st-tapasvi/biometric_integration/blob/main/biometric_integration/biometric_integration/doctype/biometric_device/biometric_device.py): `biometric_integration/biometric_integration/doctype/biometric_device/biometric_device.py`
- [Employee sync](https://github.com/st-tapasvi/biometric_integration/blob/main/biometric_integration/biometric_integration/employee_sync.py): `biometric_integration/biometric_integration/employee_sync.py`
- [Biometric enrollment](https://github.com/st-tapasvi/biometric_integration/blob/main/biometric_integration/biometric_integration/biometric_enrollment.py): `biometric_integration/biometric_integration/biometric_enrollment.py`
- [Access control](https://github.com/st-tapasvi/biometric_integration/blob/main/biometric_integration/biometric_integration/access_control.py): `biometric_integration/biometric_integration/access_control.py`
- [Anti-passback](https://github.com/st-tapasvi/biometric_integration/blob/main/biometric_integration/biometric_integration/anti_passback.py): `biometric_integration/biometric_integration/anti_passback.py`
- [Bulk operations](https://github.com/st-tapasvi/biometric_integration/blob/main/biometric_integration/biometric_integration/bulk_operations.py): `biometric_integration/biometric_integration/bulk_operations.py`
- [Device health](https://github.com/st-tapasvi/biometric_integration/blob/main/biometric_integration/biometric_integration/device_health.py): `biometric_integration/biometric_integration/device_health.py`
- [Biometric audit log](https://github.com/st-tapasvi/biometric_integration/blob/main/biometric_integration/biometric_integration/doctype/biometric_audit_log/biometric_audit_log.py): `biometric_integration/biometric_integration/doctype/biometric_audit_log/biometric_audit_log.py`

### HR Access And Reports

- [Attendance alerts](https://github.com/st-tapasvi/biometric_integration/blob/main/biometric_integration/biometric_integration/attendance_alerts.py): `biometric_integration/biometric_integration/attendance_alerts.py`
- [Attendance reports](https://github.com/st-tapasvi/biometric_integration/tree/main/biometric_integration/biometric_integration/report): `biometric_integration/biometric_integration/report`
- [Leave report](https://github.com/st-tapasvi/biometric_integration/blob/main/biometric_integration/biometric_integration/report/biometric_leave_report/biometric_leave_report.py): `biometric_integration/biometric_integration/report/biometric_leave_report/biometric_leave_report.py`
- [My biometric access](https://github.com/st-tapasvi/biometric_integration/blob/main/biometric_integration/biometric_integration/report/my_biometric_access/my_biometric_access.py): `biometric_integration/biometric_integration/report/my_biometric_access/my_biometric_access.py`

### Other components

- **Hikvision terminals**
- **Mobile clients**
- **Employee Checkin**
- **ERPNext Employee**

## Connections

- Hikvision terminals → Device sync: sends punches
- Device sync → Movement tracking: records movement
- Mobile clients → Mobile API: submits punches
- Mobile API → Movement tracking: records movement
- Movement tracking → Employee Movement: stores history
- Movement tracking → Daily Movement Log: stores daily totals
- Movement tracking → Shift reconciliation: reconciles punches
- Shift reconciliation → Employee Checkin: creates checkins
- Checkin safeguards → Employee Checkin: flags manual edits
- Integration settings → Biometric device: configures devices
- Employee sync → ERPNext Employee: reads employee
- Employee sync → Biometric device: syncs employee
- Biometric enrollment → ERPNext Employee: reads employee
- Biometric enrollment → Biometric device: enrolls biometrics
- Access control → ERPNext Employee: checks permissions
- Access control → Biometric device: enforces restrictions
- Anti-passback → Movement tracking: checks movement
- Bulk operations → Biometric device: runs bulk actions
- Device health → Biometric device: checks status
- Attendance alerts → Employee Checkin: checks attendance
- Attendance reports → Employee Movement: reads history
- Leave report → ERPNext Employee: joins leave data
- My biometric access → Access control: gets access summary
- My biometric access → Biometric enrollment: checks enrollment
