feat(fusion_clock): PIN kiosk — polished photo-tile + PIN clock (opt-in)
A proper shared-device PIN kiosk for clients who don't want NFC: photo-tile grid (+search) -> tap -> PIN (or first-use create) -> optional master-gated selfie -> clock, in the NFC kiosk's dark glass + brand-gradient style. Built as an Odoo 19 Interaction; new pin_kiosk.scss (scoped); reworked clock_kiosk.py (search +avatar/has_pin, verify_pin needs_setup, set_pin, clock via kiosk location). Drops the redundant kiosk_pin_required (PIN always required); relabels the company kiosk location; adds a PIN-kiosk app icon. Opt-in via enable_kiosk (off by default). HttpCase tests added. Bump 19.0.4.0.0. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -110,16 +110,23 @@ Location verification uses GPS when coordinates are available and geocoded locat
|
||||
|
||||
## 6. Kiosk And NFC
|
||||
|
||||
Classic kiosk:
|
||||
PIN kiosk (opt-in alternative to NFC; v19.0.4.0.0+):
|
||||
|
||||
- Page: `/fusion_clock/kiosk`
|
||||
- Page: `/fusion_clock/kiosk` — polished photo-tile → PIN flow (logo, brand-hue
|
||||
gradient, live clock), matching the NFC kiosk style; built as an Odoo 19
|
||||
Interaction (`#pin_kiosk_root`, `static/src/js/fusion_clock_kiosk.js`,
|
||||
`static/src/scss/pin_kiosk.scss`, brand-hue var `--pk-h`).
|
||||
- JSON routes:
|
||||
- `/fusion_clock/kiosk/search`
|
||||
- `/fusion_clock/kiosk/verify_pin`
|
||||
- `/fusion_clock/kiosk/clock`
|
||||
- Requires `fusion_clock.group_fusion_clock_manager`.
|
||||
- Controlled by `fusion_clock.enable_kiosk` and `fusion_clock.kiosk_pin_required`.
|
||||
- Uses `hr.employee.x_fclk_kiosk_pin`.
|
||||
- `/fusion_clock/kiosk/search` (grid rows: +`avatar_url`, +`has_pin`; also used by the NFC kiosk's employee_search — keep additive)
|
||||
- `/fusion_clock/kiosk/verify_pin` (returns `needs_setup` when the employee has no PIN)
|
||||
- `/fusion_clock/kiosk/set_pin` (first-use PIN creation, 4–6 digits)
|
||||
- `/fusion_clock/kiosk/clock` (uses the company kiosk location, no GPS geofence; optional master-gated selfie)
|
||||
- Requires `group_fusion_clock_manager` or `group_fusion_clock_kiosk_app`; has its own app icon.
|
||||
- Opt-in via `fusion_clock.enable_kiosk`. PIN is ALWAYS required (the old
|
||||
`kiosk_pin_required` setting was removed). Selfie capture is gated by the
|
||||
master `fusion_clock.enable_photo_verification`. Kiosk location =
|
||||
`res.company.x_fclk_nfc_kiosk_location_id` (shared with the NFC kiosk).
|
||||
- Uses `hr.employee.x_fclk_kiosk_pin` (manager-editable; created on first tap otherwise).
|
||||
|
||||
NFC kiosk:
|
||||
|
||||
@@ -264,7 +271,6 @@ fusion_clock.enable_ip_fallback
|
||||
fusion_clock.enable_photo_verification
|
||||
fusion_clock.google_maps_api_key
|
||||
fusion_clock.enable_kiosk
|
||||
fusion_clock.kiosk_pin_required
|
||||
fusion_clock.enable_correction_requests
|
||||
fusion_clock.enable_sounds
|
||||
fusion_clock.pay_period_type
|
||||
|
||||
Reference in New Issue
Block a user