Pavanupadhyay27 commited on
Commit
dbbe05a
·
1 Parent(s): 4083163

Add FORCE_MOCK_MODE to solve Render 502 OOM crash and support functional mock-mode kiosk scans

Browse files
backend/.env CHANGED
@@ -17,6 +17,7 @@ INITIAL_ADMIN_PASSWORD="Admin@NetraID2026"
17
 
18
  KIOSK_FACE_THRESHOLD=0.60
19
  KIOSK_LIVENESS_THRESHOLD=0.75
 
20
 
21
  UPLOAD_DIR="./uploads"
22
  MODELS_DIR="./models"
 
17
 
18
  KIOSK_FACE_THRESHOLD=0.60
19
  KIOSK_LIVENESS_THRESHOLD=0.75
20
+ FORCE_MOCK_MODE=false
21
 
22
  UPLOAD_DIR="./uploads"
23
  MODELS_DIR="./models"
backend/.env.example CHANGED
@@ -19,6 +19,7 @@ INITIAL_ADMIN_PASSWORD="Admin@NetraID2026"
19
  # Kiosk & AI Parameters
20
  KIOSK_FACE_THRESHOLD=0.60
21
  KIOSK_LIVENESS_THRESHOLD=0.75
 
22
 
23
  # Folders for Assets
24
  UPLOAD_DIR="./uploads"
 
19
  # Kiosk & AI Parameters
20
  KIOSK_FACE_THRESHOLD=0.60
21
  KIOSK_LIVENESS_THRESHOLD=0.75
22
+ FORCE_MOCK_MODE=false
23
 
24
  # Folders for Assets
25
  UPLOAD_DIR="./uploads"
backend/app/core/config.py CHANGED
@@ -23,6 +23,7 @@ class Settings(BaseSettings):
23
  # Face recognition & liveness detection parameters
24
  KIOSK_FACE_THRESHOLD: float = 0.60
25
  KIOSK_LIVENESS_THRESHOLD: float = 0.75
 
26
 
27
  # Paths
28
  UPLOAD_DIR: str = "./uploads"
 
23
  # Face recognition & liveness detection parameters
24
  KIOSK_FACE_THRESHOLD: float = 0.60
25
  KIOSK_LIVENESS_THRESHOLD: float = 0.75
26
+ FORCE_MOCK_MODE: bool = False
27
 
28
  # Paths
29
  UPLOAD_DIR: str = "./uploads"
backend/app/services/face_engine.py CHANGED
@@ -24,6 +24,12 @@ class FaceEngine:
24
  self.liveness_model_27 = os.path.join(self.models_dir, "2.7k_80x80.onnx")
25
  self.liveness_model_18 = os.path.join(self.models_dir, "1.8k_128x128.onnx")
26
 
 
 
 
 
 
 
27
  # Check if ORT is available
28
  if ort is None:
29
  logger.warning("onnxruntime is not installed. Running in MOCK MODE.")
@@ -456,6 +462,10 @@ class FaceEngine:
456
  Computes cosine similarity between two 512-D embeddings.
457
  Since they are L2-normalized, cosine similarity is just the dot product.
458
  """
 
 
 
 
459
  return float(np.dot(embedding1, embedding2))
460
 
461
  def load_embeddings_cache(self, db_session):
 
24
  self.liveness_model_27 = os.path.join(self.models_dir, "2.7k_80x80.onnx")
25
  self.liveness_model_18 = os.path.join(self.models_dir, "1.8k_128x128.onnx")
26
 
27
+ # Check if mock mode is forced configurationally (for low-RAM server environments like Render Free Tier)
28
+ if getattr(settings, "FORCE_MOCK_MODE", False):
29
+ logger.info("FORCE_MOCK_MODE is enabled. Running in MOCK MODE.")
30
+ self.mock_mode = True
31
+ return
32
+
33
  # Check if ORT is available
34
  if ort is None:
35
  logger.warning("onnxruntime is not installed. Running in MOCK MODE.")
 
462
  Computes cosine similarity between two 512-D embeddings.
463
  Since they are L2-normalized, cosine similarity is just the dot product.
464
  """
465
+ if self.mock_mode:
466
+ # For demonstration purposes on low-RAM server mock mode, return a high matching score
467
+ # to make the kiosk match the first registered user successfully.
468
+ return 0.85
469
  return float(np.dot(embedding1, embedding2))
470
 
471
  def load_embeddings_cache(self, db_session):