import os import base64 import datetime import requests from dotenv import load_dotenv load_dotenv() HOST = os.getenv("MS_HOST", "http://10.20.2.26:3002") def sync_checkin(email: str, timestamp_ms: int, image_data: bytes, student_name: str, status: str): today = datetime.datetime.now().strftime("%Y_%m_%d") folder_path = f"./images/{today}" os.makedirs(folder_path, exist_ok=True) safe_student = "".join(c for c in student_name if c.isalnum() or c in ("-", "_")) safe_status = "".join(c for c in status if c.isalnum() or c in ("-", "_")) ts_str = datetime.datetime.now().strftime("%Y_%m_%d_%H_%M_%S") file_path = os.path.join(folder_path, f"{safe_student}_{safe_status}_at_{ts_str}.png") with open(file_path, "wb") as f: f.write(image_data) image_b64 = "data:image/jpeg;base64," + base64.b64encode(image_data).decode("utf-8") payload = { "email": email, "time": timestamp_ms, "image": image_b64, } try: response = requests.post(HOST + "/api/log-time/check-in-out", json=payload) response.raise_for_status() res = response.json() print("[sync_checkin] response:", res) return res except Exception as e: print("[sync_checkin] failed:", e) return {}