Face scan: gerak (motion) ikut jadi sinyal penerimaan — praktis di kamera HP; foto diam tetap tertolak; auto-accept tidak lagi bergantung landmarker

This commit is contained in:
Novy San87
2026-08-05 18:09:10 +07:00
parent 28432a7999
commit 1ed6fb43f1
2 changed files with 8 additions and 7 deletions
+4 -4
View File
@@ -231,11 +231,11 @@ function processMotion(box) {
prevFaceGray = gray; prevFaceGray = gray;
} }
/** Jumlah sinyal PENGGUNA UNTUK PENERIMAAN (strong signals): kedip + senyum. /** Jumlah sinyal PENGGUNA UNTUK PENERIMAAN: kedip + senyum + gerak.
* Depth & motion TIDAK dipakai menerima (foto yang dipegang ikut bergerak; * Motion ikut menerima — praktis utk kamera HP (landmarker kadang lambat/off).
* ambang depth perlu kalibrasi lapangan) — hanya info di tracker. */ * Foto DIAM tetap tertolak (tidak ada motion). */
function signalCount() { function signalCount() {
return [blinks > 0, smileSeen].filter(Boolean).length; return [blinks > 0, smileSeen, motionSeen].filter(Boolean).length;
} }
async function tick(detector) { async function tick(detector) {
+4 -3
View File
@@ -600,12 +600,13 @@ function faceScan() {
_maybeFinishAuto(d) { _maybeFinishAuto(d) {
const loop = window.__faceLoop; const loop = window.__faceLoop;
// Penerimaan: kedip / senyum (sinyal kuat). Depth & motion hanya info (foto dipegang ikut bergerak) // Penerimaan: kedip / senyum / gerak (sinyal apa pun yang lolos — gerak
if (loop && loop.livenessAvailable && loop.signalCount > 0) { // ikut menerima agar praktis di kamera HP; foto diam tetap tertolak).
if (loop && loop.signalCount > 0) {
this._finishAuto(d); this._finishAuto(d);
return; return;
} }
// Mesin liveness tidak aktif → jangan auto-accept; wajib konfirmasi staff // Mesin liveness tidak aktif & tanpa sinyal → wajib konfirmasi staff
if (loop && !loop.livenessAvailable) { if (loop && !loop.livenessAvailable) {
this.livenessWarn = true; this.livenessWarn = true;
this._finishAuto(d); this._finishAuto(d);