Extend HRMS RFID lookup to include uind_serial, function_id, department_id, created_by, and tag created timestamp
Persist new tag fields + meal session code in SQLite scan records; auto-migrate schema and drop deprecated EmployeeDbId column
Enforce “once per meal session per local day” scan rule (keep short per-card debounce; remove global cooldown)
Enhance sync: insert scans into production lunch_order_transactions (MySqlConnectionString) and into HRMS/local lunch_order (HrmsLookupConnectionString) with duplicate guard; include location_site_id from SQLite SiteId
Add EmployeePhotoService to load and decode hrms.employee_photo blobs (data URI or raw bytes) using parent_document_id
Wire ScannerDashboardViewModel to load photos after RFID scan and on app restart, binding to EmployeeProfileImage
Display employee photos in left panel and order-history rows with graceful placeholder fallback
Store ParentDocumentId in scan records and expose it through HrmsEmployeeInfo / ScanRecord / OrderHistoryItem for photo lookups
Use employee.concatenated_name from HRMS for full employee name in lookups
Add CRUD support for meal schedules backed by hrms.meal_schedule (Add New + Save creates/updates schedules for a site and session)
- Remove legacy SQLite tables/columns (Employees, MealRates, TemporaryMealPlanOverrides, etc.)
- Replace scan timeout with granular interval (Days/Hours/Minutes/Seconds)
- Add CSV export for today's records in Order History modal
- Consolidate cooldown alerts with dynamic unit formatting
- Change order items to "Sehri/Iftari"
- Update MySQL sync: remove device_local_row_id, rename columns (scan_date, received_date)
- Add production migration script for schema changes
- Remove MySQL connection string from Settings UI (use appsettings.json)