[2026-09-02 10:10:59.388] [INFO ] [Ysp.Scheduler] Started. SFTP in 21h 41m, MIS in 0h 1m [2026-09-02 10:10:59.495] [INFO ] :alarm_handler: {:set, {{:disk_almost_full, ~c"/"}, []}} [2026-09-02 10:10:59.568] [INFO ] :alarm_handler: {:set, {:system_memory_high_watermark, []}} [2026-09-02 10:11:02.090] [DEBUG] Tzdata polling for update. [2026-09-02 10:11:02.737] [INFO ] Terminal Event Listener started and listening to events [2026-09-02 10:11:02.739] [INFO ] Rule Validation Worker started - will run every hour [2026-09-02 10:11:02.750] [INFO ] Building initial filter cache... [2026-09-02 10:11:02.798] [DEBUG] QUERY OK source="tms_terminals" db=6.5ms queue=2.2ms idle=366.9ms SELECT t0.`area`, t0.`vendor`, t0.`model` FROM `tms_terminals` AS t0 WHERE ((NOT (t0.`area` IS NULL) OR NOT (t0.`vendor` IS NULL)) OR NOT (t0.`model` IS NULL)) [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_terminal_filter_data/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:153 [2026-09-02 10:11:02.833] [DEBUG] QUERY OK source="filter_usage" db=0.8ms queue=3.0ms idle=70.8ms SELECT f0.`filter_type`, f0.`filter_value`, coalesce(sum(f0.`usage_count`), 0) FROM `filter_usage` AS f0 GROUP BY f0.`filter_type`, f0.`filter_value` [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_usage_statistics/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:190 [2026-09-02 10:11:02.833] [INFO ] Filter cache rebuilt: 0 areas, 5 vendors, 8 models [2026-09-02 10:11:03.396] [INFO ] Device phoenix_client_tms_apps_vidya connected [2026-09-02 10:11:03.558] [INFO ] Running PlatformWeb.Endpoint with Bandit 1.10.2 at 0.0.0.0:5329 (http) [2026-09-02 10:11:03.636] [INFO ] Access PlatformWeb.Endpoint at http://localhost:5329 [2026-09-02 10:11:03.764] [DEBUG] Tzdata polling shows the loaded tz database is up to date. [2026-09-02 10:11:08.683] [INFO ] GET / [2026-09-02 10:11:08.987] [DEBUG] Processing with PlatformWeb.PageController.home/2 Parameters: %{} Pipelines: [:browser] [2026-09-02 10:11:09.550] [INFO ] Sent 200 in 866ms [2026-09-02 10:11:11.934] [INFO ] GET /images/favicon.png [2026-09-02 10:11:12.023] [DEBUG] ** (Phoenix.Router.NoRouteError) no route found for GET /images/favicon.png (PlatformWeb.Router) (platform_web 0.1.0) /var/www/internaltesting/sunny/tmsapp/tmsuat_apps/deps/phoenix/lib/phoenix/router.ex:541: PlatformWeb.Router.call/2 (platform_web 0.1.0) lib/platform_web/endpoint.ex:1: PlatformWeb.Endpoint.plug_builder_call/2 (platform_web 0.1.0) /var/www/internaltesting/sunny/tmsapp/tmsuat_apps/deps/plug/lib/plug/debugger.ex:155: PlatformWeb.Endpoint."call (overridable 3)"/2 (platform_web 0.1.0) lib/platform_web/endpoint.ex:1: PlatformWeb.Endpoint.call/2 (phoenix 1.7.21) lib/phoenix/endpoint/sync_code_reload_plug.ex:22: Phoenix.Endpoint.SyncCodeReloadPlug.do_call/4 (bandit 1.10.2) lib/bandit/pipeline.ex:131: Bandit.Pipeline.call_plug!/2 (bandit 1.10.2) lib/bandit/pipeline.ex:42: Bandit.Pipeline.run/5 (bandit 1.10.2) lib/bandit/http1/handler.ex:13: Bandit.HTTP1.Handler.handle_data/3 (bandit 1.10.2) lib/bandit/delegating_handler.ex:18: Bandit.DelegatingHandler.handle_data/3 (bandit 1.10.2) lib/bandit/delegating_handler.ex:8: Bandit.DelegatingHandler.handle_info/2 (stdlib 5.2.3.2) gen_server.erl:1095: :gen_server.try_handle_info/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 [2026-09-02 10:11:15.246] [INFO ] Received status update for terminal 98251226730001 [2026-09-02 10:11:15.250] [INFO ] Incoming JSON payload: {"oid":"711c1434-611d-4b05-9ee6-634d3bd613f1","sn":"98251226730001","uploadTime":"2026-09-02T10:11:14Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-09-02T10:11:14Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-09-02T10:11:14Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-09-02T10:11:14Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-09-02T10:11:14Z"},{"itemkey":"ram_free_mb","value":"829","timestamp":"2026-09-02T10:11:14Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-09-02T10:11:14Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-09-02T10:11:14Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-09-02T10:11:14Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-09-02T10:11:14Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-09-02T10:11:14Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-09-02T10:11:14Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-09-02T10:11:14Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-09-02T10:11:14Z"},{"itemkey":"data_usage_mb","value":"39","timestamp":"2026-09-02T10:11:14Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-09-02T10:11:14Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-09-02 10:11:15.253] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "711c1434-611d-4b05-9ee6-634d3bd613f1", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-09-02T10:11:14Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-09-02T10:11:14Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-09-02T10:11:14Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-09-02T10:11:14Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-09-02T10:11:14Z", "value" => "829"}, %{"itemkey" => "network_type", "timestamp" => "2026-09-02T10:11:14Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-09-02T10:11:14Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-09-02T10:11:14Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-09-02T10:11:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-09-02T10:11:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-09-02T10:11:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-09-02T10:11:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-09-02T10:11:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-09-02T10:11:14Z", "value" => "39"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-09-02T10:11:14Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-09-02T10:11:14Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-09-02T10:11:14Z", "vendor" => "morefun"} [2026-09-02 10:11:15.254] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-09-02 10:11:15.272] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-09-02 10:11:15.273] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-09-02 10:11:15.280] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=1.0ms idle=859.5ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-09-02 10:11:15.283] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms queue=2.1ms idle=366.9ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-09-02 10:11:15.283] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-09-02 10:11:15.339] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=1.8ms idle=56.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:140 [2026-09-02 10:11:15.396] [INFO ] Terminal updated: 98251226730001 [2026-09-02 10:11:15.452] [DEBUG] QUERY OK source="tms_terminals" db=45.4ms queue=1.1ms idle=112.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-09-02 10:11:15], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:164 [2026-09-02 10:11:15.458] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-09-02 10:11:15.461] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=120.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:1184 [2026-09-02 10:11:15.508] [DEBUG] QUERY OK source="tms_terminals" db=47.0ms idle=18.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:11:15], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:174 [2026-09-02 10:11:15.519] [DEBUG] QUERY OK source="app_upgrade_device_statuses" db=0.4ms queue=1.6ms idle=56.1ms SELECT a0.`id`, a0.`config_id`, a0.`device_id`, a0.`device_sn`, a0.`vendor`, a0.`model`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`update_result`, a0.`status`, a0.`remark`, a0.`finish_time`, a0.`pushed_time`, a0.`retry_count`, a0.`inserted_at`, a0.`updated_at` FROM `app_upgrade_device_statuses` AS a0 WHERE ((a0.`device_sn` = ?) AND a0.`status` IN ('pending','pushed')) ["98251226730001"] ↳ TmsCore.TerminalManagement.AppUpgradeService.maybe_repush_for_device/1, at: lib/tms_core/terminal_management/app_upgrade_service.ex:148 [2026-09-02 10:11:15.608] [DEBUG] QUERY OK db=74.1ms queue=0.7ms idle=25.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "711c1434-611d-4b05-9ee6-634d3bd613f1", "2026-09-02T10:11:14Z", ~N[2026-09-02 10:11:15], ~N[2026-09-02 10:11:15]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:179 [2026-09-02 10:11:15.633] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 105738, oid: "711c1434-611d-4b05-9ee6-634d3bd613f1", upload_time: "2026-09-02T10:11:14Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:11:15], updated_at: ~N[2026-09-02 10:11:15]} [2026-09-02 10:11:15.633] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-09-02T10:11:14Z", "value" => "morefun"} [2026-09-02 10:11:15.665] [DEBUG] QUERY OK db=31.1ms queue=0.5ms idle=114.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:11:14Z", "morefun", "vendor", 105738, ~N[2026-09-02 10:11:15], ~N[2026-09-02 10:11:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:11:15.665] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083602, itemkey: "vendor", value: "morefun", timestamp: "2026-09-02T10:11:14Z", message: nil, status_log_id: 105738, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:11:15], updated_at: ~N[2026-09-02 10:11:15]}} [2026-09-02 10:11:15.665] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-09-02T10:11:14Z", "value" => "kiosk_launcher"} [2026-09-02 10:11:15.724] [DEBUG] QUERY OK db=57.4ms queue=0.6ms idle=57.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:11:14Z", "kiosk_launcher", "model", 105738, ~N[2026-09-02 10:11:15], ~N[2026-09-02 10:11:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:11:15.725] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083604, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-09-02T10:11:14Z", message: nil, status_log_id: 105738, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:11:15], updated_at: ~N[2026-09-02 10:11:15]}} [2026-09-02 10:11:15.725] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-09-02T10:11:14Z", "value" => "1.0"} [2026-09-02 10:11:15.756] [DEBUG] QUERY OK db=29.5ms idle=61.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:11:14Z", "1.0", "app_version", 105738, ~N[2026-09-02 10:11:15], ~N[2026-09-02 10:11:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:11:15.757] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083607, itemkey: "app_version", value: "1.0", timestamp: "2026-09-02T10:11:14Z", message: nil, status_log_id: 105738, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:11:15], updated_at: ~N[2026-09-02 10:11:15]}} [2026-09-02 10:11:15.757] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-09-02T10:11:14Z", "value" => "13"} [2026-09-02 10:11:15.810] [DEBUG] QUERY OK db=53.1ms idle=33.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:11:14Z", "13", "android_version", 105738, ~N[2026-09-02 10:11:15], ~N[2026-09-02 10:11:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:11:15.812] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083610, itemkey: "android_version", value: "13", timestamp: "2026-09-02T10:11:14Z", message: nil, status_log_id: 105738, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:11:15], updated_at: ~N[2026-09-02 10:11:15]}} [2026-09-02 10:11:15.812] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-09-02T10:11:14Z", "value" => "829"} [2026-09-02 10:11:15.859] [DEBUG] QUERY OK db=46.8ms queue=0.5ms idle=55.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:11:14Z", "829", "ram_free_mb", 105738, ~N[2026-09-02 10:11:15], ~N[2026-09-02 10:11:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:11:15.860] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083612, itemkey: "ram_free_mb", value: "829", timestamp: "2026-09-02T10:11:14Z", message: nil, status_log_id: 105738, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:11:15], updated_at: ~N[2026-09-02 10:11:15]}} [2026-09-02 10:11:15.861] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-09-02T10:11:14Z", "value" => "WIFI"} [2026-09-02 10:11:15.917] [DEBUG] QUERY OK db=55.6ms queue=0.5ms idle=50.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:11:14Z", "WIFI", "network_type", 105738, ~N[2026-09-02 10:11:15], ~N[2026-09-02 10:11:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:11:15.918] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083615, itemkey: "network_type", value: "WIFI", timestamp: "2026-09-02T10:11:14Z", message: nil, status_log_id: 105738, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:11:15], updated_at: ~N[2026-09-02 10:11:15]}} [2026-09-02 10:11:15.918] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-09-02T10:11:14Z", "value" => "true"} [2026-09-02 10:11:16.001] [DEBUG] QUERY OK db=80.8ms queue=1.9ms idle=0.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:11:14Z", "true", "kiosk_active", 105738, ~N[2026-09-02 10:11:15], ~N[2026-09-02 10:11:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:11:16.002] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083618, itemkey: "kiosk_active", value: "true", timestamp: "2026-09-02T10:11:14Z", message: nil, status_log_id: 105738, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:11:15], updated_at: ~N[2026-09-02 10:11:15]}} [2026-09-02 10:11:16.003] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-09-02T10:11:14Z", "value" => ""} [2026-09-02 10:11:16.252] [DEBUG] QUERY OK db=247.1ms queue=2.0ms idle=83.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-09-02T10:11:14Z", "sim_operator", 105738, ~N[2026-09-02 10:11:16], ~N[2026-09-02 10:11:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:11:16.252] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083621, itemkey: "sim_operator", value: nil, timestamp: "2026-09-02T10:11:14Z", message: nil, status_log_id: 105738, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:11:16], updated_at: ~N[2026-09-02 10:11:16]}} [2026-09-02 10:11:16.252] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-09-02T10:11:14Z", "value" => "UNKNOWN"} [2026-09-02 10:11:16.317] [DEBUG] QUERY OK db=64.2ms idle=252.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:11:14Z", "UNKNOWN", "sim_number", 105738, ~N[2026-09-02 10:11:16], ~N[2026-09-02 10:11:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:11:16.317] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083624, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-09-02T10:11:14Z", message: nil, status_log_id: 105738, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:11:16], updated_at: ~N[2026-09-02 10:11:16]}} [2026-09-02 10:11:16.317] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-09-02T10:11:14Z", "value" => "UNKNOWN"} [2026-09-02 10:11:16.378] [DEBUG] QUERY OK db=59.8ms idle=65.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:11:14Z", "UNKNOWN", "sim_iccid", 105738, ~N[2026-09-02 10:11:16], ~N[2026-09-02 10:11:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:11:16.378] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083627, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-09-02T10:11:14Z", message: nil, status_log_id: 105738, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:11:16], updated_at: ~N[2026-09-02 10:11:16]}} [2026-09-02 10:11:16.379] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-09-02T10:11:14Z", "value" => "UNKNOWN"} [2026-09-02 10:11:16.468] [DEBUG] QUERY OK db=88.0ms queue=0.1ms idle=62.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:11:14Z", "UNKNOWN", "sim_imsi", 105738, ~N[2026-09-02 10:11:16], ~N[2026-09-02 10:11:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:11:16.469] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083631, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-09-02T10:11:14Z", message: nil, status_log_id: 105738, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:11:16], updated_at: ~N[2026-09-02 10:11:16]}} [2026-09-02 10:11:16.469] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-09-02T10:11:14Z", "value" => "UNKNOWN"} [2026-09-02 10:11:16.529] [DEBUG] QUERY OK db=60.0ms queue=0.1ms idle=91.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:11:14Z", "UNKNOWN", "sim_iccid2", 105738, ~N[2026-09-02 10:11:16], ~N[2026-09-02 10:11:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:11:16.530] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083633, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-09-02T10:11:14Z", message: nil, status_log_id: 105738, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:11:16], updated_at: ~N[2026-09-02 10:11:16]}} [2026-09-02 10:11:16.531] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-09-02T10:11:14Z", "value" => "UNKNOWN"} [2026-09-02 10:11:16.589] [DEBUG] QUERY OK db=58.5ms idle=62.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:11:14Z", "UNKNOWN", "sim_imsi2", 105738, ~N[2026-09-02 10:11:16], ~N[2026-09-02 10:11:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:11:16.590] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083635, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-09-02T10:11:14Z", message: nil, status_log_id: 105738, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:11:16], updated_at: ~N[2026-09-02 10:11:16]}} [2026-09-02 10:11:16.590] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-09-02T10:11:14Z", "value" => "39"} [2026-09-02 10:11:16.689] [DEBUG] QUERY OK db=99.0ms idle=60.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:11:14Z", "39", "data_usage_mb", 105738, ~N[2026-09-02 10:11:16], ~N[2026-09-02 10:11:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:11:16.690] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083637, itemkey: "data_usage_mb", value: "39", timestamp: "2026-09-02T10:11:14Z", message: nil, status_log_id: 105738, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:11:16], updated_at: ~N[2026-09-02 10:11:16]}} [2026-09-02 10:11:16.690] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-09-02T10:11:14Z", "value" => "0"} [2026-09-02 10:11:16.747] [DEBUG] QUERY OK db=57.2ms idle=100.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:11:14Z", "0", "mobile_data_mb", 105738, ~N[2026-09-02 10:11:16], ~N[2026-09-02 10:11:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:11:16.747] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083638, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-09-02T10:11:14Z", message: nil, status_log_id: 105738, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:11:16], updated_at: ~N[2026-09-02 10:11:16]}} [2026-09-02 10:11:16.748] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-09-02T10:11:14Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-09-02 10:11:16.837] [DEBUG] QUERY OK db=87.7ms idle=59.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:11:14Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 105738, ~N[2026-09-02 10:11:16], ~N[2026-09-02 10:11:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:11:16.838] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083639, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-09-02T10:11:14Z", message: nil, status_log_id: 105738, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:11:16], updated_at: ~N[2026-09-02 10:11:16]}} [2026-09-02 10:11:16.838] [INFO ] Received status update for terminal 98251226730001 [2026-09-02 10:11:16.838] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-09-02T10:11:15Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-09-02T10:11:15Z","value":"35"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-09-02T10:11:15Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-09-02T10:11:15Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-09-02T10:11:15Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-09-02T10:11:15Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-09-02T10:11:15Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-09-02T10:11:15Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-09-02T10:11:15Z","vendor":"MoreFun"} [2026-09-02 10:11:16.838] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-09-02T10:11:15Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-09-02T10:11:15Z", "value" => "35"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-09-02T10:11:15Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-09-02T10:11:15Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-09-02T10:11:15Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-09-02T10:11:15Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-09-02T10:11:15Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-09-02T10:11:15Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-09-02T10:11:15Z", "vendor" => "MoreFun"} [2026-09-02 10:11:16.838] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-09-02 10:11:16.838] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-09-02 10:11:16.838] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-09-02 10:11:16.840] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms queue=0.2ms idle=91.5ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-09-02 10:11:16.840] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=3.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-09-02 10:11:16.851] [DEBUG] QUERY OK source="parameter_template_values" db=0.7ms queue=1.6ms idle=9.1ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-09-02 10:11:16.869] [DEBUG] QUERY OK source="parameter_definitions" db=0.7ms queue=0.7ms idle=26.8ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-09-02 10:11:16.877] [DEBUG] QUERY OK source="pos_terminal" db=0.4ms queue=0.7ms idle=24.4ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-09-02 10:11:16.910] [DEBUG] QUERY OK source="pos_merchant" db=0.7ms queue=28.6ms idle=12.0ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [350] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-09-02 10:11:16.916] [DEBUG] QUERY OK db=0.6ms queue=0.6ms idle=497.2ms SELECT COALESCE(JSON_UNQUOTE(JSON_EXTRACT(mc.settings, '$.BASE_MERCHANT_NAME')), '') as base_merchant_name, COALESCE(u.name, '') as user_name, COALESCE(um.softpos_uuid, '') as softpos_uuid, COALESCE(mc.settings, '{}') as settings FROM user_metadata um LEFT JOIN merchant_configuration mc ON mc.user_id = um.user_id LEFT JOIN users u ON u.id = um.user_id WHERE um.merchant_refrence_number = ? LIMIT 1 ["667267350000000"] [2026-09-02 10:11:16.916] [INFO ] ParamsZipBuilder: Merchant info for merchantid=667267350000000 - business_name=Shubham003, QR_USE_SSL=, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-09-02 10:11:16.929] [DEBUG] QUERY OK source="pos_terminal_data" db=1.3ms queue=0.9ms idle=16.5ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["26735914"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-09-02 10:11:16.939] [DEBUG] QUERY OK source="address" db=0.3ms queue=1.7ms idle=7.9ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [639] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-09-02 10:11:16.939] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="667267350000000" [2026-09-02 10:11:16.951] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-09-02 10:11:17.039] [DEBUG] QUERY OK db=74.4ms queue=1.0ms idle=29.6ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "804e446686539fb4cf8ec97913b481813ad1e9d57ef23dd10a4f4a4c3fb55406", 164, 912, ~U[2026-09-02 10:11:16Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-09-02 10:11:16], ~N[2026-09-02 10:11:16]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-09-02 10:11:17.039] [INFO ] AutoPushService: Created push log 60475 for MF919 params.zip [2026-09-02 10:11:17.049] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4017/ota/98251226730001/params.zip", "requestId" => 164, "type" => "tms_command", "version" => "1.0.0"} [2026-09-02 10:11:17.049] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-09-02 10:11:17.055] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-09-02 10:11:17.065] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms queue=1.7ms idle=123.9ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-09-02 10:11:17.074] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730001 at priv/ota/98251226730001/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-09-02 10:11:17.159] [DEBUG] QUERY OK db=82.7ms queue=0.4ms idle=40.8ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "c6f9b5ea617773e2d0427983d373b536b03876938900e6892dc0338abe89d4a1", 388, 17947, ~U[2026-09-02 10:11:17Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-09-02 10:11:17], ~N[2026-09-02 10:11:17]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-09-02 10:11:17.159] [INFO ] AutoPushService: Created push log 60476 for MF919 l3config.zip (version: 1.0.1) [2026-09-02 10:11:17.159] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4017/ota/98251226730001/l3config.zip", "requestId" => 388, "type" => "tms_command", "version" => "1.0.1"} [2026-09-02 10:11:17.159] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-09-02 10:11:17.159] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-09-02 10:11:17.161] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms idle=94.3ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-09-02 10:11:17.167] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-09-02 10:11:17.168] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms queue=0.1ms idle=8.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-09-02 10:11:17.169] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730001 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-09-02 10:11:17.281] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-09-02 10:11:17.281] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 10:11:17.281] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 10:11:17.282] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms idle=120.9ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-09-02 10:11:17.282] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-09-02 10:11:17.282] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-09-02 10:11:17.284] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=114.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:140 [2026-09-02 10:11:17.284] [INFO ] Terminal updated: 98251226730001 [2026-09-02 10:11:17.351] [DEBUG] QUERY OK source="tms_terminals" db=66.6ms queue=0.3ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-09-02 10:11:17], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:164 [2026-09-02 10:11:17.353] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=0.5ms idle=67.8ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) ORDER BY p0.`updated_at` DESC LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_parameter_version/2, at: lib/tms_core/terminal_management/version_compliance_checker.ex:105 [2026-09-02 10:11:17.354] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms queue=0.1ms idle=1.5ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-09-02 10:11:17.355] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms idle=1.2ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-09-02 10:11:17.355] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-09-02 10:11:17.385] [DEBUG] QUERY OK source="parameter_push_logs" db=18.0ms queue=0.5ms idle=12.3ms SELECT TRUE FROM `parameter_push_logs` AS p0 WHERE ((((p0.`terminal_id` = ?) AND (p0.`config_type` = ?)) AND (p0.`inserted_at` >= ?)) AND p0.`status` IN ('pending','sent')) LIMIT 1 [33, "application", ~N[2026-09-02 09:41:17]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-09-02 10:11:17.385] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-09-02 10:11:17.385] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-09-02 10:11:17.386] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=30.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-09-02 10:11:17.386] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms idle=1.4ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-09-02 10:11:17.387] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-09-02 10:11:17.388] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms idle=1.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:1184 [2026-09-02 10:11:17.455] [DEBUG] QUERY OK source="tms_terminals" db=67.2ms idle=1.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:11:17], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:174 [2026-09-02 10:11:17.457] [DEBUG] QUERY OK source="app_upgrade_device_statuses" db=1.5ms idle=68.0ms SELECT a0.`id`, a0.`config_id`, a0.`device_id`, a0.`device_sn`, a0.`vendor`, a0.`model`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`update_result`, a0.`status`, a0.`remark`, a0.`finish_time`, a0.`pushed_time`, a0.`retry_count`, a0.`inserted_at`, a0.`updated_at` FROM `app_upgrade_device_statuses` AS a0 WHERE ((a0.`device_sn` = ?) AND a0.`status` IN ('pending','pushed')) ["98251226730001"] ↳ TmsCore.TerminalManagement.AppUpgradeService.maybe_repush_for_device/1, at: lib/tms_core/terminal_management/app_upgrade_service.ex:148 [2026-09-02 10:11:17.517] [DEBUG] QUERY OK db=58.3ms queue=1.0ms idle=2.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-09-02T10:11:15Z", ~N[2026-09-02 10:11:17], ~N[2026-09-02 10:11:17]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:179 [2026-09-02 10:11:17.517] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 105741, oid: "organization_id", upload_time: "2026-09-02T10:11:15Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:11:17], updated_at: ~N[2026-09-02 10:11:17]} [2026-09-02 10:11:17.517] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-09-02T10:11:15Z", "value" => "online"} [2026-09-02 10:11:17.572] [DEBUG] QUERY OK db=54.2ms queue=0.4ms idle=60.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-09-02T10:11:15Z", "online", "status", 105741, ~N[2026-09-02 10:11:17], ~N[2026-09-02 10:11:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:11:17.573] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083655, itemkey: "status", value: "online", timestamp: "2026-09-02T10:11:15Z", message: "Terminal status update", status_log_id: 105741, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:11:17], updated_at: ~N[2026-09-02 10:11:17]}} [2026-09-02 10:11:17.573] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-09-02 10:11:17.573] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-09-02T10:11:15Z", "value" => "35"} [2026-09-02 10:11:17.636] [DEBUG] QUERY OK db=61.6ms queue=0.7ms idle=56.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-09-02T10:11:15Z", "35", "battery", 105741, ~N[2026-09-02 10:11:17], ~N[2026-09-02 10:11:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:11:17.637] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083657, itemkey: "battery", value: "35", timestamp: "2026-09-02T10:11:15Z", message: "Battery level", status_log_id: 105741, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:11:17], updated_at: ~N[2026-09-02 10:11:17]}} [2026-09-02 10:11:17.638] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-09-02T10:11:15Z", "value" => "online"} [2026-09-02 10:11:17.691] [DEBUG] QUERY OK db=52.7ms idle=65.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-09-02T10:11:15Z", "online", "network", 105741, ~N[2026-09-02 10:11:17], ~N[2026-09-02 10:11:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:11:17.691] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083658, itemkey: "network", value: "online", timestamp: "2026-09-02T10:11:15Z", message: "Network connectivity", status_log_id: 105741, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:11:17], updated_at: ~N[2026-09-02 10:11:17]}} [2026-09-02 10:11:17.691] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-09-02 10:11:17.692] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-09-02T10:11:15Z", "value" => "0"} [2026-09-02 10:11:17.721] [INFO ] GET / [2026-09-02 10:11:17.721] [DEBUG] Processing with PlatformWeb.PageController.home/2 Parameters: %{} Pipelines: [:browser] [2026-09-02 10:11:17.722] [INFO ] Sent 200 in 1ms [2026-09-02 10:11:17.732] [DEBUG] QUERY OK db=40.3ms idle=56.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-09-02T10:11:15Z", "0", "cpu", 105741, ~N[2026-09-02 10:11:17], ~N[2026-09-02 10:11:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:11:17.733] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083659, itemkey: "cpu", value: "0", timestamp: "2026-09-02T10:11:15Z", message: "CPU usage percentage", status_log_id: 105741, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:11:17], updated_at: ~N[2026-09-02 10:11:17]}} [2026-09-02 10:11:17.733] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-09-02T10:11:15Z", "value" => "1.0.0"} [2026-09-02 10:11:17.769] [DEBUG] QUERY OK db=35.6ms idle=42.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-09-02T10:11:15Z", "1.0.0", "parameter_config", 105741, ~N[2026-09-02 10:11:17], ~N[2026-09-02 10:11:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:11:17.770] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083660, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-09-02T10:11:15Z", message: "Current parameters version", status_log_id: 105741, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:11:17], updated_at: ~N[2026-09-02 10:11:17]}} [2026-09-02 10:11:17.770] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-09-02T10:11:15Z", "value" => "1.0.1"} [2026-09-02 10:11:17.811] [DEBUG] QUERY OK db=40.3ms idle=37.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-09-02T10:11:15Z", "1.0.1", "emv_config", 105741, ~N[2026-09-02 10:11:17], ~N[2026-09-02 10:11:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:11:17.811] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083661, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-09-02T10:11:15Z", message: "Current EMV config version", status_log_id: 105741, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:11:17], updated_at: ~N[2026-09-02 10:11:17]}} [2026-09-02 10:11:17.811] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-09-02T10:11:15Z", "value" => ""} [2026-09-02 10:11:17.887] [DEBUG] QUERY OK db=33.9ms queue=41.1ms idle=41.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-09-02T10:11:15Z", "keys_config", 105741, ~N[2026-09-02 10:11:17], ~N[2026-09-02 10:11:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:11:17.888] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083662, itemkey: "keys_config", value: nil, timestamp: "2026-09-02T10:11:15Z", message: "Current keys config version", status_log_id: 105741, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:11:17], updated_at: ~N[2026-09-02 10:11:17]}} [2026-09-02 10:11:17.888] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-09-02T10:11:15Z", "value" => "3.8.7.3"} [2026-09-02 10:11:17.976] [DEBUG] QUERY OK db=87.4ms idle=77.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-09-02T10:11:15Z", "3.8.7.3", "application", 105741, ~N[2026-09-02 10:11:17], ~N[2026-09-02 10:11:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:11:17.976] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083663, itemkey: "application", value: "3.8.7.3", timestamp: "2026-09-02T10:11:15Z", message: "Current application version", status_log_id: 105741, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:11:17], updated_at: ~N[2026-09-02 10:11:17]}} [2026-09-02 10:11:17.976] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-09-02T10:11:16Z"} [2026-09-02 10:11:17.977] [INFO ] Received device ACK from 98251226730001: oid= status=error [2026-09-02 10:11:17.977] [WARN ] Unhandled device ACK oid= from 98251226730001: %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-09-02T10:11:16Z"} [2026-09-02 10:11:17.978] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.0","requestId":"277410","status":"success","timestamp":1788343876360,"type":"tms_response"} [2026-09-02 10:11:18.001] [INFO ] Processing file download response for device 98251226730001, request_id: 277410 [2026-09-02 10:11:18.010] [DEBUG] QUERY OK source="file_download_logs" db=0.3ms queue=1.6ms idle=74.7ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["277410"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:11:18.010] [INFO ] No file download log for request_id 277410; response not attached to a push [2026-09-02 10:11:18.010] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:11:18.010377Z], response: %{"message" => "Already up to date: 1.0.0", "requestId" => "277410", "status" => "success", "timestamp" => 1788343876360, "type" => "tms_response"}, request_id: "277410", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:11:18.013] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-09-02T10:11:16Z"} [2026-09-02 10:11:18.013] [INFO ] Received device ACK from 98251226730001: oid= status=error [2026-09-02 10:11:18.014] [WARN ] Unhandled device ACK oid= from 98251226730001: %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-09-02T10:11:16Z"} [2026-09-02 10:11:18.014] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.1","requestId":"245539","status":"success","timestamp":1788343876408,"type":"tms_response"} [2026-09-02 10:11:18.014] [INFO ] Processing file download response for device 98251226730001, request_id: 245539 [2026-09-02 10:11:18.016] [DEBUG] QUERY OK source="file_download_logs" db=1.2ms idle=38.8ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["245539"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:11:18.016] [INFO ] No file download log for request_id 245539; response not attached to a push [2026-09-02 10:11:18.017] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:11:18.016449Z], response: %{"message" => "Already up to date: 1.0.1", "requestId" => "245539", "status" => "success", "timestamp" => 1788343876408, "type" => "tms_response"}, request_id: "245539", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:11:18.017] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-09-02T10:11:16Z"} [2026-09-02 10:11:18.017] [INFO ] Received device ACK from 98251226730001: oid= status=error [2026-09-02 10:11:18.017] [WARN ] Unhandled device ACK oid= from 98251226730001: %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-09-02T10:11:16Z"} [2026-09-02 10:11:18.017] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-09-02T10:11:16Z"} [2026-09-02 10:11:18.017] [INFO ] Received device ACK from 98251226730001: oid= status=error [2026-09-02 10:11:18.018] [WARN ] Unhandled device ACK oid= from 98251226730001: %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-09-02T10:11:16Z"} [2026-09-02 10:11:18.018] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.0","requestId":"164","status":"success","timestamp":1788343876540,"type":"tms_response"} [2026-09-02 10:11:18.018] [INFO ] Processing file download response for device 98251226730001, request_id: 164 [2026-09-02 10:11:18.020] [DEBUG] QUERY OK source="file_download_logs" db=0.6ms idle=9.2ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["164"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:11:18.020] [INFO ] No file download log for request_id 164; response not attached to a push [2026-09-02 10:11:18.020] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:11:18.020434Z], response: %{"message" => "Already up to date: 1.0.0", "requestId" => "164", "status" => "success", "timestamp" => 1788343876540, "type" => "tms_response"}, request_id: "164", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:11:18.020] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.1","requestId":"388","status":"success","timestamp":1788343876641,"type":"tms_response"} [2026-09-02 10:11:18.020] [INFO ] Processing file download response for device 98251226730001, request_id: 388 [2026-09-02 10:11:18.021] [DEBUG] QUERY OK source="file_download_logs" db=0.7ms idle=4.8ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["388"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:11:18.021] [INFO ] No file download log for request_id 388; response not attached to a push [2026-09-02 10:11:18.022] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:11:18.022300Z], response: %{"message" => "Already up to date: 1.0.1", "requestId" => "388", "status" => "success", "timestamp" => 1788343876641, "type" => "tms_response"}, request_id: "388", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:11:18.022] [WARN ] Unexpected async result [2026-09-02 10:11:18.022] [WARN ] Unexpected async result [2026-09-02 10:11:21.298] [INFO ] GET /users/log_in [2026-09-02 10:11:21.298] [DEBUG] Processing with PlatformWeb.UserLoginLive.new/2 Parameters: %{} Pipelines: [:browser, :redirect_if_user_is_authenticated] [2026-09-02 10:11:21.413] [INFO ] Sent 200 in 115ms [2026-09-02 10:11:22.807] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 25µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "DQRASzw3SisCDCUsGANePAM3O3djJjQ-xC5zIfyDwbvuPW3sNhuZZMmJ", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://localhost:5329/assets/app.css", "1" => "http://localhost:5329/assets/app.js"}, "vsn" => "2.0.0"} [2026-09-02 10:11:22.999] [DEBUG] MOUNT PlatformWeb.UserLoginLive Parameters: %{} Session: %{"_csrf_token" => "uGu1uQ3ounSYHTmOM_N-9kYt"} [2026-09-02 10:11:22.999] [DEBUG] Replied in 204µs [2026-09-02 10:11:24.093] [INFO ] POST /users/log_in [2026-09-02 10:11:24.094] [DEBUG] Processing with PlatformWeb.UserSessionController.create/2 Parameters: %{"_csrf_token" => "DQRASzw3SisCDCUsGANePAM3O3djJjQ-xC5zIfyDwbvuPW3sNhuZZMmJ", "user" => %{"email" => "demo@mercury.com", "password" => "[FILTERED]"}} Pipelines: [:browser, :redirect_if_user_is_authenticated] [2026-09-02 10:11:24.113] [DEBUG] QUERY OK source="users" db=0.4ms queue=1.2ms idle=1736.6ms SELECT u0.`id`, u0.`email`, u0.`hashed_password`, u0.`confirmed_at`, u0.`role`, u0.`name`, u0.`first_name`, u0.`last_name`, u0.`data`, u0.`inserted_at`, u0.`updated_at` FROM `users` AS u0 WHERE (u0.`email` = ?) ["demo@mercury.com"] ↳ DaProductApp.Users.get_user_by_email_and_password/2, at: lib/da_product_app/users.ex:43 [2026-09-02 10:11:24.434] [DEBUG] QUERY OK db=20.8ms queue=0.6ms idle=299.7ms INSERT INTO `users_tokens` (`context`,`token`,`user_id`,`inserted_at`) VALUES (?,?,?,?) ["session", <<213, 32, 140, 146, 229, 21, 137, 113, 114, 76, 126, 65, 60, 16, 236, 111, 126, 32, 254, 167, 187, 35, 180, 237, 118, 110, 98, 232, 176, 39, 166, 51>>, 3, ~U[2026-09-02 10:11:24Z]] ↳ DaProductApp.Users.generate_user_session_token/1, at: lib/da_product_app/users.ex:312 [2026-09-02 10:11:24.434] [INFO ] Sent 302 in 340ms [2026-09-02 10:11:24.457] [ERROR] ** (Plug.Conn.AlreadySentError) the response was already sent (plug 1.19.1) lib/plug/conn.ex:914: Plug.Conn.put_resp_header/3 (phoenix 1.7.21) lib/phoenix/controller.ex:495: Phoenix.Controller.redirect/2 (platform_web 0.1.0) lib/platform_web/controllers/user_session_controller.ex:1: PlatformWeb.UserSessionController.action/2 (platform_web 0.1.0) lib/platform_web/controllers/user_session_controller.ex:1: PlatformWeb.UserSessionController.phoenix_controller_pipeline/2 (phoenix 1.7.21) lib/phoenix/router.ex:484: Phoenix.Router.__call__/5 (platform_web 0.1.0) lib/platform_web/endpoint.ex:1: PlatformWeb.Endpoint.plug_builder_call/2 (platform_web 0.1.0) /var/www/internaltesting/sunny/tmsapp/tmsuat_apps/deps/plug/lib/plug/debugger.ex:155: PlatformWeb.Endpoint."call (overridable 3)"/2 (platform_web 0.1.0) lib/platform_web/endpoint.ex:1: PlatformWeb.Endpoint.call/2 (phoenix 1.7.21) lib/phoenix/endpoint/sync_code_reload_plug.ex:22: Phoenix.Endpoint.SyncCodeReloadPlug.do_call/4 (bandit 1.10.2) lib/bandit/pipeline.ex:131: Bandit.Pipeline.call_plug!/2 (bandit 1.10.2) lib/bandit/pipeline.ex:42: Bandit.Pipeline.run/5 (bandit 1.10.2) lib/bandit/http1/handler.ex:13: Bandit.HTTP1.Handler.handle_data/3 (bandit 1.10.2) lib/bandit/delegating_handler.ex:18: Bandit.DelegatingHandler.handle_data/3 (bandit 1.10.2) lib/bandit/delegating_handler.ex:8: Bandit.DelegatingHandler.handle_info/2 (stdlib 5.2.3.2) gen_server.erl:1095: :gen_server.try_handle_info/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 [2026-09-02 10:11:24.725] [INFO ] GET /dashboard [2026-09-02 10:11:24.725] [DEBUG] Processing with PlatformWeb.DashboardLive.index/2 Parameters: %{} Pipelines: [:browser, :require_authenticated_user] [2026-09-02 10:11:24.732] [DEBUG] QUERY OK source="users_tokens" db=0.7ms queue=1.1ms idle=355.0ms SELECT u1.`id`, u1.`email`, u1.`hashed_password`, u1.`confirmed_at`, u1.`role`, u1.`name`, u1.`first_name`, u1.`last_name`, u1.`data`, u1.`inserted_at`, u1.`updated_at` FROM `users_tokens` AS u0 INNER JOIN `users` AS u1 ON u1.`id` = u0.`user_id` WHERE ((u0.`token` = ?) AND (u0.`context` = ?)) AND (u0.`inserted_at` > date_add(?, INTERVAL -(60) day)) [<<213, 32, 140, 146, 229, 21, 137, 113, 114, 76, 126, 65, 60, 16, 236, 111, 126, 32, 254, 167, 187, 35, 180, 237, 118, 110, 98, 232, 176, 39, 166, 51>>, "session", ~U[2026-09-02 10:11:24.730337Z]] ↳ PlatformWeb.UserAuth.fetch_current_user/2, at: lib/platform_web/user_auth.ex:97 [2026-09-02 10:11:24.742] [DEBUG] QUERY OK source="users_tokens" db=1.2ms idle=306.6ms SELECT u1.`id`, u1.`email`, u1.`hashed_password`, u1.`confirmed_at`, u1.`role`, u1.`name`, u1.`first_name`, u1.`last_name`, u1.`data`, u1.`inserted_at`, u1.`updated_at` FROM `users_tokens` AS u0 INNER JOIN `users` AS u1 ON u1.`id` = u0.`user_id` WHERE ((u0.`token` = ?) AND (u0.`context` = ?)) AND (u0.`inserted_at` > date_add(?, INTERVAL -(60) day)) [<<213, 32, 140, 146, 229, 21, 137, 113, 114, 76, 126, 65, 60, 16, 236, 111, 126, 32, 254, 167, 187, 35, 180, 237, 118, 110, 98, 232, 176, 39, 166, 51>>, "session", ~U[2026-09-02 10:11:24.740734Z]] ↳ PlatformWeb.DashboardLive.mount/3, at: lib/platform_web/live/dashboard_live.ex:10 [2026-09-02 10:11:24.745] [DEBUG] Socket Assigns: %{__changed__: %{current_user: true}, current_user: #DaProductApp.Users.User<__meta__: #Ecto.Schema.Metadata<:loaded, "users">, id: 3, email: "demo@mercury.com", confirmed_at: nil, role: :superuser, name: nil, first_name: nil, last_name: nil, data: nil, permissions: #Ecto.Association.NotLoaded, roles: #Ecto.Association.NotLoaded, inserted_at: ~U[2025-05-12 07:36:10Z], updated_at: ~U[2026-09-01 14:54:28Z], ...>, flash: %{"info" => "Welcome back!"}, live_action: :index} [2026-09-02 10:11:24.746] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms queue=0.4ms idle=1327.5ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:83 [2026-09-02 10:11:24.748] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms queue=0.2ms idle=791.3ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-09-02 00:00:00]] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:86 [2026-09-02 10:11:24.777] [DEBUG] QUERY OK source="tms_terminals" db=29.0ms queue=0.2ms idle=1.8ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 INNER JOIN `tms_terminal_status_logs` AS t1 ON t1.`terminal_id` = t0.`id` WHERE (t1.`inserted_at` >= ?) [~N[2026-09-02 00:00:00]] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:92 [2026-09-02 10:11:24.783] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.4ms queue=0.6ms idle=34.1ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE (t0.`installed_at` >= ?) [~U[2026-09-02 00:00:00Z]] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:101 [2026-09-02 10:11:24.783] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms idle=5.8ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.get_device_online_rate/0, at: lib/tms_core/terminal_management.ex:140 [2026-09-02 10:11:24.785] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.3ms idle=0.9ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 WHERE (t0.`status` IN ('connected','online','Online')) [] ↳ TmsCore.TerminalManagement.get_device_online_rate/0, at: lib/tms_core/terminal_management.ex:143 [2026-09-02 10:11:24.823] [DEBUG] QUERY OK source="tms_terminals" db=37.1ms queue=0.7ms idle=1.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`area`, t0.`model`, t0.`imei`, t0.`remark`, t0.`vendor`, t0.`group`, t0.`inserted_at`, t0.`updated_at`, s1.`last_seen_at`, (SELECT value FROM tms_terminal_status_items WHERE status_log_id = t2.`id` AND itemkey = 'battery' ORDER BY inserted_at DESC LIMIT 1), (SELECT value FROM tms_terminal_status_items WHERE status_log_id = t2.`id` AND itemkey = 'cpu' ORDER BY inserted_at DESC LIMIT 1), (SELECT value FROM tms_terminal_status_items WHERE status_log_id = t2.`id` AND itemkey = 'memory' ORDER BY inserted_at DESC LIMIT 1) FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen_at`, max(st0.`id`) AS `last_status_log_id` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` LEFT OUTER JOIN `tms_terminal_status_logs` AS t2 ON t2.`id` = s1.`last_status_log_id` [] ↳ PlatformWeb.DashboardLive.mount/3, at: lib/platform_web/live/dashboard_live.ex:19 [2026-09-02 10:11:24.842] [DEBUG] QUERY OK source="ota_configurations" db=0.8ms queue=1.1ms idle=55.7ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-09-02 00:00:00Z], ~U[2026-09-02 01:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-09-02 10:11:24.844] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.4ms queue=0.5ms idle=20.1ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-09-02 00:00:00Z], ~U[2026-09-02 01:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-09-02 10:11:24.845] [DEBUG] QUERY OK source="ota_configurations" db=0.9ms idle=2.2ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-09-02 01:00:00Z], ~U[2026-09-02 02:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-09-02 10:11:24.846] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.2ms idle=1.5ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-09-02 01:00:00Z], ~U[2026-09-02 02:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-09-02 10:11:24.848] [DEBUG] QUERY OK source="ota_configurations" db=0.3ms idle=1.7ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-09-02 02:00:00Z], ~U[2026-09-02 03:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-09-02 10:11:24.848] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms idle=1.8ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-09-02 02:00:00Z], ~U[2026-09-02 03:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-09-02 10:11:24.849] [DEBUG] QUERY OK source="ota_configurations" db=0.2ms idle=0.8ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-09-02 03:00:00Z], ~U[2026-09-02 04:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-09-02 10:11:24.849] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms idle=0.7ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-09-02 03:00:00Z], ~U[2026-09-02 04:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-09-02 10:11:24.851] [DEBUG] QUERY OK source="ota_configurations" db=1.4ms idle=0.8ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-09-02 04:00:00Z], ~U[2026-09-02 05:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-09-02 10:11:24.852] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.7ms idle=2.0ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-09-02 04:00:00Z], ~U[2026-09-02 05:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-09-02 10:11:24.853] [DEBUG] QUERY OK source="ota_configurations" db=0.6ms idle=1.2ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-09-02 05:00:00Z], ~U[2026-09-02 06:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-09-02 10:11:24.854] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms idle=1.2ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-09-02 05:00:00Z], ~U[2026-09-02 06:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-09-02 10:11:24.855] [DEBUG] QUERY OK source="ota_configurations" db=0.9ms idle=1.2ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-09-02 06:00:00Z], ~U[2026-09-02 07:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-09-02 10:11:24.856] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.2ms idle=1.7ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-09-02 06:00:00Z], ~U[2026-09-02 07:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-09-02 10:11:24.857] [DEBUG] QUERY OK source="ota_configurations" db=0.8ms idle=0.7ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-09-02 07:00:00Z], ~U[2026-09-02 08:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-09-02 10:11:24.858] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.2ms idle=1.6ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-09-02 07:00:00Z], ~U[2026-09-02 08:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-09-02 10:11:24.858] [DEBUG] QUERY OK source="ota_configurations" db=0.4ms idle=1.0ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-09-02 08:00:00Z], ~U[2026-09-02 09:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-09-02 10:11:24.860] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=1.3ms idle=0.9ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-09-02 08:00:00Z], ~U[2026-09-02 09:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-09-02 10:11:24.861] [DEBUG] QUERY OK source="ota_configurations" db=0.9ms idle=1.8ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-09-02 09:00:00Z], ~U[2026-09-02 10:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-09-02 10:11:24.862] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.2ms idle=1.4ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-09-02 09:00:00Z], ~U[2026-09-02 10:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-09-02 10:11:24.863] [DEBUG] QUERY OK source="ota_configurations" db=0.4ms idle=0.7ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-09-02 10:00:00Z], ~U[2026-09-02 11:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-09-02 10:11:24.863] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms idle=0.9ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-09-02 10:00:00Z], ~U[2026-09-02 11:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-09-02 10:11:24.864] [DEBUG] QUERY OK source="ota_configurations" db=0.3ms idle=0.7ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-09-02 11:00:00Z], ~U[2026-09-02 12:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-09-02 10:11:24.864] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.2ms idle=0.7ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-09-02 11:00:00Z], ~U[2026-09-02 12:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-09-02 10:11:24.865] [DEBUG] QUERY OK source="ota_configurations" db=0.7ms idle=0.6ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-09-02 12:00:00Z], ~U[2026-09-02 13:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-09-02 10:11:24.866] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms idle=1.2ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-09-02 12:00:00Z], ~U[2026-09-02 13:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-09-02 10:11:24.867] [DEBUG] QUERY OK source="ota_configurations" db=1.0ms idle=0.8ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-09-02 13:00:00Z], ~U[2026-09-02 14:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-09-02 10:11:24.868] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.4ms idle=1.5ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-09-02 13:00:00Z], ~U[2026-09-02 14:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-09-02 10:11:24.868] [DEBUG] QUERY OK source="ota_configurations" db=0.3ms idle=0.8ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-09-02 14:00:00Z], ~U[2026-09-02 15:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-09-02 10:11:24.869] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.4ms idle=0.7ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-09-02 14:00:00Z], ~U[2026-09-02 15:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-09-02 10:11:24.870] [DEBUG] QUERY OK source="ota_configurations" db=0.3ms idle=0.8ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-09-02 15:00:00Z], ~U[2026-09-02 16:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-09-02 10:11:24.870] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.4ms idle=0.8ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-09-02 15:00:00Z], ~U[2026-09-02 16:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-09-02 10:11:24.871] [DEBUG] QUERY OK source="ota_configurations" db=0.2ms idle=0.8ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-09-02 16:00:00Z], ~U[2026-09-02 17:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-09-02 10:11:24.871] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.2ms idle=0.7ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-09-02 16:00:00Z], ~U[2026-09-02 17:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-09-02 10:11:24.872] [DEBUG] QUERY OK source="ota_configurations" db=0.6ms idle=0.6ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-09-02 17:00:00Z], ~U[2026-09-02 18:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-09-02 10:11:24.873] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.4ms idle=1.1ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-09-02 17:00:00Z], ~U[2026-09-02 18:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-09-02 10:11:24.873] [DEBUG] QUERY OK source="ota_configurations" db=0.2ms idle=0.9ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-09-02 18:00:00Z], ~U[2026-09-02 19:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-09-02 10:11:24.875] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.5ms idle=1.0ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-09-02 18:00:00Z], ~U[2026-09-02 19:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-09-02 10:11:24.875] [DEBUG] QUERY OK source="ota_configurations" db=0.4ms idle=1.3ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-09-02 19:00:00Z], ~U[2026-09-02 20:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-09-02 10:11:24.876] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms idle=0.9ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-09-02 19:00:00Z], ~U[2026-09-02 20:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-09-02 10:11:24.877] [DEBUG] QUERY OK source="ota_configurations" db=1.1ms idle=0.9ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-09-02 20:00:00Z], ~U[2026-09-02 21:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-09-02 10:11:24.878] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.7ms idle=1.7ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-09-02 20:00:00Z], ~U[2026-09-02 21:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-09-02 10:11:24.879] [DEBUG] QUERY OK source="ota_configurations" db=0.5ms idle=1.4ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-09-02 21:00:00Z], ~U[2026-09-02 22:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-09-02 10:11:24.880] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.2ms idle=1.1ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-09-02 21:00:00Z], ~U[2026-09-02 22:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-09-02 10:11:24.881] [DEBUG] QUERY OK source="ota_configurations" db=0.5ms idle=0.7ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-09-02 22:00:00Z], ~U[2026-09-02 23:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-09-02 10:11:24.881] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.4ms idle=1.0ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-09-02 22:00:00Z], ~U[2026-09-02 23:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-09-02 10:11:24.882] [DEBUG] QUERY OK source="ota_configurations" db=0.3ms idle=0.8ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-09-02 23:00:00Z], ~U[2026-09-03 00:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-09-02 10:11:24.884] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=1.3ms idle=0.8ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-09-02 23:00:00Z], ~U[2026-09-03 00:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-09-02 10:11:24.886] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=0.3ms idle=2.3ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-09-02 10:06:24.884554Z], ~U[2026-09-02 09:41:24.884554Z], ~U[2026-09-02 09:11:24.884554Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1986 [2026-09-02 10:11:24.911] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=24.2ms queue=0.3ms idle=2.8ms SELECT DATE_FORMAT(t0.`inserted_at`, '%Y-%m-%d %H:%i'), count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) GROUP BY DATE_FORMAT(t0.`inserted_at`, '%Y-%m-%d %H:%i') ORDER BY DATE_FORMAT(t0.`inserted_at`, '%Y-%m-%d %H:%i') [~N[2026-09-02 09:11:24]] ↳ TmsCore.TerminalManagement.get_connection_status_summary/0, at: lib/tms_core/terminal_management.ex:2018 [2026-09-02 10:11:24.933] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=21.4ms queue=0.5ms idle=25.8ms SELECT count(DISTINCT t0.`terminal_id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-09-02 10:10:24]] ↳ TmsCore.TerminalManagement.get_connection_status_summary/0, at: lib/tms_core/terminal_management.ex:2026 [2026-09-02 10:11:24.960] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=25.0ms queue=1.2ms idle=22.9ms SELECT count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-09-02 09:11:24]] ↳ TmsCore.TerminalManagement.get_parameter_push_success_rate/1, at: lib/tms_core/terminal_management.ex:2092 [2026-09-02 10:11:24.989] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=27.6ms queue=0.2ms idle=1.9ms SELECT count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-09-02 09:11:24]] ↳ TmsCore.TerminalManagement.get_average_response_time/1, at: lib/tms_core/terminal_management.ex:2108 [2026-09-02 10:11:25.011] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=21.6ms queue=0.8ms idle=28.6ms SELECT count(t0.`terminal_id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-09-02 09:11:24]] ↳ TmsCore.TerminalManagement.calculate_uptime_percentage/1, at: lib/tms_core/terminal_management.ex:2134 [2026-09-02 10:11:25.012] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=23.0ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.calculate_uptime_percentage/1, at: lib/tms_core/terminal_management.ex:2139 [2026-09-02 10:11:25.014] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=1.3ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-09-02 10:06:25.012898Z], ~U[2026-09-02 09:41:25.012898Z], ~U[2026-09-02 09:11:25.012898Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1986 [2026-09-02 10:11:25.015] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=1.8ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-09-02 10:06:25.014450Z], ~U[2026-09-02 09:41:25.014450Z], ~U[2026-09-02 09:11:25.014450Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1986 [2026-09-02 10:11:25.016] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=1.4ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-09-02 10:06:25.015534Z], ~U[2026-09-02 09:41:25.015534Z], ~U[2026-09-02 09:11:25.015534Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1986 [2026-09-02 10:11:25.017] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=1.3ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-09-02 10:06:25.016563Z], ~U[2026-09-02 09:41:25.016563Z], ~U[2026-09-02 09:11:25.016563Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1986 [2026-09-02 10:11:25.058] [INFO ] Sent 200 in 333ms [2026-09-02 10:11:26.511] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 23µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "P11rUANbKgAcGgNoBn85JwgrDBElRE41f82771K_HbS9rMTUEjHAQqxs", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://localhost:5329/assets/app.css", "1" => "http://localhost:5329/assets/app.js"}, "vsn" => "2.0.0"} [2026-09-02 10:11:26.657] [DEBUG] MOUNT PlatformWeb.DashboardLive Parameters: %{} Session: %{"_csrf_token" => "YeYg4ja_TxPQt2mrMADPt56F", "live_socket_id" => "users_sessions:1SCMkuUViXFyTH5BPBDsb34g_qe7I7Ttdm5i6LAnpjM=", "user_token" => <<213, 32, 140, 146, 229, 21, 137, 113, 114, 76, 126, 65, 60, 16, 236, 111, 126, 32, 254, 167, 187, 35, 180, 237, 118, 110, 98, 232, 176, 39, 166, 51>>} [2026-09-02 10:11:26.659] [DEBUG] QUERY OK source="users_tokens" db=1.0ms idle=283.1ms SELECT u1.`id`, u1.`email`, u1.`hashed_password`, u1.`confirmed_at`, u1.`role`, u1.`name`, u1.`first_name`, u1.`last_name`, u1.`data`, u1.`inserted_at`, u1.`updated_at` FROM `users_tokens` AS u0 INNER JOIN `users` AS u1 ON u1.`id` = u0.`user_id` WHERE ((u0.`token` = ?) AND (u0.`context` = ?)) AND (u0.`inserted_at` > date_add(?, INTERVAL -(60) day)) [<<213, 32, 140, 146, 229, 21, 137, 113, 114, 76, 126, 65, 60, 16, 236, 111, 126, 32, 254, 167, 187, 35, 180, 237, 118, 110, 98, 232, 176, 39, 166, 51>>, "session", ~U[2026-09-02 10:11:26.658018Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-09-02 10:11:26.660] [DEBUG] QUERY OK source="users_tokens" db=0.6ms idle=284.8ms SELECT u1.`id`, u1.`email`, u1.`hashed_password`, u1.`confirmed_at`, u1.`role`, u1.`name`, u1.`first_name`, u1.`last_name`, u1.`data`, u1.`inserted_at`, u1.`updated_at` FROM `users_tokens` AS u0 INNER JOIN `users` AS u1 ON u1.`id` = u0.`user_id` WHERE ((u0.`token` = ?) AND (u0.`context` = ?)) AND (u0.`inserted_at` > date_add(?, INTERVAL -(60) day)) [<<213, 32, 140, 146, 229, 21, 137, 113, 114, 76, 126, 65, 60, 16, 236, 111, 126, 32, 254, 167, 187, 35, 180, 237, 118, 110, 98, 232, 176, 39, 166, 51>>, "session", ~U[2026-09-02 10:11:26.659502Z]] ↳ PlatformWeb.DashboardLive.mount/3, at: lib/platform_web/live/dashboard_live.ex:10 [2026-09-02 10:11:26.661] [DEBUG] Socket Assigns: %{__changed__: %{current_user: true}, current_user: #DaProductApp.Users.User<__meta__: #Ecto.Schema.Metadata<:loaded, "users">, id: 3, email: "demo@mercury.com", confirmed_at: nil, role: :superuser, name: nil, first_name: nil, last_name: nil, data: nil, permissions: #Ecto.Association.NotLoaded, roles: #Ecto.Association.NotLoaded, inserted_at: ~U[2025-05-12 07:36:10Z], updated_at: ~U[2026-09-01 14:54:28Z], ...>, flash: %{"info" => "Welcome back!"}, live_action: :index} [2026-09-02 10:11:26.661] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms idle=699.1ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:83 [2026-09-02 10:11:26.662] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=243.9ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-09-02 00:00:00]] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:86 [2026-09-02 10:11:26.689] [DEBUG] QUERY OK source="tms_terminals" db=26.3ms idle=0.9ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 INNER JOIN `tms_terminal_status_logs` AS t1 ON t1.`terminal_id` = t0.`id` WHERE (t1.`inserted_at` >= ?) [~N[2026-09-02 00:00:00]] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:92 [2026-09-02 10:11:26.689] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.5ms idle=26.8ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE (t0.`installed_at` >= ?) [~U[2026-09-02 00:00:00Z]] ↳ TmsCore.TerminalManagement.get_dashboard_statistics/1, at: lib/tms_core/terminal_management.ex:101 [2026-09-02 10:11:26.690] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=1.0ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.get_device_online_rate/0, at: lib/tms_core/terminal_management.ex:140 [2026-09-02 10:11:26.692] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=0.8ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 WHERE (t0.`status` IN ('connected','online','Online')) [] ↳ TmsCore.TerminalManagement.get_device_online_rate/0, at: lib/tms_core/terminal_management.ex:143 [2026-09-02 10:11:26.726] [DEBUG] QUERY OK source="tms_terminals" db=34.1ms idle=2.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`area`, t0.`model`, t0.`imei`, t0.`remark`, t0.`vendor`, t0.`group`, t0.`inserted_at`, t0.`updated_at`, s1.`last_seen_at`, (SELECT value FROM tms_terminal_status_items WHERE status_log_id = t2.`id` AND itemkey = 'battery' ORDER BY inserted_at DESC LIMIT 1), (SELECT value FROM tms_terminal_status_items WHERE status_log_id = t2.`id` AND itemkey = 'cpu' ORDER BY inserted_at DESC LIMIT 1), (SELECT value FROM tms_terminal_status_items WHERE status_log_id = t2.`id` AND itemkey = 'memory' ORDER BY inserted_at DESC LIMIT 1) FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen_at`, max(st0.`id`) AS `last_status_log_id` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` LEFT OUTER JOIN `tms_terminal_status_logs` AS t2 ON t2.`id` = s1.`last_status_log_id` [] ↳ PlatformWeb.DashboardLive.mount/3, at: lib/platform_web/live/dashboard_live.ex:19 [2026-09-02 10:11:26.728] [DEBUG] QUERY OK source="ota_configurations" db=0.4ms idle=35.7ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-09-02 00:00:00Z], ~U[2026-09-02 01:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-09-02 10:11:26.729] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.2ms idle=1.8ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-09-02 00:00:00Z], ~U[2026-09-02 01:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-09-02 10:11:26.729] [DEBUG] QUERY OK source="ota_configurations" db=0.2ms idle=0.7ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-09-02 01:00:00Z], ~U[2026-09-02 02:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-09-02 10:11:26.730] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.2ms idle=0.7ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-09-02 01:00:00Z], ~U[2026-09-02 02:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-09-02 10:11:26.730] [DEBUG] QUERY OK source="ota_configurations" db=0.3ms queue=0.4ms idle=0.7ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-09-02 02:00:00Z], ~U[2026-09-02 03:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-09-02 10:11:26.731] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms queue=0.1ms idle=1.3ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-09-02 02:00:00Z], ~U[2026-09-02 03:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-09-02 10:11:26.732] [DEBUG] QUERY OK source="ota_configurations" db=0.3ms idle=1.1ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-09-02 03:00:00Z], ~U[2026-09-02 04:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-09-02 10:11:26.733] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.2ms idle=0.7ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-09-02 03:00:00Z], ~U[2026-09-02 04:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-09-02 10:11:26.734] [DEBUG] QUERY OK source="ota_configurations" db=0.2ms queue=0.2ms idle=1.2ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-09-02 04:00:00Z], ~U[2026-09-02 05:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-09-02 10:11:26.734] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms idle=1.4ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-09-02 04:00:00Z], ~U[2026-09-02 05:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-09-02 10:11:26.735] [DEBUG] QUERY OK source="ota_configurations" db=0.3ms idle=0.7ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-09-02 05:00:00Z], ~U[2026-09-02 06:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-09-02 10:11:26.736] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.5ms idle=0.7ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-09-02 05:00:00Z], ~U[2026-09-02 06:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-09-02 10:11:26.736] [DEBUG] QUERY OK source="ota_configurations" db=0.5ms idle=0.9ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-09-02 06:00:00Z], ~U[2026-09-02 07:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-09-02 10:11:26.737] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms idle=0.9ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-09-02 06:00:00Z], ~U[2026-09-02 07:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-09-02 10:11:26.738] [DEBUG] QUERY OK source="ota_configurations" db=0.5ms idle=0.8ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-09-02 07:00:00Z], ~U[2026-09-02 08:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-09-02 10:11:26.738] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms queue=0.1ms idle=1.0ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-09-02 07:00:00Z], ~U[2026-09-02 08:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-09-02 10:11:26.739] [DEBUG] QUERY OK source="ota_configurations" db=0.5ms idle=0.9ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-09-02 08:00:00Z], ~U[2026-09-02 09:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-09-02 10:11:26.740] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.6ms idle=1.0ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-09-02 08:00:00Z], ~U[2026-09-02 09:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-09-02 10:11:26.741] [DEBUG] QUERY OK source="ota_configurations" db=0.6ms idle=1.0ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-09-02 09:00:00Z], ~U[2026-09-02 10:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-09-02 10:11:26.742] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.4ms idle=1.0ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-09-02 09:00:00Z], ~U[2026-09-02 10:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-09-02 10:11:26.743] [DEBUG] QUERY OK source="ota_configurations" db=0.5ms idle=0.8ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-09-02 10:00:00Z], ~U[2026-09-02 11:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-09-02 10:11:26.743] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.5ms idle=0.9ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-09-02 10:00:00Z], ~U[2026-09-02 11:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-09-02 10:11:26.745] [DEBUG] QUERY OK source="ota_configurations" db=0.6ms queue=0.7ms idle=0.9ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-09-02 11:00:00Z], ~U[2026-09-02 12:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-09-02 10:11:26.745] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms idle=1.7ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-09-02 11:00:00Z], ~U[2026-09-02 12:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-09-02 10:11:26.747] [DEBUG] QUERY OK source="ota_configurations" db=0.9ms idle=0.8ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-09-02 12:00:00Z], ~U[2026-09-02 13:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-09-02 10:11:26.747] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.2ms idle=1.4ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-09-02 12:00:00Z], ~U[2026-09-02 13:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-09-02 10:11:26.748] [DEBUG] QUERY OK source="ota_configurations" db=0.5ms idle=0.7ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-09-02 13:00:00Z], ~U[2026-09-02 14:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-09-02 10:11:26.749] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.7ms queue=0.1ms idle=0.9ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-09-02 13:00:00Z], ~U[2026-09-02 14:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-09-02 10:11:26.750] [DEBUG] QUERY OK source="ota_configurations" db=0.5ms idle=1.3ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-09-02 14:00:00Z], ~U[2026-09-02 15:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-09-02 10:11:26.751] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.4ms idle=1.0ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-09-02 14:00:00Z], ~U[2026-09-02 15:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-09-02 10:11:26.752] [DEBUG] QUERY OK source="ota_configurations" db=0.4ms queue=0.3ms idle=0.8ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-09-02 15:00:00Z], ~U[2026-09-02 16:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-09-02 10:11:26.752] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms idle=1.2ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-09-02 15:00:00Z], ~U[2026-09-02 16:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-09-02 10:11:26.753] [DEBUG] QUERY OK source="ota_configurations" db=0.7ms idle=0.8ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-09-02 16:00:00Z], ~U[2026-09-02 17:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-09-02 10:11:26.754] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.2ms idle=1.1ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-09-02 16:00:00Z], ~U[2026-09-02 17:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-09-02 10:11:26.755] [DEBUG] QUERY OK source="ota_configurations" db=0.6ms idle=0.7ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-09-02 17:00:00Z], ~U[2026-09-02 18:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-09-02 10:11:26.757] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.6ms queue=0.1ms idle=2.1ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-09-02 17:00:00Z], ~U[2026-09-02 18:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-09-02 10:11:26.758] [DEBUG] QUERY OK source="ota_configurations" db=1.0ms idle=2.3ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-09-02 18:00:00Z], ~U[2026-09-02 19:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-09-02 10:11:26.759] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms idle=1.6ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-09-02 18:00:00Z], ~U[2026-09-02 19:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-09-02 10:11:26.762] [DEBUG] QUERY OK source="ota_configurations" db=2.6ms queue=0.2ms idle=0.9ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-09-02 19:00:00Z], ~U[2026-09-02 20:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-09-02 10:11:26.763] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.5ms idle=3.6ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-09-02 19:00:00Z], ~U[2026-09-02 20:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-09-02 10:11:26.764] [DEBUG] QUERY OK source="ota_configurations" db=0.7ms idle=1.1ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-09-02 20:00:00Z], ~U[2026-09-02 21:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-09-02 10:11:26.765] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.7ms idle=1.2ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-09-02 20:00:00Z], ~U[2026-09-02 21:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-09-02 10:11:26.766] [DEBUG] QUERY OK source="ota_configurations" db=1.0ms queue=0.2ms idle=1.1ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-09-02 21:00:00Z], ~U[2026-09-02 22:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-09-02 10:11:26.768] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.9ms idle=1.6ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-09-02 21:00:00Z], ~U[2026-09-02 22:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-09-02 10:11:26.769] [DEBUG] QUERY OK source="ota_configurations" db=0.5ms idle=1.4ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-09-02 22:00:00Z], ~U[2026-09-02 23:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-09-02 10:11:26.769] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.4ms idle=1.0ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-09-02 22:00:00Z], ~U[2026-09-02 23:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-09-02 10:11:26.770] [DEBUG] QUERY OK source="ota_configurations" db=0.3ms queue=0.5ms idle=0.8ms SELECT count(o0.`id`) FROM `ota_configurations` AS o0 WHERE (((o0.`sent_at` >= ?) AND (o0.`sent_at` < ?)) AND (o0.`status` = 'acknowledged')) [~U[2026-09-02 23:00:00Z], ~U[2026-09-03 00:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:197 [2026-09-02 10:11:26.771] [DEBUG] QUERY OK source="tms_terminal_app_versions" db=0.3ms idle=1.2ms SELECT count(t0.`id`) FROM `tms_terminal_app_versions` AS t0 WHERE ((t0.`installed_at` >= ?) AND (t0.`installed_at` < ?)) [~U[2026-09-02 23:00:00Z], ~U[2026-09-03 00:00:00Z]] ↳ anonymous fn/1 in TmsCore.TerminalManagement.get_hourly_chart_data/0, at: lib/tms_core/terminal_management.ex:204 [2026-09-02 10:11:26.773] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms queue=0.2ms idle=0.8ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-09-02 10:06:26.771365Z], ~U[2026-09-02 09:41:26.771365Z], ~U[2026-09-02 09:11:26.771365Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1986 [2026-09-02 10:11:26.798] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=24.4ms idle=2.6ms SELECT DATE_FORMAT(t0.`inserted_at`, '%Y-%m-%d %H:%i'), count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) GROUP BY DATE_FORMAT(t0.`inserted_at`, '%Y-%m-%d %H:%i') ORDER BY DATE_FORMAT(t0.`inserted_at`, '%Y-%m-%d %H:%i') [~N[2026-09-02 09:11:26]] ↳ TmsCore.TerminalManagement.get_connection_status_summary/0, at: lib/tms_core/terminal_management.ex:2018 [2026-09-02 10:11:26.821] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=22.4ms queue=0.1ms idle=25.2ms SELECT count(DISTINCT t0.`terminal_id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-09-02 10:10:26]] ↳ TmsCore.TerminalManagement.get_connection_status_summary/0, at: lib/tms_core/terminal_management.ex:2026 [2026-09-02 10:11:26.846] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=24.8ms idle=23.3ms SELECT count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-09-02 09:11:26]] ↳ TmsCore.TerminalManagement.get_parameter_push_success_rate/1, at: lib/tms_core/terminal_management.ex:2092 [2026-09-02 10:11:26.877] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=29.5ms idle=25.8ms SELECT count(t0.`id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-09-02 09:11:26]] ↳ TmsCore.TerminalManagement.get_average_response_time/1, at: lib/tms_core/terminal_management.ex:2108 [2026-09-02 10:11:26.910] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=32.4ms idle=30.8ms SELECT count(t0.`terminal_id`) FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`inserted_at` >= ?) [~N[2026-09-02 09:11:26]] ↳ TmsCore.TerminalManagement.calculate_uptime_percentage/1, at: lib/tms_core/terminal_management.ex:2134 [2026-09-02 10:11:26.911] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=33.4ms SELECT count(t0.`id`) FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.calculate_uptime_percentage/1, at: lib/tms_core/terminal_management.ex:2139 [2026-09-02 10:11:26.913] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=1.7ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-09-02 10:06:26.911600Z], ~U[2026-09-02 09:41:26.911600Z], ~U[2026-09-02 09:11:26.911600Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1986 [2026-09-02 10:11:26.914] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms queue=0.1ms idle=2.2ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-09-02 10:06:26.913273Z], ~U[2026-09-02 09:41:26.913273Z], ~U[2026-09-02 09:11:26.913273Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1986 [2026-09-02 10:11:26.916] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=2.1ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-09-02 10:06:26.915122Z], ~U[2026-09-02 09:41:26.915122Z], ~U[2026-09-02 09:11:26.915122Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1986 [2026-09-02 10:11:26.918] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=2.7ms SELECT t0.`id`, t0.`serial_number`, s1.`last_seen`, CASE WHEN s1.`last_seen` > ? THEN 'healthy' WHEN s1.`last_seen` > ? THEN 'warning' WHEN s1.`last_seen` > ? THEN 'critical' ELSE 'offline' END FROM `tms_terminals` AS t0 LEFT OUTER JOIN (SELECT st0.`terminal_id` AS `terminal_id`, max(st0.`inserted_at`) AS `last_seen` FROM `tms_terminal_status_logs` AS st0 GROUP BY st0.`terminal_id`) AS s1 ON s1.`terminal_id` = t0.`id` [~U[2026-09-02 10:06:26.917598Z], ~U[2026-09-02 09:41:26.917598Z], ~U[2026-09-02 09:11:26.917598Z]] ↳ TmsCore.TerminalManagement.get_device_health_metrics/0, at: lib/tms_core/terminal_management.ex:1986 [2026-09-02 10:11:26.919] [DEBUG] Replied in 261ms [2026-09-02 10:11:29.364] [WARN ] navigate event to "http://localhost:5329/admin/settlements/mis" failed because you are redirecting across live_sessions. A full page reload will be performed instead [2026-09-02 10:11:29.708] [INFO ] GET /admin/settlements/mis [2026-09-02 10:11:29.709] [DEBUG] Processing with PlatformWeb.SettlementLive.MisApproval.index/2 Parameters: %{} Pipelines: [:browser, :require_authenticated_user] [2026-09-02 10:11:29.710] [DEBUG] QUERY OK source="users_tokens" db=1.2ms idle=1334.0ms SELECT u1.`id`, u1.`email`, u1.`hashed_password`, u1.`confirmed_at`, u1.`role`, u1.`name`, u1.`first_name`, u1.`last_name`, u1.`data`, u1.`inserted_at`, u1.`updated_at` FROM `users_tokens` AS u0 INNER JOIN `users` AS u1 ON u1.`id` = u0.`user_id` WHERE ((u0.`token` = ?) AND (u0.`context` = ?)) AND (u0.`inserted_at` > date_add(?, INTERVAL -(60) day)) [<<213, 32, 140, 146, 229, 21, 137, 113, 114, 76, 126, 65, 60, 16, 236, 111, 126, 32, 254, 167, 187, 35, 180, 237, 118, 110, 98, 232, 176, 39, 166, 51>>, "session", ~U[2026-09-02 10:11:29.709362Z]] ↳ PlatformWeb.UserAuth.fetch_current_user/2, at: lib/platform_web/user_auth.ex:97 [2026-09-02 10:11:29.742] [DEBUG] QUERY OK source="settlement_mis" db=8.1ms queue=0.6ms idle=1007.3ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 ORDER BY s0.`mis_date` DESC LIMIT 100 [] ↳ PlatformWeb.SettlementLive.MisApproval.load_mis_rows/1, at: lib/platform_web/live/settlement_live/mis_approval.ex:505 [2026-09-02 10:11:29.751] [INFO ] Sent 200 in 42ms [2026-09-02 10:11:31.190] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 24µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "bQExXnEzDzcDHWE6JHsHQzkvJmk9YWVz4dh9EYnhWe1kPIj1tnb9ITS5", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://localhost:5329/assets/app.css", "1" => "http://localhost:5329/assets/app.js"}, "vsn" => "2.0.0"} [2026-09-02 10:11:31.348] [DEBUG] MOUNT PlatformWeb.SettlementLive.MisApproval Parameters: %{} Session: %{"_csrf_token" => "YeYg4ja_TxPQt2mrMADPt56F", "live_socket_id" => "users_sessions:1SCMkuUViXFyTH5BPBDsb34g_qe7I7Ttdm5i6LAnpjM=", "user_token" => <<213, 32, 140, 146, 229, 21, 137, 113, 114, 76, 126, 65, 60, 16, 236, 111, 126, 32, 254, 167, 187, 35, 180, 237, 118, 110, 98, 232, 176, 39, 166, 51>>} [2026-09-02 10:11:31.349] [DEBUG] QUERY OK source="users_tokens" db=1.2ms queue=0.1ms idle=1637.6ms SELECT u1.`id`, u1.`email`, u1.`hashed_password`, u1.`confirmed_at`, u1.`role`, u1.`name`, u1.`first_name`, u1.`last_name`, u1.`data`, u1.`inserted_at`, u1.`updated_at` FROM `users_tokens` AS u0 INNER JOIN `users` AS u1 ON u1.`id` = u0.`user_id` WHERE ((u0.`token` = ?) AND (u0.`context` = ?)) AND (u0.`inserted_at` > date_add(?, INTERVAL -(60) day)) [<<213, 32, 140, 146, 229, 21, 137, 113, 114, 76, 126, 65, 60, 16, 236, 111, 126, 32, 254, 167, 187, 35, 180, 237, 118, 110, 98, 232, 176, 39, 166, 51>>, "session", ~U[2026-09-02 10:11:31.348376Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-09-02 10:11:31.352] [DEBUG] QUERY OK source="settlement_mis" db=1.7ms queue=0.4ms idle=1372.5ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 ORDER BY s0.`mis_date` DESC LIMIT 100 [] ↳ PlatformWeb.SettlementLive.MisApproval.load_mis_rows/1, at: lib/platform_web/live/settlement_live/mis_approval.ex:505 [2026-09-02 10:11:31.354] [DEBUG] Replied in 5ms [2026-09-02 10:11:45.586] [INFO ] Received status update for terminal 98251226730001 [2026-09-02 10:11:45.587] [INFO ] Incoming JSON payload: {"oid":"9299eef9-954a-448c-8440-ad1424024d0d","sn":"98251226730001","uploadTime":"2026-09-02T10:11:44Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-09-02T10:11:44Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-09-02T10:11:44Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-09-02T10:11:44Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-09-02T10:11:44Z"},{"itemkey":"ram_free_mb","value":"829","timestamp":"2026-09-02T10:11:44Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-09-02T10:11:44Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-09-02T10:11:44Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-09-02T10:11:44Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-09-02T10:11:44Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-09-02T10:11:44Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-09-02T10:11:44Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-09-02T10:11:44Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-09-02T10:11:44Z"},{"itemkey":"data_usage_mb","value":"39","timestamp":"2026-09-02T10:11:44Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-09-02T10:11:44Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-09-02 10:11:45.588] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "9299eef9-954a-448c-8440-ad1424024d0d", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-09-02T10:11:44Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-09-02T10:11:44Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-09-02T10:11:44Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-09-02T10:11:44Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-09-02T10:11:44Z", "value" => "829"}, %{"itemkey" => "network_type", "timestamp" => "2026-09-02T10:11:44Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-09-02T10:11:44Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-09-02T10:11:44Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-09-02T10:11:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-09-02T10:11:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-09-02T10:11:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-09-02T10:11:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-09-02T10:11:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-09-02T10:11:44Z", "value" => "39"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-09-02T10:11:44Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-09-02T10:11:44Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-09-02T10:11:44Z", "vendor" => "morefun"} [2026-09-02 10:11:45.592] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-09-02 10:11:45.592] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-09-02 10:11:45.592] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-09-02 10:11:45.593] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=1174.7ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-09-02 10:11:45.594] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=561.3ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-09-02 10:11:45.594] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-09-02 10:11:45.596] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms idle=1.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:140 [2026-09-02 10:11:45.638] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=41.1ms idle=2.3ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-09-02 10:11:45], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-09-02 10:11:45.638] [INFO ] Terminal updated: 98251226730001 [2026-09-02 10:11:45.638] [DEBUG] Processing terminal event: terminal_updated [2026-09-02 10:11:45.639] [INFO ] Processing terminal_updated event for terminal 33 [2026-09-02 10:11:45.639] [INFO ] Changed fields: [:vendor, :model] [2026-09-02 10:11:45.639] [INFO ] Event published: terminal_updated [2026-09-02 10:11:45.661] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.4ms queue=0.5ms idle=64.1ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-09-02 10:11:45], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-09-02 10:11:45.663] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.7ms idle=23.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-09-02 10:11:45.688] [DEBUG] QUERY OK source="terminal_group_rules" db=0.4ms queue=1.7ms idle=22.4ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-09-02 10:11:45.688] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-09-02 10:11:45.708] [DEBUG] QUERY OK source="tms_terminals" db=4.2ms queue=41.7ms idle=0.5ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "kiosk_launcher", "morefun", nil, nil, nil, nil, ~N[2026-09-02 10:11:45], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:164 [2026-09-02 10:11:45.708] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-09-02 10:11:45.712] [DEBUG] QUERY OK source="tms_terminals" db=3.2ms idle=20.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:1184 [2026-09-02 10:11:45.840] [DEBUG] QUERY OK source="tms_terminals" db=82.4ms queue=41.1ms idle=8.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:11:45], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:174 [2026-09-02 10:11:45.842] [DEBUG] QUERY OK source="app_upgrade_device_statuses" db=1.2ms idle=128.7ms SELECT a0.`id`, a0.`config_id`, a0.`device_id`, a0.`device_sn`, a0.`vendor`, a0.`model`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`update_result`, a0.`status`, a0.`remark`, a0.`finish_time`, a0.`pushed_time`, a0.`retry_count`, a0.`inserted_at`, a0.`updated_at` FROM `app_upgrade_device_statuses` AS a0 WHERE ((a0.`device_sn` = ?) AND a0.`status` IN ('pending','pushed')) ["98251226730001"] ↳ TmsCore.TerminalManagement.AppUpgradeService.maybe_repush_for_device/1, at: lib/tms_core/terminal_management/app_upgrade_service.ex:148 [2026-09-02 10:11:45.900] [DEBUG] QUERY OK db=57.4ms idle=2.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "9299eef9-954a-448c-8440-ad1424024d0d", "2026-09-02T10:11:44Z", ~N[2026-09-02 10:11:45], ~N[2026-09-02 10:11:45]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:179 [2026-09-02 10:11:45.900] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 105743, oid: "9299eef9-954a-448c-8440-ad1424024d0d", upload_time: "2026-09-02T10:11:44Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:11:45], updated_at: ~N[2026-09-02 10:11:45]} [2026-09-02 10:11:45.900] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-09-02T10:11:44Z", "value" => "morefun"} [2026-09-02 10:11:46.014] [DEBUG] QUERY OK db=72.0ms queue=41.1ms idle=58.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:11:44Z", "morefun", "vendor", 105743, ~N[2026-09-02 10:11:45], ~N[2026-09-02 10:11:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:11:46.014] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083665, itemkey: "vendor", value: "morefun", timestamp: "2026-09-02T10:11:44Z", message: nil, status_log_id: 105743, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:11:45], updated_at: ~N[2026-09-02 10:11:45]}} [2026-09-02 10:11:46.014] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-09-02T10:11:44Z", "value" => "kiosk_launcher"} [2026-09-02 10:11:46.083] [DEBUG] QUERY OK db=68.6ms queue=0.1ms idle=114.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:11:44Z", "kiosk_launcher", "model", 105743, ~N[2026-09-02 10:11:46], ~N[2026-09-02 10:11:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:11:46.084] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083669, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-09-02T10:11:44Z", message: nil, status_log_id: 105743, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:11:46], updated_at: ~N[2026-09-02 10:11:46]}} [2026-09-02 10:11:46.084] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-09-02T10:11:44Z", "value" => "1.0"} [2026-09-02 10:11:46.225] [DEBUG] QUERY OK db=139.5ms idle=47.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:11:44Z", "1.0", "app_version", 105743, ~N[2026-09-02 10:11:46], ~N[2026-09-02 10:11:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:11:46.225] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083672, itemkey: "app_version", value: "1.0", timestamp: "2026-09-02T10:11:44Z", message: nil, status_log_id: 105743, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:11:46], updated_at: ~N[2026-09-02 10:11:46]}} [2026-09-02 10:11:46.225] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-09-02T10:11:44Z", "value" => "13"} [2026-09-02 10:11:46.314] [DEBUG] QUERY OK db=88.1ms idle=142.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:11:44Z", "13", "android_version", 105743, ~N[2026-09-02 10:11:46], ~N[2026-09-02 10:11:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:11:46.314] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083674, itemkey: "android_version", value: "13", timestamp: "2026-09-02T10:11:44Z", message: nil, status_log_id: 105743, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:11:46], updated_at: ~N[2026-09-02 10:11:46]}} [2026-09-02 10:11:46.314] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-09-02T10:11:44Z", "value" => "829"} [2026-09-02 10:11:46.379] [DEBUG] QUERY OK db=64.5ms idle=90.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:11:44Z", "829", "ram_free_mb", 105743, ~N[2026-09-02 10:11:46], ~N[2026-09-02 10:11:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:11:46.380] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083677, itemkey: "ram_free_mb", value: "829", timestamp: "2026-09-02T10:11:44Z", message: nil, status_log_id: 105743, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:11:46], updated_at: ~N[2026-09-02 10:11:46]}} [2026-09-02 10:11:46.380] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-09-02T10:11:44Z", "value" => "WIFI"} [2026-09-02 10:11:46.429] [DEBUG] QUERY OK db=49.0ms idle=66.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:11:44Z", "WIFI", "network_type", 105743, ~N[2026-09-02 10:11:46], ~N[2026-09-02 10:11:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:11:46.430] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083680, itemkey: "network_type", value: "WIFI", timestamp: "2026-09-02T10:11:44Z", message: nil, status_log_id: 105743, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:11:46], updated_at: ~N[2026-09-02 10:11:46]}} [2026-09-02 10:11:46.430] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-09-02T10:11:44Z", "value" => "true"} [2026-09-02 10:11:46.495] [DEBUG] QUERY OK db=62.6ms queue=0.4ms idle=51.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:11:44Z", "true", "kiosk_active", 105743, ~N[2026-09-02 10:11:46], ~N[2026-09-02 10:11:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:11:46.495] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083683, itemkey: "kiosk_active", value: "true", timestamp: "2026-09-02T10:11:44Z", message: nil, status_log_id: 105743, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:11:46], updated_at: ~N[2026-09-02 10:11:46]}} [2026-09-02 10:11:46.495] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-09-02T10:11:44Z", "value" => ""} [2026-09-02 10:11:46.551] [DEBUG] QUERY OK db=55.5ms idle=66.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-09-02T10:11:44Z", "sim_operator", 105743, ~N[2026-09-02 10:11:46], ~N[2026-09-02 10:11:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:11:46.551] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083686, itemkey: "sim_operator", value: nil, timestamp: "2026-09-02T10:11:44Z", message: nil, status_log_id: 105743, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:11:46], updated_at: ~N[2026-09-02 10:11:46]}} [2026-09-02 10:11:46.551] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-09-02T10:11:44Z", "value" => "UNKNOWN"} [2026-09-02 10:11:46.616] [DEBUG] QUERY OK db=64.3ms idle=57.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:11:44Z", "UNKNOWN", "sim_number", 105743, ~N[2026-09-02 10:11:46], ~N[2026-09-02 10:11:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:11:46.616] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083689, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-09-02T10:11:44Z", message: nil, status_log_id: 105743, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:11:46], updated_at: ~N[2026-09-02 10:11:46]}} [2026-09-02 10:11:46.616] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-09-02T10:11:44Z", "value" => "UNKNOWN"} [2026-09-02 10:11:46.675] [DEBUG] QUERY OK db=58.3ms idle=65.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:11:44Z", "UNKNOWN", "sim_iccid", 105743, ~N[2026-09-02 10:11:46], ~N[2026-09-02 10:11:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:11:46.675] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083692, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-09-02T10:11:44Z", message: nil, status_log_id: 105743, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:11:46], updated_at: ~N[2026-09-02 10:11:46]}} [2026-09-02 10:11:46.676] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-09-02T10:11:44Z", "value" => "UNKNOWN"} [2026-09-02 10:11:46.733] [DEBUG] QUERY OK db=56.7ms idle=59.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:11:44Z", "UNKNOWN", "sim_imsi", 105743, ~N[2026-09-02 10:11:46], ~N[2026-09-02 10:11:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:11:46.733] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083695, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-09-02T10:11:44Z", message: nil, status_log_id: 105743, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:11:46], updated_at: ~N[2026-09-02 10:11:46]}} [2026-09-02 10:11:46.733] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-09-02T10:11:44Z", "value" => "UNKNOWN"} [2026-09-02 10:11:46.767] [DEBUG] QUERY OK db=32.1ms idle=59.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:11:44Z", "UNKNOWN", "sim_iccid2", 105743, ~N[2026-09-02 10:11:46], ~N[2026-09-02 10:11:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:11:46.767] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083698, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-09-02T10:11:44Z", message: nil, status_log_id: 105743, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:11:46], updated_at: ~N[2026-09-02 10:11:46]}} [2026-09-02 10:11:46.767] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-09-02T10:11:44Z", "value" => "UNKNOWN"} [2026-09-02 10:11:46.875] [DEBUG] QUERY OK db=107.2ms idle=34.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:11:44Z", "UNKNOWN", "sim_imsi2", 105743, ~N[2026-09-02 10:11:46], ~N[2026-09-02 10:11:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:11:46.875] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083701, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-09-02T10:11:44Z", message: nil, status_log_id: 105743, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:11:46], updated_at: ~N[2026-09-02 10:11:46]}} [2026-09-02 10:11:46.875] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-09-02T10:11:44Z", "value" => "39"} [2026-09-02 10:11:46.932] [DEBUG] QUERY OK db=56.5ms idle=108.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:11:44Z", "39", "data_usage_mb", 105743, ~N[2026-09-02 10:11:46], ~N[2026-09-02 10:11:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:11:46.932] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083704, itemkey: "data_usage_mb", value: "39", timestamp: "2026-09-02T10:11:44Z", message: nil, status_log_id: 105743, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:11:46], updated_at: ~N[2026-09-02 10:11:46]}} [2026-09-02 10:11:46.932] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-09-02T10:11:44Z", "value" => "0"} [2026-09-02 10:11:47.001] [DEBUG] QUERY OK db=67.5ms queue=0.9ms idle=58.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:11:44Z", "0", "mobile_data_mb", 105743, ~N[2026-09-02 10:11:46], ~N[2026-09-02 10:11:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:11:47.001] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083707, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-09-02T10:11:44Z", message: nil, status_log_id: 105743, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:11:46], updated_at: ~N[2026-09-02 10:11:46]}} [2026-09-02 10:11:47.002] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-09-02T10:11:44Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-09-02 10:11:47.070] [DEBUG] QUERY OK db=66.9ms idle=70.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:11:44Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 105743, ~N[2026-09-02 10:11:47], ~N[2026-09-02 10:11:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:11:47.071] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083710, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-09-02T10:11:44Z", message: nil, status_log_id: 105743, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:11:47], updated_at: ~N[2026-09-02 10:11:47]}} [2026-09-02 10:12:00.394] [INFO ] [Ysp.Scheduler] 07:00 AM — enqueuing Settlement MIS generation for yesterday [2026-09-02 10:12:00.447] [INFO ] [Ysp.Scheduler] Next MIS generation in 24h 0m [2026-09-02 10:12:00.538] [INFO ] [MisGenerationWorker] Generating MIS date=2026-09-01 channel=COMBINED [2026-09-02 10:12:00.545] [DEBUG] QUERY OK source="settlement_mis" db=0.4ms queue=0.6ms idle=94.8ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 WHERE (s0.`mis_date` = ?) [~D[2026-09-01]] ↳ SettlementCore.SettlementMisGenerator.generate_for_date/2, at: lib/settlement_core/settlement_mis_generator.ex:60 [2026-09-02 10:12:00.545] [INFO ] [MisGenerator] Generating MIS for 2026-09-01 / COMBINED [2026-09-02 10:12:00.555] [DEBUG] QUERY OK source="core_transactions" db=2.0ms queue=3.7ms idle=16.7ms SELECT c0.`merchant_mid`, c0.`merchant_id`, c0.`card_type_code`, c0.`scheme_name`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`), sum(c0.`net_settlement_amount`) FROM `core_transactions` AS c0 WHERE ((c0.`switch_settled_date` = ?) OR (c0.`released_for_settlement_date` = ?)) AND (c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE) AND (c0.`chargeback_hold` = FALSE) AND (c0.`exception_type` IS NULL) AND (DATE(c0.`transaction_datetime`) >= ?) GROUP BY c0.`merchant_mid`, c0.`merchant_id`, c0.`card_type_code`, c0.`scheme_name` [~D[2026-09-01], ~D[2026-09-01], ~D[2026-08-02]] ↳ SettlementCore.SettlementMisGenerator.do_generate/2, at: lib/settlement_core/settlement_mis_generator.ex:107 [2026-09-02 10:12:00.568] [DEBUG] QUERY OK source="tid_masters" db=0.7ms queue=0.8ms idle=23.5ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?,?)) ["419926360000000", "425590250000000", "E2E_M3_TEST001"] ↳ SettlementCore.SettlementMisGenerator.build_merchant_name_map/1, at: lib/settlement_core/settlement_mis_generator.ex:192 [2026-09-02 10:12:00.574] [DEBUG] QUERY ERROR source="interchange_rates" db=0.0ms queue=1.8ms idle=16.3ms SELECT i0.`id`, i0.`card_type_id`, i0.`card_type_code`, i0.`scheme_name`, i0.`rate_percentage`, i0.`fixed_fee`, i0.`effective_from`, i0.`effective_to`, i0.`status`, i0.`notes`, i0.`inserted_at`, i0.`updated_at` FROM `interchange_rates` AS i0 WHERE (i0.`scheme_name` = ?) AND (i0.`card_type_code` = ?) AND (i0.`status` = 1) AND (i0.`effective_from` <= ?) AND ((i0.`effective_to` IS NULL) OR (i0.`effective_to` >= ?)) ORDER BY i0.`effective_from` DESC LIMIT 1 ["MASTERCARD", "MC_CREDIT_STD", ~D[2026-09-01], ~D[2026-09-01]] ↳ SettlementCore.SettlementMisGenerator.lookup_interchange_fee/4, at: lib/settlement_core/settlement_mis_generator.ex:251 [2026-09-02 10:12:15.510] [INFO ] Received status update for terminal 98251226730001 [2026-09-02 10:12:15.511] [INFO ] Incoming JSON payload: {"oid":"8ca93679-f241-4185-814a-04bf6d2fad12","sn":"98251226730001","uploadTime":"2026-09-02T10:12:14Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-09-02T10:12:14Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-09-02T10:12:14Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-09-02T10:12:14Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-09-02T10:12:14Z"},{"itemkey":"ram_free_mb","value":"833","timestamp":"2026-09-02T10:12:14Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-09-02T10:12:14Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-09-02T10:12:14Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-09-02T10:12:14Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-09-02T10:12:14Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-09-02T10:12:14Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-09-02T10:12:14Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-09-02T10:12:14Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-09-02T10:12:14Z"},{"itemkey":"data_usage_mb","value":"39","timestamp":"2026-09-02T10:12:14Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-09-02T10:12:14Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-09-02 10:12:15.514] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "8ca93679-f241-4185-814a-04bf6d2fad12", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-09-02T10:12:14Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-09-02T10:12:14Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-09-02T10:12:14Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-09-02T10:12:14Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-09-02T10:12:14Z", "value" => "833"}, %{"itemkey" => "network_type", "timestamp" => "2026-09-02T10:12:14Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-09-02T10:12:14Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-09-02T10:12:14Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-09-02T10:12:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-09-02T10:12:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-09-02T10:12:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-09-02T10:12:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-09-02T10:12:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-09-02T10:12:14Z", "value" => "39"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-09-02T10:12:14Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-09-02T10:12:14Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-09-02T10:12:14Z", "vendor" => "morefun"} [2026-09-02 10:12:15.514] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-09-02 10:12:15.514] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-09-02 10:12:15.514] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-09-02 10:12:15.517] [DEBUG] QUERY OK source="parameter_templates" db=2.6ms idle=358.3ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-09-02 10:12:15.521] [DEBUG] QUERY OK source="parameter_templates" db=3.2ms queue=0.1ms idle=98.2ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-09-02 10:12:15.521] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-09-02 10:12:15.522] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=4.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:140 [2026-09-02 10:12:15.523] [INFO ] Terminal updated: 98251226730001 [2026-09-02 10:12:15.621] [DEBUG] QUERY OK source="tms_terminals" db=56.4ms queue=41.0ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-09-02 10:12:15], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:164 [2026-09-02 10:12:15.621] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-09-02 10:12:15.623] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=98.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:1184 [2026-09-02 10:12:15.666] [DEBUG] QUERY OK source="tms_terminals" db=42.9ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:12:15], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:174 [2026-09-02 10:12:15.668] [DEBUG] QUERY OK source="app_upgrade_device_statuses" db=1.1ms idle=44.4ms SELECT a0.`id`, a0.`config_id`, a0.`device_id`, a0.`device_sn`, a0.`vendor`, a0.`model`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`update_result`, a0.`status`, a0.`remark`, a0.`finish_time`, a0.`pushed_time`, a0.`retry_count`, a0.`inserted_at`, a0.`updated_at` FROM `app_upgrade_device_statuses` AS a0 WHERE ((a0.`device_sn` = ?) AND a0.`status` IN ('pending','pushed')) ["98251226730001"] ↳ TmsCore.TerminalManagement.AppUpgradeService.maybe_repush_for_device/1, at: lib/tms_core/terminal_management/app_upgrade_service.ex:148 [2026-09-02 10:12:15.714] [DEBUG] QUERY OK db=45.1ms idle=2.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "8ca93679-f241-4185-814a-04bf6d2fad12", "2026-09-02T10:12:14Z", ~N[2026-09-02 10:12:15], ~N[2026-09-02 10:12:15]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:179 [2026-09-02 10:12:15.714] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 105747, oid: "8ca93679-f241-4185-814a-04bf6d2fad12", upload_time: "2026-09-02T10:12:14Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:12:15], updated_at: ~N[2026-09-02 10:12:15]} [2026-09-02 10:12:15.714] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-09-02T10:12:14Z", "value" => "morefun"} [2026-09-02 10:12:15.784] [DEBUG] QUERY OK db=69.4ms idle=46.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:12:14Z", "morefun", "vendor", 105747, ~N[2026-09-02 10:12:15], ~N[2026-09-02 10:12:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:12:15.784] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083715, itemkey: "vendor", value: "morefun", timestamp: "2026-09-02T10:12:14Z", message: nil, status_log_id: 105747, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:12:15], updated_at: ~N[2026-09-02 10:12:15]}} [2026-09-02 10:12:15.785] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-09-02T10:12:14Z", "value" => "kiosk_launcher"} [2026-09-02 10:12:15.842] [DEBUG] QUERY OK db=56.8ms idle=71.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:12:14Z", "kiosk_launcher", "model", 105747, ~N[2026-09-02 10:12:15], ~N[2026-09-02 10:12:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:12:15.842] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083718, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-09-02T10:12:14Z", message: nil, status_log_id: 105747, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:12:15], updated_at: ~N[2026-09-02 10:12:15]}} [2026-09-02 10:12:15.842] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-09-02T10:12:14Z", "value" => "1.0"} [2026-09-02 10:12:15.890] [DEBUG] QUERY OK db=46.5ms queue=0.1ms idle=59.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:12:14Z", "1.0", "app_version", 105747, ~N[2026-09-02 10:12:15], ~N[2026-09-02 10:12:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:12:15.890] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083722, itemkey: "app_version", value: "1.0", timestamp: "2026-09-02T10:12:14Z", message: nil, status_log_id: 105747, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:12:15], updated_at: ~N[2026-09-02 10:12:15]}} [2026-09-02 10:12:15.891] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-09-02T10:12:14Z", "value" => "13"} [2026-09-02 10:12:15.962] [DEBUG] QUERY OK db=71.4ms idle=49.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:12:14Z", "13", "android_version", 105747, ~N[2026-09-02 10:12:15], ~N[2026-09-02 10:12:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:12:15.963] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083724, itemkey: "android_version", value: "13", timestamp: "2026-09-02T10:12:14Z", message: nil, status_log_id: 105747, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:12:15], updated_at: ~N[2026-09-02 10:12:15]}} [2026-09-02 10:12:15.963] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-09-02T10:12:14Z", "value" => "833"} [2026-09-02 10:12:16.037] [DEBUG] QUERY OK db=73.8ms idle=72.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:12:14Z", "833", "ram_free_mb", 105747, ~N[2026-09-02 10:12:15], ~N[2026-09-02 10:12:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:12:16.037] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083727, itemkey: "ram_free_mb", value: "833", timestamp: "2026-09-02T10:12:14Z", message: nil, status_log_id: 105747, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:12:15], updated_at: ~N[2026-09-02 10:12:15]}} [2026-09-02 10:12:16.037] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-09-02T10:12:14Z", "value" => "WIFI"} [2026-09-02 10:12:16.141] [DEBUG] QUERY OK db=103.1ms idle=75.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:12:14Z", "WIFI", "network_type", 105747, ~N[2026-09-02 10:12:16], ~N[2026-09-02 10:12:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:12:16.141] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083730, itemkey: "network_type", value: "WIFI", timestamp: "2026-09-02T10:12:14Z", message: nil, status_log_id: 105747, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:12:16], updated_at: ~N[2026-09-02 10:12:16]}} [2026-09-02 10:12:16.141] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-09-02T10:12:14Z", "value" => "true"} [2026-09-02 10:12:16.211] [DEBUG] QUERY OK db=69.6ms idle=104.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:12:14Z", "true", "kiosk_active", 105747, ~N[2026-09-02 10:12:16], ~N[2026-09-02 10:12:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:12:16.211] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083733, itemkey: "kiosk_active", value: "true", timestamp: "2026-09-02T10:12:14Z", message: nil, status_log_id: 105747, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:12:16], updated_at: ~N[2026-09-02 10:12:16]}} [2026-09-02 10:12:16.212] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-09-02T10:12:14Z", "value" => ""} [2026-09-02 10:12:16.255] [DEBUG] QUERY OK db=41.9ms queue=1.1ms idle=52.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-09-02T10:12:14Z", "sim_operator", 105747, ~N[2026-09-02 10:12:16], ~N[2026-09-02 10:12:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:12:16.255] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083737, itemkey: "sim_operator", value: nil, timestamp: "2026-09-02T10:12:14Z", message: nil, status_log_id: 105747, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:12:16], updated_at: ~N[2026-09-02 10:12:16]}} [2026-09-02 10:12:16.256] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-09-02T10:12:14Z", "value" => "UNKNOWN"} [2026-09-02 10:12:16.322] [DEBUG] QUERY OK db=65.5ms queue=0.2ms idle=44.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:12:14Z", "UNKNOWN", "sim_number", 105747, ~N[2026-09-02 10:12:16], ~N[2026-09-02 10:12:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:12:16.322] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083740, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-09-02T10:12:14Z", message: nil, status_log_id: 105747, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:12:16], updated_at: ~N[2026-09-02 10:12:16]}} [2026-09-02 10:12:16.322] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-09-02T10:12:14Z", "value" => "UNKNOWN"} [2026-09-02 10:12:16.379] [DEBUG] QUERY OK db=56.2ms idle=67.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:12:14Z", "UNKNOWN", "sim_iccid", 105747, ~N[2026-09-02 10:12:16], ~N[2026-09-02 10:12:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:12:16.379] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083743, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-09-02T10:12:14Z", message: nil, status_log_id: 105747, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:12:16], updated_at: ~N[2026-09-02 10:12:16]}} [2026-09-02 10:12:16.381] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-09-02T10:12:14Z", "value" => "UNKNOWN"} [2026-09-02 10:12:16.449] [DEBUG] QUERY OK db=68.0ms idle=59.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:12:14Z", "UNKNOWN", "sim_imsi", 105747, ~N[2026-09-02 10:12:16], ~N[2026-09-02 10:12:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:12:16.450] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083746, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-09-02T10:12:14Z", message: nil, status_log_id: 105747, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:12:16], updated_at: ~N[2026-09-02 10:12:16]}} [2026-09-02 10:12:16.450] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-09-02T10:12:14Z", "value" => "UNKNOWN"} [2026-09-02 10:12:16.495] [DEBUG] QUERY OK db=44.8ms idle=71.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:12:14Z", "UNKNOWN", "sim_iccid2", 105747, ~N[2026-09-02 10:12:16], ~N[2026-09-02 10:12:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:12:16.495] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083748, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-09-02T10:12:14Z", message: nil, status_log_id: 105747, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:12:16], updated_at: ~N[2026-09-02 10:12:16]}} [2026-09-02 10:12:16.495] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-09-02T10:12:14Z", "value" => "UNKNOWN"} [2026-09-02 10:12:16.702] [DEBUG] QUERY OK db=205.3ms idle=46.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:12:14Z", "UNKNOWN", "sim_imsi2", 105747, ~N[2026-09-02 10:12:16], ~N[2026-09-02 10:12:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:12:16.702] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083752, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-09-02T10:12:14Z", message: nil, status_log_id: 105747, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:12:16], updated_at: ~N[2026-09-02 10:12:16]}} [2026-09-02 10:12:16.702] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-09-02T10:12:14Z", "value" => "39"} [2026-09-02 10:12:16.850] [DEBUG] QUERY OK db=146.9ms queue=0.1ms idle=207.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:12:14Z", "39", "data_usage_mb", 105747, ~N[2026-09-02 10:12:16], ~N[2026-09-02 10:12:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:12:16.850] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083754, itemkey: "data_usage_mb", value: "39", timestamp: "2026-09-02T10:12:14Z", message: nil, status_log_id: 105747, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:12:16], updated_at: ~N[2026-09-02 10:12:16]}} [2026-09-02 10:12:16.850] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-09-02T10:12:14Z", "value" => "0"} [2026-09-02 10:12:16.926] [DEBUG] QUERY OK db=75.3ms queue=0.4ms idle=149.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:12:14Z", "0", "mobile_data_mb", 105747, ~N[2026-09-02 10:12:16], ~N[2026-09-02 10:12:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:12:16.927] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083757, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-09-02T10:12:14Z", message: nil, status_log_id: 105747, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:12:16], updated_at: ~N[2026-09-02 10:12:16]}} [2026-09-02 10:12:16.928] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-09-02T10:12:14Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-09-02 10:12:17.113] [DEBUG] QUERY OK db=184.0ms idle=78.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:12:14Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 105747, ~N[2026-09-02 10:12:16], ~N[2026-09-02 10:12:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:12:17.114] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083759, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-09-02T10:12:14Z", message: nil, status_log_id: 105747, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:12:16], updated_at: ~N[2026-09-02 10:12:16]}} [2026-09-02 10:12:18.264] [INFO ] [MisGenerationWorker] Generating MIS date=2026-09-01 channel=COMBINED [2026-09-02 10:12:18.266] [DEBUG] QUERY OK source="settlement_mis" db=0.9ms idle=98.2ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 WHERE (s0.`mis_date` = ?) [~D[2026-09-01]] ↳ SettlementCore.SettlementMisGenerator.generate_for_date/2, at: lib/settlement_core/settlement_mis_generator.ex:60 [2026-09-02 10:12:18.266] [INFO ] [MisGenerator] Generating MIS for 2026-09-01 / COMBINED [2026-09-02 10:12:18.267] [DEBUG] QUERY OK source="core_transactions" db=1.4ms idle=1.7ms SELECT c0.`merchant_mid`, c0.`merchant_id`, c0.`card_type_code`, c0.`scheme_name`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`), sum(c0.`net_settlement_amount`) FROM `core_transactions` AS c0 WHERE ((c0.`switch_settled_date` = ?) OR (c0.`released_for_settlement_date` = ?)) AND (c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE) AND (c0.`chargeback_hold` = FALSE) AND (c0.`exception_type` IS NULL) AND (DATE(c0.`transaction_datetime`) >= ?) GROUP BY c0.`merchant_mid`, c0.`merchant_id`, c0.`card_type_code`, c0.`scheme_name` [~D[2026-09-01], ~D[2026-09-01], ~D[2026-08-02]] ↳ SettlementCore.SettlementMisGenerator.do_generate/2, at: lib/settlement_core/settlement_mis_generator.ex:107 [2026-09-02 10:12:18.269] [DEBUG] QUERY OK source="tid_masters" db=0.6ms queue=0.7ms idle=2.1ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?,?)) ["419926360000000", "425590250000000", "E2E_M3_TEST001"] ↳ SettlementCore.SettlementMisGenerator.build_merchant_name_map/1, at: lib/settlement_core/settlement_mis_generator.ex:192 [2026-09-02 10:12:18.270] [DEBUG] QUERY ERROR source="interchange_rates" db=0.0ms queue=0.5ms idle=1.9ms SELECT i0.`id`, i0.`card_type_id`, i0.`card_type_code`, i0.`scheme_name`, i0.`rate_percentage`, i0.`fixed_fee`, i0.`effective_from`, i0.`effective_to`, i0.`status`, i0.`notes`, i0.`inserted_at`, i0.`updated_at` FROM `interchange_rates` AS i0 WHERE (i0.`scheme_name` = ?) AND (i0.`card_type_code` = ?) AND (i0.`status` = 1) AND (i0.`effective_from` <= ?) AND ((i0.`effective_to` IS NULL) OR (i0.`effective_to` >= ?)) ORDER BY i0.`effective_from` DESC LIMIT 1 ["MASTERCARD", "MC_CREDIT_STD", ~D[2026-09-01], ~D[2026-09-01]] ↳ SettlementCore.SettlementMisGenerator.lookup_interchange_fee/4, at: lib/settlement_core/settlement_mis_generator.ex:251 [2026-09-02 10:12:45.594] [INFO ] Received status update for terminal 98251226730001 [2026-09-02 10:12:45.594] [INFO ] Incoming JSON payload: {"oid":"842ab724-213a-40d4-b641-306ff10a4f6c","sn":"98251226730001","uploadTime":"2026-09-02T10:12:44Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-09-02T10:12:44Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-09-02T10:12:44Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-09-02T10:12:44Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-09-02T10:12:44Z"},{"itemkey":"ram_free_mb","value":"831","timestamp":"2026-09-02T10:12:44Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-09-02T10:12:44Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-09-02T10:12:44Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-09-02T10:12:44Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-09-02T10:12:44Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-09-02T10:12:44Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-09-02T10:12:44Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-09-02T10:12:44Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-09-02T10:12:44Z"},{"itemkey":"data_usage_mb","value":"39","timestamp":"2026-09-02T10:12:44Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-09-02T10:12:44Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-09-02 10:12:45.596] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "842ab724-213a-40d4-b641-306ff10a4f6c", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-09-02T10:12:44Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-09-02T10:12:44Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-09-02T10:12:44Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-09-02T10:12:44Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-09-02T10:12:44Z", "value" => "831"}, %{"itemkey" => "network_type", "timestamp" => "2026-09-02T10:12:44Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-09-02T10:12:44Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-09-02T10:12:44Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-09-02T10:12:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-09-02T10:12:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-09-02T10:12:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-09-02T10:12:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-09-02T10:12:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-09-02T10:12:44Z", "value" => "39"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-09-02T10:12:44Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-09-02T10:12:44Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-09-02T10:12:44Z", "vendor" => "morefun"} [2026-09-02 10:12:45.596] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-09-02 10:12:45.596] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-09-02 10:12:45.596] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-09-02 10:12:45.601] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=346.5ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-09-02 10:12:45.602] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=180.9ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-09-02 10:12:45.602] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-09-02 10:12:45.605] [DEBUG] QUERY OK source="tms_terminals" db=2.0ms idle=1.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:140 [2026-09-02 10:12:45.605] [INFO ] Terminal updated: 98251226730001 [2026-09-02 10:12:45.634] [DEBUG] QUERY OK source="tms_terminals" db=28.9ms idle=2.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-09-02 10:12:45], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:164 [2026-09-02 10:12:45.634] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-09-02 10:12:45.636] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=30.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:1184 [2026-09-02 10:12:45.686] [DEBUG] QUERY OK source="tms_terminals" db=49.6ms queue=0.1ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:12:45], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:174 [2026-09-02 10:12:45.688] [DEBUG] QUERY OK source="app_upgrade_device_statuses" db=1.1ms idle=50.4ms SELECT a0.`id`, a0.`config_id`, a0.`device_id`, a0.`device_sn`, a0.`vendor`, a0.`model`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`update_result`, a0.`status`, a0.`remark`, a0.`finish_time`, a0.`pushed_time`, a0.`retry_count`, a0.`inserted_at`, a0.`updated_at` FROM `app_upgrade_device_statuses` AS a0 WHERE ((a0.`device_sn` = ?) AND a0.`status` IN ('pending','pushed')) ["98251226730001"] ↳ TmsCore.TerminalManagement.AppUpgradeService.maybe_repush_for_device/1, at: lib/tms_core/terminal_management/app_upgrade_service.ex:148 [2026-09-02 10:12:45.782] [DEBUG] QUERY OK db=93.9ms queue=0.4ms idle=1.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "842ab724-213a-40d4-b641-306ff10a4f6c", "2026-09-02T10:12:44Z", ~N[2026-09-02 10:12:45], ~N[2026-09-02 10:12:45]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:179 [2026-09-02 10:12:45.782] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 105749, oid: "842ab724-213a-40d4-b641-306ff10a4f6c", upload_time: "2026-09-02T10:12:44Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:12:45], updated_at: ~N[2026-09-02 10:12:45]} [2026-09-02 10:12:45.783] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-09-02T10:12:44Z", "value" => "morefun"} [2026-09-02 10:12:45.856] [DEBUG] QUERY OK db=72.9ms idle=95.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:12:44Z", "morefun", "vendor", 105749, ~N[2026-09-02 10:12:45], ~N[2026-09-02 10:12:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:12:45.856] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083760, itemkey: "vendor", value: "morefun", timestamp: "2026-09-02T10:12:44Z", message: nil, status_log_id: 105749, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:12:45], updated_at: ~N[2026-09-02 10:12:45]}} [2026-09-02 10:12:45.856] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-09-02T10:12:44Z", "value" => "kiosk_launcher"} [2026-09-02 10:12:45.912] [DEBUG] QUERY OK db=55.2ms idle=74.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:12:44Z", "kiosk_launcher", "model", 105749, ~N[2026-09-02 10:12:45], ~N[2026-09-02 10:12:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:12:45.912] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083762, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-09-02T10:12:44Z", message: nil, status_log_id: 105749, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:12:45], updated_at: ~N[2026-09-02 10:12:45]}} [2026-09-02 10:12:45.913] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-09-02T10:12:44Z", "value" => "1.0"} [2026-09-02 10:12:45.972] [DEBUG] QUERY OK db=59.3ms idle=56.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:12:44Z", "1.0", "app_version", 105749, ~N[2026-09-02 10:12:45], ~N[2026-09-02 10:12:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:12:45.973] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083765, itemkey: "app_version", value: "1.0", timestamp: "2026-09-02T10:12:44Z", message: nil, status_log_id: 105749, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:12:45], updated_at: ~N[2026-09-02 10:12:45]}} [2026-09-02 10:12:45.973] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-09-02T10:12:44Z", "value" => "13"} [2026-09-02 10:12:46.049] [DEBUG] QUERY OK db=75.7ms idle=61.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:12:44Z", "13", "android_version", 105749, ~N[2026-09-02 10:12:45], ~N[2026-09-02 10:12:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:12:46.050] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083768, itemkey: "android_version", value: "13", timestamp: "2026-09-02T10:12:44Z", message: nil, status_log_id: 105749, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:12:45], updated_at: ~N[2026-09-02 10:12:45]}} [2026-09-02 10:12:46.050] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-09-02T10:12:44Z", "value" => "831"} [2026-09-02 10:12:46.109] [DEBUG] QUERY OK db=55.9ms queue=2.6ms idle=77.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:12:44Z", "831", "ram_free_mb", 105749, ~N[2026-09-02 10:12:46], ~N[2026-09-02 10:12:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:12:46.109] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083772, itemkey: "ram_free_mb", value: "831", timestamp: "2026-09-02T10:12:44Z", message: nil, status_log_id: 105749, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:12:46], updated_at: ~N[2026-09-02 10:12:46]}} [2026-09-02 10:12:46.109] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-09-02T10:12:44Z", "value" => "WIFI"} [2026-09-02 10:12:46.172] [DEBUG] QUERY OK db=62.5ms idle=60.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:12:44Z", "WIFI", "network_type", 105749, ~N[2026-09-02 10:12:46], ~N[2026-09-02 10:12:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:12:46.173] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083774, itemkey: "network_type", value: "WIFI", timestamp: "2026-09-02T10:12:44Z", message: nil, status_log_id: 105749, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:12:46], updated_at: ~N[2026-09-02 10:12:46]}} [2026-09-02 10:12:46.173] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-09-02T10:12:44Z", "value" => "true"} [2026-09-02 10:12:46.270] [DEBUG] QUERY OK db=96.2ms idle=64.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:12:44Z", "true", "kiosk_active", 105749, ~N[2026-09-02 10:12:46], ~N[2026-09-02 10:12:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:12:46.270] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083777, itemkey: "kiosk_active", value: "true", timestamp: "2026-09-02T10:12:44Z", message: nil, status_log_id: 105749, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:12:46], updated_at: ~N[2026-09-02 10:12:46]}} [2026-09-02 10:12:46.270] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-09-02T10:12:44Z", "value" => ""} [2026-09-02 10:12:46.325] [DEBUG] QUERY OK db=54.8ms idle=13.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-09-02T10:12:44Z", "sim_operator", 105749, ~N[2026-09-02 10:12:46], ~N[2026-09-02 10:12:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:12:46.325] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083780, itemkey: "sim_operator", value: nil, timestamp: "2026-09-02T10:12:44Z", message: nil, status_log_id: 105749, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:12:46], updated_at: ~N[2026-09-02 10:12:46]}} [2026-09-02 10:12:46.326] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-09-02T10:12:44Z", "value" => "UNKNOWN"} [2026-09-02 10:12:46.377] [DEBUG] QUERY OK db=50.7ms idle=56.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:12:44Z", "UNKNOWN", "sim_number", 105749, ~N[2026-09-02 10:12:46], ~N[2026-09-02 10:12:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:12:46.377] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083783, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-09-02T10:12:44Z", message: nil, status_log_id: 105749, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:12:46], updated_at: ~N[2026-09-02 10:12:46]}} [2026-09-02 10:12:46.377] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-09-02T10:12:44Z", "value" => "UNKNOWN"} [2026-09-02 10:12:46.420] [DEBUG] QUERY OK db=42.2ms idle=52.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:12:44Z", "UNKNOWN", "sim_iccid", 105749, ~N[2026-09-02 10:12:46], ~N[2026-09-02 10:12:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:12:46.420] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083786, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-09-02T10:12:44Z", message: nil, status_log_id: 105749, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:12:46], updated_at: ~N[2026-09-02 10:12:46]}} [2026-09-02 10:12:46.420] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-09-02T10:12:44Z", "value" => "UNKNOWN"} [2026-09-02 10:12:46.502] [DEBUG] QUERY OK db=81.1ms queue=0.3ms idle=43.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:12:44Z", "UNKNOWN", "sim_imsi", 105749, ~N[2026-09-02 10:12:46], ~N[2026-09-02 10:12:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:12:46.502] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083789, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-09-02T10:12:44Z", message: nil, status_log_id: 105749, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:12:46], updated_at: ~N[2026-09-02 10:12:46]}} [2026-09-02 10:12:46.503] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-09-02T10:12:44Z", "value" => "UNKNOWN"} [2026-09-02 10:12:46.573] [DEBUG] QUERY OK db=70.0ms idle=83.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:12:44Z", "UNKNOWN", "sim_iccid2", 105749, ~N[2026-09-02 10:12:46], ~N[2026-09-02 10:12:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:12:46.573] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083792, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-09-02T10:12:44Z", message: nil, status_log_id: 105749, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:12:46], updated_at: ~N[2026-09-02 10:12:46]}} [2026-09-02 10:12:46.573] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-09-02T10:12:44Z", "value" => "UNKNOWN"} [2026-09-02 10:12:46.632] [DEBUG] QUERY OK db=57.9ms idle=71.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:12:44Z", "UNKNOWN", "sim_imsi2", 105749, ~N[2026-09-02 10:12:46], ~N[2026-09-02 10:12:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:12:46.632] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083795, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-09-02T10:12:44Z", message: nil, status_log_id: 105749, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:12:46], updated_at: ~N[2026-09-02 10:12:46]}} [2026-09-02 10:12:46.632] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-09-02T10:12:44Z", "value" => "39"} [2026-09-02 10:12:46.682] [DEBUG] QUERY OK db=49.3ms idle=59.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:12:44Z", "39", "data_usage_mb", 105749, ~N[2026-09-02 10:12:46], ~N[2026-09-02 10:12:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:12:46.682] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083798, itemkey: "data_usage_mb", value: "39", timestamp: "2026-09-02T10:12:44Z", message: nil, status_log_id: 105749, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:12:46], updated_at: ~N[2026-09-02 10:12:46]}} [2026-09-02 10:12:46.682] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-09-02T10:12:44Z", "value" => "0"} [2026-09-02 10:12:46.715] [DEBUG] QUERY OK db=32.6ms idle=50.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:12:44Z", "0", "mobile_data_mb", 105749, ~N[2026-09-02 10:12:46], ~N[2026-09-02 10:12:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:12:46.715] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083801, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-09-02T10:12:44Z", message: nil, status_log_id: 105749, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:12:46], updated_at: ~N[2026-09-02 10:12:46]}} [2026-09-02 10:12:46.716] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-09-02T10:12:44Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-09-02 10:12:46.790] [DEBUG] QUERY OK db=72.5ms idle=34.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:12:44Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 105749, ~N[2026-09-02 10:12:46], ~N[2026-09-02 10:12:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:12:46.791] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083804, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-09-02T10:12:44Z", message: nil, status_log_id: 105749, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:12:46], updated_at: ~N[2026-09-02 10:12:46]}} [2026-09-02 10:13:15.681] [INFO ] Received status update for terminal 98251226730001 [2026-09-02 10:13:15.681] [INFO ] Incoming JSON payload: {"oid":"5ed565dd-c5e3-48e4-b0af-910e4c761eb5","sn":"98251226730001","uploadTime":"2026-09-02T10:13:14Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-09-02T10:13:14Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-09-02T10:13:14Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-09-02T10:13:14Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-09-02T10:13:14Z"},{"itemkey":"ram_free_mb","value":"831","timestamp":"2026-09-02T10:13:14Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-09-02T10:13:14Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-09-02T10:13:14Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-09-02T10:13:14Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-09-02T10:13:14Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-09-02T10:13:14Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-09-02T10:13:14Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-09-02T10:13:14Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-09-02T10:13:14Z"},{"itemkey":"data_usage_mb","value":"39","timestamp":"2026-09-02T10:13:14Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-09-02T10:13:14Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-09-02 10:13:15.684] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "5ed565dd-c5e3-48e4-b0af-910e4c761eb5", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-09-02T10:13:14Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-09-02T10:13:14Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-09-02T10:13:14Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-09-02T10:13:14Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-09-02T10:13:14Z", "value" => "831"}, %{"itemkey" => "network_type", "timestamp" => "2026-09-02T10:13:14Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-09-02T10:13:14Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-09-02T10:13:14Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-09-02T10:13:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-09-02T10:13:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-09-02T10:13:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-09-02T10:13:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-09-02T10:13:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-09-02T10:13:14Z", "value" => "39"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-09-02T10:13:14Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-09-02T10:13:14Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-09-02T10:13:14Z", "vendor" => "morefun"} [2026-09-02 10:13:15.685] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-09-02 10:13:15.685] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-09-02 10:13:15.685] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-09-02 10:13:15.686] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=1264.1ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-09-02 10:13:15.687] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=318.8ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-09-02 10:13:15.687] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-09-02 10:13:15.689] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=1.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:140 [2026-09-02 10:13:15.689] [INFO ] Terminal updated: 98251226730001 [2026-09-02 10:13:15.736] [DEBUG] QUERY OK source="tms_terminals" db=46.2ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-09-02 10:13:15], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:164 [2026-09-02 10:13:15.736] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-09-02 10:13:15.737] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=47.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:1184 [2026-09-02 10:13:15.800] [DEBUG] QUERY OK source="tms_terminals" db=62.5ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:13:15], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:174 [2026-09-02 10:13:15.801] [DEBUG] QUERY OK source="app_upgrade_device_statuses" db=0.5ms idle=63.4ms SELECT a0.`id`, a0.`config_id`, a0.`device_id`, a0.`device_sn`, a0.`vendor`, a0.`model`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`update_result`, a0.`status`, a0.`remark`, a0.`finish_time`, a0.`pushed_time`, a0.`retry_count`, a0.`inserted_at`, a0.`updated_at` FROM `app_upgrade_device_statuses` AS a0 WHERE ((a0.`device_sn` = ?) AND a0.`status` IN ('pending','pushed')) ["98251226730001"] ↳ TmsCore.TerminalManagement.AppUpgradeService.maybe_repush_for_device/1, at: lib/tms_core/terminal_management/app_upgrade_service.ex:148 [2026-09-02 10:13:15.849] [DEBUG] QUERY OK db=48.2ms idle=1.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "5ed565dd-c5e3-48e4-b0af-910e4c761eb5", "2026-09-02T10:13:14Z", ~N[2026-09-02 10:13:15], ~N[2026-09-02 10:13:15]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:179 [2026-09-02 10:13:15.850] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 105752, oid: "5ed565dd-c5e3-48e4-b0af-910e4c761eb5", upload_time: "2026-09-02T10:13:14Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:13:15], updated_at: ~N[2026-09-02 10:13:15]} [2026-09-02 10:13:15.851] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-09-02T10:13:14Z", "value" => "morefun"} [2026-09-02 10:13:15.925] [DEBUG] QUERY OK db=74.2ms idle=50.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:13:14Z", "morefun", "vendor", 105752, ~N[2026-09-02 10:13:15], ~N[2026-09-02 10:13:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:13:15.926] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083810, itemkey: "vendor", value: "morefun", timestamp: "2026-09-02T10:13:14Z", message: nil, status_log_id: 105752, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:13:15], updated_at: ~N[2026-09-02 10:13:15]}} [2026-09-02 10:13:15.926] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-09-02T10:13:14Z", "value" => "kiosk_launcher"} [2026-09-02 10:13:15.994] [DEBUG] QUERY OK db=66.8ms idle=77.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:13:14Z", "kiosk_launcher", "model", 105752, ~N[2026-09-02 10:13:15], ~N[2026-09-02 10:13:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:13:15.994] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083813, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-09-02T10:13:14Z", message: nil, status_log_id: 105752, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:13:15], updated_at: ~N[2026-09-02 10:13:15]}} [2026-09-02 10:13:15.994] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-09-02T10:13:14Z", "value" => "1.0"} [2026-09-02 10:13:16.063] [DEBUG] QUERY OK db=68.7ms idle=68.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:13:14Z", "1.0", "app_version", 105752, ~N[2026-09-02 10:13:15], ~N[2026-09-02 10:13:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:13:16.063] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083815, itemkey: "app_version", value: "1.0", timestamp: "2026-09-02T10:13:14Z", message: nil, status_log_id: 105752, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:13:15], updated_at: ~N[2026-09-02 10:13:15]}} [2026-09-02 10:13:16.064] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-09-02T10:13:14Z", "value" => "13"} [2026-09-02 10:13:16.197] [DEBUG] QUERY OK db=132.8ms idle=70.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:13:14Z", "13", "android_version", 105752, ~N[2026-09-02 10:13:16], ~N[2026-09-02 10:13:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:13:16.197] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083818, itemkey: "android_version", value: "13", timestamp: "2026-09-02T10:13:14Z", message: nil, status_log_id: 105752, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:13:16], updated_at: ~N[2026-09-02 10:13:16]}} [2026-09-02 10:13:16.197] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-09-02T10:13:14Z", "value" => "831"} [2026-09-02 10:13:16.402] [DEBUG] QUERY OK db=204.8ms idle=134.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:13:14Z", "831", "ram_free_mb", 105752, ~N[2026-09-02 10:13:16], ~N[2026-09-02 10:13:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:13:16.403] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083821, itemkey: "ram_free_mb", value: "831", timestamp: "2026-09-02T10:13:14Z", message: nil, status_log_id: 105752, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:13:16], updated_at: ~N[2026-09-02 10:13:16]}} [2026-09-02 10:13:16.403] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-09-02T10:13:14Z", "value" => "WIFI"} [2026-09-02 10:13:16.509] [DEBUG] QUERY OK db=105.8ms idle=31.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:13:14Z", "WIFI", "network_type", 105752, ~N[2026-09-02 10:13:16], ~N[2026-09-02 10:13:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:13:16.510] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083824, itemkey: "network_type", value: "WIFI", timestamp: "2026-09-02T10:13:14Z", message: nil, status_log_id: 105752, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:13:16], updated_at: ~N[2026-09-02 10:13:16]}} [2026-09-02 10:13:16.510] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-09-02T10:13:14Z", "value" => "true"} [2026-09-02 10:13:16.559] [DEBUG] QUERY OK db=49.2ms idle=107.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:13:14Z", "true", "kiosk_active", 105752, ~N[2026-09-02 10:13:16], ~N[2026-09-02 10:13:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:13:16.560] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083828, itemkey: "kiosk_active", value: "true", timestamp: "2026-09-02T10:13:14Z", message: nil, status_log_id: 105752, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:13:16], updated_at: ~N[2026-09-02 10:13:16]}} [2026-09-02 10:13:16.560] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-09-02T10:13:14Z", "value" => ""} [2026-09-02 10:13:16.640] [DEBUG] QUERY OK db=79.2ms idle=51.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-09-02T10:13:14Z", "sim_operator", 105752, ~N[2026-09-02 10:13:16], ~N[2026-09-02 10:13:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:13:16.640] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083831, itemkey: "sim_operator", value: nil, timestamp: "2026-09-02T10:13:14Z", message: nil, status_log_id: 105752, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:13:16], updated_at: ~N[2026-09-02 10:13:16]}} [2026-09-02 10:13:16.640] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-09-02T10:13:14Z", "value" => "UNKNOWN"} [2026-09-02 10:13:16.695] [DEBUG] QUERY OK db=54.0ms idle=81.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:13:14Z", "UNKNOWN", "sim_number", 105752, ~N[2026-09-02 10:13:16], ~N[2026-09-02 10:13:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:13:16.696] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083833, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-09-02T10:13:14Z", message: nil, status_log_id: 105752, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:13:16], updated_at: ~N[2026-09-02 10:13:16]}} [2026-09-02 10:13:16.697] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-09-02T10:13:14Z", "value" => "UNKNOWN"} [2026-09-02 10:13:16.745] [DEBUG] QUERY OK db=47.4ms idle=57.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:13:14Z", "UNKNOWN", "sim_iccid", 105752, ~N[2026-09-02 10:13:16], ~N[2026-09-02 10:13:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:13:16.745] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083837, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-09-02T10:13:14Z", message: nil, status_log_id: 105752, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:13:16], updated_at: ~N[2026-09-02 10:13:16]}} [2026-09-02 10:13:16.745] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-09-02T10:13:14Z", "value" => "UNKNOWN"} [2026-09-02 10:13:16.795] [DEBUG] QUERY OK db=49.7ms idle=51.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:13:14Z", "UNKNOWN", "sim_imsi", 105752, ~N[2026-09-02 10:13:16], ~N[2026-09-02 10:13:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:13:16.796] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083839, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-09-02T10:13:14Z", message: nil, status_log_id: 105752, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:13:16], updated_at: ~N[2026-09-02 10:13:16]}} [2026-09-02 10:13:16.796] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-09-02T10:13:14Z", "value" => "UNKNOWN"} [2026-09-02 10:13:16.856] [DEBUG] QUERY OK db=59.0ms idle=51.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:13:14Z", "UNKNOWN", "sim_iccid2", 105752, ~N[2026-09-02 10:13:16], ~N[2026-09-02 10:13:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:13:16.856] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083842, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-09-02T10:13:14Z", message: nil, status_log_id: 105752, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:13:16], updated_at: ~N[2026-09-02 10:13:16]}} [2026-09-02 10:13:16.857] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-09-02T10:13:14Z", "value" => "UNKNOWN"} [2026-09-02 10:13:16.889] [DEBUG] QUERY OK db=32.4ms idle=61.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:13:14Z", "UNKNOWN", "sim_imsi2", 105752, ~N[2026-09-02 10:13:16], ~N[2026-09-02 10:13:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:13:16.890] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083846, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-09-02T10:13:14Z", message: nil, status_log_id: 105752, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:13:16], updated_at: ~N[2026-09-02 10:13:16]}} [2026-09-02 10:13:16.890] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-09-02T10:13:14Z", "value" => "39"} [2026-09-02 10:13:16.939] [DEBUG] QUERY OK db=48.4ms idle=34.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:13:14Z", "39", "data_usage_mb", 105752, ~N[2026-09-02 10:13:16], ~N[2026-09-02 10:13:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:13:16.939] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083849, itemkey: "data_usage_mb", value: "39", timestamp: "2026-09-02T10:13:14Z", message: nil, status_log_id: 105752, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:13:16], updated_at: ~N[2026-09-02 10:13:16]}} [2026-09-02 10:13:16.939] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-09-02T10:13:14Z", "value" => "0"} [2026-09-02 10:13:17.015] [DEBUG] QUERY OK db=75.0ms idle=50.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:13:14Z", "0", "mobile_data_mb", 105752, ~N[2026-09-02 10:13:16], ~N[2026-09-02 10:13:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:13:17.015] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083852, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-09-02T10:13:14Z", message: nil, status_log_id: 105752, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:13:16], updated_at: ~N[2026-09-02 10:13:16]}} [2026-09-02 10:13:17.016] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-09-02T10:13:14Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-09-02 10:13:17.058] [DEBUG] QUERY OK db=40.1ms idle=77.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:13:14Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 105752, ~N[2026-09-02 10:13:17], ~N[2026-09-02 10:13:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:13:17.059] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083854, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-09-02T10:13:14Z", message: nil, status_log_id: 105752, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:13:17], updated_at: ~N[2026-09-02 10:13:17]}} [2026-09-02 10:13:46.049] [INFO ] Received status update for terminal 98251226730001 [2026-09-02 10:13:46.049] [INFO ] Incoming JSON payload: {"oid":"75f682db-f1da-4a27-8ed3-a40886dd57ea","sn":"98251226730001","uploadTime":"2026-09-02T10:13:44Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-09-02T10:13:44Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-09-02T10:13:44Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-09-02T10:13:44Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-09-02T10:13:44Z"},{"itemkey":"ram_free_mb","value":"829","timestamp":"2026-09-02T10:13:44Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-09-02T10:13:44Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-09-02T10:13:44Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-09-02T10:13:44Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-09-02T10:13:44Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-09-02T10:13:44Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-09-02T10:13:44Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-09-02T10:13:44Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-09-02T10:13:44Z"},{"itemkey":"data_usage_mb","value":"39","timestamp":"2026-09-02T10:13:44Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-09-02T10:13:44Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-09-02 10:13:46.050] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "75f682db-f1da-4a27-8ed3-a40886dd57ea", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-09-02T10:13:44Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-09-02T10:13:44Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-09-02T10:13:44Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-09-02T10:13:44Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-09-02T10:13:44Z", "value" => "829"}, %{"itemkey" => "network_type", "timestamp" => "2026-09-02T10:13:44Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-09-02T10:13:44Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-09-02T10:13:44Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-09-02T10:13:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-09-02T10:13:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-09-02T10:13:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-09-02T10:13:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-09-02T10:13:44Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-09-02T10:13:44Z", "value" => "39"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-09-02T10:13:44Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-09-02T10:13:44Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-09-02T10:13:44Z", "vendor" => "morefun"} [2026-09-02 10:13:46.050] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-09-02 10:13:46.050] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-09-02 10:13:46.050] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-09-02 10:13:46.052] [DEBUG] QUERY OK source="parameter_templates" db=1.7ms idle=626.5ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-09-02 10:13:46.053] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=591.0ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-09-02 10:13:46.053] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-09-02 10:13:46.058] [DEBUG] QUERY OK source="tms_terminals" db=4.3ms idle=1.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:140 [2026-09-02 10:13:46.058] [INFO ] Terminal updated: 98251226730001 [2026-09-02 10:13:46.115] [DEBUG] QUERY OK source="tms_terminals" db=56.8ms idle=5.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-09-02 10:13:46], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:164 [2026-09-02 10:13:46.116] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-09-02 10:13:46.119] [DEBUG] QUERY OK source="tms_terminals" db=3.1ms idle=58.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:1184 [2026-09-02 10:13:46.178] [DEBUG] QUERY OK source="tms_terminals" db=58.1ms idle=3.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:13:46], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:174 [2026-09-02 10:13:46.179] [DEBUG] QUERY OK source="app_upgrade_device_statuses" db=0.6ms idle=59.5ms SELECT a0.`id`, a0.`config_id`, a0.`device_id`, a0.`device_sn`, a0.`vendor`, a0.`model`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`update_result`, a0.`status`, a0.`remark`, a0.`finish_time`, a0.`pushed_time`, a0.`retry_count`, a0.`inserted_at`, a0.`updated_at` FROM `app_upgrade_device_statuses` AS a0 WHERE ((a0.`device_sn` = ?) AND a0.`status` IN ('pending','pushed')) ["98251226730001"] ↳ TmsCore.TerminalManagement.AppUpgradeService.maybe_repush_for_device/1, at: lib/tms_core/terminal_management/app_upgrade_service.ex:148 [2026-09-02 10:13:46.231] [DEBUG] QUERY OK db=51.4ms idle=2.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "75f682db-f1da-4a27-8ed3-a40886dd57ea", "2026-09-02T10:13:44Z", ~N[2026-09-02 10:13:46], ~N[2026-09-02 10:13:46]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:179 [2026-09-02 10:13:46.231] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 105755, oid: "75f682db-f1da-4a27-8ed3-a40886dd57ea", upload_time: "2026-09-02T10:13:44Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:13:46], updated_at: ~N[2026-09-02 10:13:46]} [2026-09-02 10:13:46.233] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-09-02T10:13:44Z", "value" => "morefun"} [2026-09-02 10:13:46.303] [DEBUG] QUERY OK db=69.3ms queue=1.0ms idle=53.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:13:44Z", "morefun", "vendor", 105755, ~N[2026-09-02 10:13:46], ~N[2026-09-02 10:13:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:13:46.304] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083858, itemkey: "vendor", value: "morefun", timestamp: "2026-09-02T10:13:44Z", message: nil, status_log_id: 105755, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:13:46], updated_at: ~N[2026-09-02 10:13:46]}} [2026-09-02 10:13:46.304] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-09-02T10:13:44Z", "value" => "kiosk_launcher"} [2026-09-02 10:13:46.371] [DEBUG] QUERY OK db=65.8ms queue=0.1ms idle=73.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:13:44Z", "kiosk_launcher", "model", 105755, ~N[2026-09-02 10:13:46], ~N[2026-09-02 10:13:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:13:46.371] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083861, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-09-02T10:13:44Z", message: nil, status_log_id: 105755, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:13:46], updated_at: ~N[2026-09-02 10:13:46]}} [2026-09-02 10:13:46.371] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-09-02T10:13:44Z", "value" => "1.0"} [2026-09-02 10:13:46.450] [DEBUG] QUERY OK db=78.2ms idle=68.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:13:44Z", "1.0", "app_version", 105755, ~N[2026-09-02 10:13:46], ~N[2026-09-02 10:13:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:13:46.450] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083863, itemkey: "app_version", value: "1.0", timestamp: "2026-09-02T10:13:44Z", message: nil, status_log_id: 105755, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:13:46], updated_at: ~N[2026-09-02 10:13:46]}} [2026-09-02 10:13:46.450] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-09-02T10:13:44Z", "value" => "13"} [2026-09-02 10:13:46.522] [DEBUG] QUERY OK db=71.0ms idle=79.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:13:44Z", "13", "android_version", 105755, ~N[2026-09-02 10:13:46], ~N[2026-09-02 10:13:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:13:46.522] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083866, itemkey: "android_version", value: "13", timestamp: "2026-09-02T10:13:44Z", message: nil, status_log_id: 105755, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:13:46], updated_at: ~N[2026-09-02 10:13:46]}} [2026-09-02 10:13:46.522] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-09-02T10:13:44Z", "value" => "829"} [2026-09-02 10:13:46.587] [DEBUG] QUERY OK db=64.5ms idle=53.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:13:44Z", "829", "ram_free_mb", 105755, ~N[2026-09-02 10:13:46], ~N[2026-09-02 10:13:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:13:46.590] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083869, itemkey: "ram_free_mb", value: "829", timestamp: "2026-09-02T10:13:44Z", message: nil, status_log_id: 105755, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:13:46], updated_at: ~N[2026-09-02 10:13:46]}} [2026-09-02 10:13:46.591] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-09-02T10:13:44Z", "value" => "WIFI"} [2026-09-02 10:13:46.638] [DEBUG] QUERY OK db=45.5ms idle=69.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:13:44Z", "WIFI", "network_type", 105755, ~N[2026-09-02 10:13:46], ~N[2026-09-02 10:13:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:13:46.639] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083872, itemkey: "network_type", value: "WIFI", timestamp: "2026-09-02T10:13:44Z", message: nil, status_log_id: 105755, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:13:46], updated_at: ~N[2026-09-02 10:13:46]}} [2026-09-02 10:13:46.640] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-09-02T10:13:44Z", "value" => "true"} [2026-09-02 10:13:46.711] [DEBUG] QUERY OK db=70.6ms idle=53.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:13:44Z", "true", "kiosk_active", 105755, ~N[2026-09-02 10:13:46], ~N[2026-09-02 10:13:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:13:46.712] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083875, itemkey: "kiosk_active", value: "true", timestamp: "2026-09-02T10:13:44Z", message: nil, status_log_id: 105755, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:13:46], updated_at: ~N[2026-09-02 10:13:46]}} [2026-09-02 10:13:46.712] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-09-02T10:13:44Z", "value" => ""} [2026-09-02 10:13:46.793] [DEBUG] QUERY OK db=79.2ms idle=77.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-09-02T10:13:44Z", "sim_operator", 105755, ~N[2026-09-02 10:13:46], ~N[2026-09-02 10:13:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:13:46.793] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083877, itemkey: "sim_operator", value: nil, timestamp: "2026-09-02T10:13:44Z", message: nil, status_log_id: 105755, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:13:46], updated_at: ~N[2026-09-02 10:13:46]}} [2026-09-02 10:13:46.793] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-09-02T10:13:44Z", "value" => "UNKNOWN"} [2026-09-02 10:13:46.836] [DEBUG] QUERY OK db=41.7ms idle=82.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:13:44Z", "UNKNOWN", "sim_number", 105755, ~N[2026-09-02 10:13:46], ~N[2026-09-02 10:13:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:13:46.836] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083880, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-09-02T10:13:44Z", message: nil, status_log_id: 105755, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:13:46], updated_at: ~N[2026-09-02 10:13:46]}} [2026-09-02 10:13:46.836] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-09-02T10:13:44Z", "value" => "UNKNOWN"} [2026-09-02 10:13:46.900] [DEBUG] QUERY OK db=64.1ms idle=43.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:13:44Z", "UNKNOWN", "sim_iccid", 105755, ~N[2026-09-02 10:13:46], ~N[2026-09-02 10:13:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:13:46.901] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083883, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-09-02T10:13:44Z", message: nil, status_log_id: 105755, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:13:46], updated_at: ~N[2026-09-02 10:13:46]}} [2026-09-02 10:13:46.901] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-09-02T10:13:44Z", "value" => "UNKNOWN"} [2026-09-02 10:13:46.969] [DEBUG] QUERY OK db=67.9ms idle=65.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:13:44Z", "UNKNOWN", "sim_imsi", 105755, ~N[2026-09-02 10:13:46], ~N[2026-09-02 10:13:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:13:46.970] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083886, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-09-02T10:13:44Z", message: nil, status_log_id: 105755, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:13:46], updated_at: ~N[2026-09-02 10:13:46]}} [2026-09-02 10:13:46.973] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-09-02T10:13:44Z", "value" => "UNKNOWN"} [2026-09-02 10:13:47.091] [DEBUG] QUERY OK db=117.8ms idle=73.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:13:44Z", "UNKNOWN", "sim_iccid2", 105755, ~N[2026-09-02 10:13:46], ~N[2026-09-02 10:13:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:13:47.092] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083889, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-09-02T10:13:44Z", message: nil, status_log_id: 105755, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:13:46], updated_at: ~N[2026-09-02 10:13:46]}} [2026-09-02 10:13:47.092] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-09-02T10:13:44Z", "value" => "UNKNOWN"} [2026-09-02 10:13:47.172] [DEBUG] QUERY OK db=79.7ms idle=123.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:13:44Z", "UNKNOWN", "sim_imsi2", 105755, ~N[2026-09-02 10:13:47], ~N[2026-09-02 10:13:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:13:47.172] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083892, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-09-02T10:13:44Z", message: nil, status_log_id: 105755, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:13:47], updated_at: ~N[2026-09-02 10:13:47]}} [2026-09-02 10:13:47.172] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-09-02T10:13:44Z", "value" => "39"} [2026-09-02 10:13:47.294] [DEBUG] QUERY OK db=121.5ms idle=81.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:13:44Z", "39", "data_usage_mb", 105755, ~N[2026-09-02 10:13:47], ~N[2026-09-02 10:13:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:13:47.296] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083895, itemkey: "data_usage_mb", value: "39", timestamp: "2026-09-02T10:13:44Z", message: nil, status_log_id: 105755, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:13:47], updated_at: ~N[2026-09-02 10:13:47]}} [2026-09-02 10:13:47.296] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-09-02T10:13:44Z", "value" => "0"} [2026-09-02 10:13:47.484] [DEBUG] QUERY OK db=186.9ms idle=124.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:13:44Z", "0", "mobile_data_mb", 105755, ~N[2026-09-02 10:13:47], ~N[2026-09-02 10:13:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:13:47.484] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083898, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-09-02T10:13:44Z", message: nil, status_log_id: 105755, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:13:47], updated_at: ~N[2026-09-02 10:13:47]}} [2026-09-02 10:13:47.487] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-09-02T10:13:44Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-09-02 10:13:47.598] [DEBUG] QUERY OK db=106.8ms queue=0.7ms idle=16.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:13:44Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 105755, ~N[2026-09-02 10:13:47], ~N[2026-09-02 10:13:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:13:47.601] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083900, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-09-02T10:13:44Z", message: nil, status_log_id: 105755, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:13:47], updated_at: ~N[2026-09-02 10:13:47]}} [2026-09-02 10:14:10.875] [INFO ] [Ysp.Scheduler] Started. SFTP in 21h 37m, MIS in 0h 0m [2026-09-02 10:14:10.909] [INFO ] :alarm_handler: {:set, {:system_memory_high_watermark, []}} [2026-09-02 10:14:10.919] [INFO ] :alarm_handler: {:set, {{:disk_almost_full, ~c"/"}, []}} [2026-09-02 10:14:12.443] [INFO ] Terminal Event Listener started and listening to events [2026-09-02 10:14:12.444] [INFO ] Rule Validation Worker started - will run every hour [2026-09-02 10:14:12.448] [INFO ] Building initial filter cache... [2026-09-02 10:14:12.467] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.8ms idle=884.4ms SELECT t0.`area`, t0.`vendor`, t0.`model` FROM `tms_terminals` AS t0 WHERE ((NOT (t0.`area` IS NULL) OR NOT (t0.`vendor` IS NULL)) OR NOT (t0.`model` IS NULL)) [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_terminal_filter_data/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:153 [2026-09-02 10:14:12.482] [DEBUG] QUERY OK source="filter_usage" db=0.6ms queue=0.8ms idle=69.4ms SELECT f0.`filter_type`, f0.`filter_value`, coalesce(sum(f0.`usage_count`), 0) FROM `filter_usage` AS f0 GROUP BY f0.`filter_type`, f0.`filter_value` [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_usage_statistics/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:190 [2026-09-02 10:14:12.483] [INFO ] Filter cache rebuilt: 0 areas, 5 vendors, 8 models [2026-09-02 10:14:12.584] [INFO ] Device phoenix_client_tms_apps_vidya connected [2026-09-02 10:14:12.604] [INFO ] Running PlatformWeb.Endpoint with Bandit 1.10.2 at 0.0.0.0:5329 (http) [2026-09-02 10:14:12.629] [INFO ] Access PlatformWeb.Endpoint at http://localhost:5329 [2026-09-02 10:14:16.018] [INFO ] Received status update for terminal 98251226730001 [2026-09-02 10:14:16.018] [INFO ] Incoming JSON payload: {"oid":"f2101c9f-28d8-41c0-885b-da2d1f8a70e9","sn":"98251226730001","uploadTime":"2026-09-02T10:14:14Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-09-02T10:14:14Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-09-02T10:14:14Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-09-02T10:14:14Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-09-02T10:14:14Z"},{"itemkey":"ram_free_mb","value":"830","timestamp":"2026-09-02T10:14:14Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-09-02T10:14:14Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-09-02T10:14:14Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-09-02T10:14:14Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-09-02T10:14:14Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-09-02T10:14:14Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-09-02T10:14:14Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-09-02T10:14:14Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-09-02T10:14:14Z"},{"itemkey":"data_usage_mb","value":"39","timestamp":"2026-09-02T10:14:14Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-09-02T10:14:14Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-09-02 10:14:16.038] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "f2101c9f-28d8-41c0-885b-da2d1f8a70e9", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-09-02T10:14:14Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-09-02T10:14:14Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-09-02T10:14:14Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-09-02T10:14:14Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-09-02T10:14:14Z", "value" => "830"}, %{"itemkey" => "network_type", "timestamp" => "2026-09-02T10:14:14Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-09-02T10:14:14Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-09-02T10:14:14Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-09-02T10:14:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-09-02T10:14:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-09-02T10:14:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-09-02T10:14:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-09-02T10:14:14Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-09-02T10:14:14Z", "value" => "39"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-09-02T10:14:14Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-09-02T10:14:14Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-09-02T10:14:14Z", "vendor" => "morefun"} [2026-09-02 10:14:16.038] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-09-02 10:14:16.050] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-09-02 10:14:16.050] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-09-02 10:14:16.054] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms queue=0.9ms idle=1464.7ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-09-02 10:14:16.055] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms queue=0.5ms idle=460.8ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-09-02 10:14:16.056] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-09-02 10:14:16.073] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.9ms idle=17.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:140 [2026-09-02 10:14:16.099] [INFO ] Terminal updated: 98251226730001 [2026-09-02 10:14:16.159] [DEBUG] QUERY OK source="tms_terminals" db=52.8ms queue=0.6ms idle=44.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-09-02 10:14:16], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:164 [2026-09-02 10:14:16.164] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-09-02 10:14:16.166] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=91.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:1184 [2026-09-02 10:14:16.247] [DEBUG] QUERY OK source="tms_terminals" db=65.7ms queue=0.1ms idle=28.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:14:16], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:174 [2026-09-02 10:14:16.265] [DEBUG] QUERY OK source="app_upgrade_device_statuses" db=0.6ms queue=0.7ms idle=97.5ms SELECT a0.`id`, a0.`config_id`, a0.`device_id`, a0.`device_sn`, a0.`vendor`, a0.`model`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`update_result`, a0.`status`, a0.`remark`, a0.`finish_time`, a0.`pushed_time`, a0.`retry_count`, a0.`inserted_at`, a0.`updated_at` FROM `app_upgrade_device_statuses` AS a0 WHERE ((a0.`device_sn` = ?) AND a0.`status` IN ('pending','pushed')) ["98251226730001"] ↳ TmsCore.TerminalManagement.AppUpgradeService.maybe_repush_for_device/1, at: lib/tms_core/terminal_management/app_upgrade_service.ex:148 [2026-09-02 10:14:16.379] [DEBUG] QUERY OK db=91.5ms queue=0.5ms idle=38.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "f2101c9f-28d8-41c0-885b-da2d1f8a70e9", "2026-09-02T10:14:14Z", ~N[2026-09-02 10:14:16], ~N[2026-09-02 10:14:16]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:179 [2026-09-02 10:14:16.398] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 105761, oid: "f2101c9f-28d8-41c0-885b-da2d1f8a70e9", upload_time: "2026-09-02T10:14:14Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:14:16], updated_at: ~N[2026-09-02 10:14:16]} [2026-09-02 10:14:16.398] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-09-02T10:14:14Z", "value" => "morefun"} [2026-09-02 10:14:16.463] [DEBUG] QUERY OK db=63.3ms queue=1.0ms idle=134.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:14:14Z", "morefun", "vendor", 105761, ~N[2026-09-02 10:14:16], ~N[2026-09-02 10:14:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:14:16.464] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083914, itemkey: "vendor", value: "morefun", timestamp: "2026-09-02T10:14:14Z", message: nil, status_log_id: 105761, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:14:16], updated_at: ~N[2026-09-02 10:14:16]}} [2026-09-02 10:14:16.466] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-09-02T10:14:14Z", "value" => "kiosk_launcher"} [2026-09-02 10:14:16.522] [DEBUG] QUERY OK db=52.8ms queue=2.6ms idle=87.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:14:14Z", "kiosk_launcher", "model", 105761, ~N[2026-09-02 10:14:16], ~N[2026-09-02 10:14:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:14:16.522] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083916, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-09-02T10:14:14Z", message: nil, status_log_id: 105761, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:14:16], updated_at: ~N[2026-09-02 10:14:16]}} [2026-09-02 10:14:16.522] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-09-02T10:14:14Z", "value" => "1.0"} [2026-09-02 10:14:16.591] [DEBUG] QUERY OK db=68.1ms idle=59.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:14:14Z", "1.0", "app_version", 105761, ~N[2026-09-02 10:14:16], ~N[2026-09-02 10:14:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:14:16.591] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083919, itemkey: "app_version", value: "1.0", timestamp: "2026-09-02T10:14:14Z", message: nil, status_log_id: 105761, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:14:16], updated_at: ~N[2026-09-02 10:14:16]}} [2026-09-02 10:14:16.592] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-09-02T10:14:14Z", "value" => "13"} [2026-09-02 10:14:16.644] [DEBUG] QUERY OK db=51.4ms idle=71.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:14:14Z", "13", "android_version", 105761, ~N[2026-09-02 10:14:16], ~N[2026-09-02 10:14:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:14:16.644] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083922, itemkey: "android_version", value: "13", timestamp: "2026-09-02T10:14:14Z", message: nil, status_log_id: 105761, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:14:16], updated_at: ~N[2026-09-02 10:14:16]}} [2026-09-02 10:14:16.645] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-09-02T10:14:14Z", "value" => "830"} [2026-09-02 10:14:16.732] [DEBUG] QUERY OK db=87.4ms idle=44.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:14:14Z", "830", "ram_free_mb", 105761, ~N[2026-09-02 10:14:16], ~N[2026-09-02 10:14:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:14:16.733] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083923, itemkey: "ram_free_mb", value: "830", timestamp: "2026-09-02T10:14:14Z", message: nil, status_log_id: 105761, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:14:16], updated_at: ~N[2026-09-02 10:14:16]}} [2026-09-02 10:14:16.733] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-09-02T10:14:14Z", "value" => "WIFI"} [2026-09-02 10:14:16.805] [DEBUG] QUERY OK db=71.3ms queue=0.1ms idle=89.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:14:14Z", "WIFI", "network_type", 105761, ~N[2026-09-02 10:14:16], ~N[2026-09-02 10:14:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:14:16.805] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083926, itemkey: "network_type", value: "WIFI", timestamp: "2026-09-02T10:14:14Z", message: nil, status_log_id: 105761, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:14:16], updated_at: ~N[2026-09-02 10:14:16]}} [2026-09-02 10:14:16.805] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-09-02T10:14:14Z", "value" => "true"} [2026-09-02 10:14:16.898] [DEBUG] QUERY OK db=92.5ms idle=73.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:14:14Z", "true", "kiosk_active", 105761, ~N[2026-09-02 10:14:16], ~N[2026-09-02 10:14:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:14:16.899] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083929, itemkey: "kiosk_active", value: "true", timestamp: "2026-09-02T10:14:14Z", message: nil, status_log_id: 105761, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:14:16], updated_at: ~N[2026-09-02 10:14:16]}} [2026-09-02 10:14:16.899] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-09-02T10:14:14Z", "value" => ""} [2026-09-02 10:14:16.975] [DEBUG] QUERY OK db=74.4ms queue=1.3ms idle=94.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-09-02T10:14:14Z", "sim_operator", 105761, ~N[2026-09-02 10:14:16], ~N[2026-09-02 10:14:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:14:16.975] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083932, itemkey: "sim_operator", value: nil, timestamp: "2026-09-02T10:14:14Z", message: nil, status_log_id: 105761, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:14:16], updated_at: ~N[2026-09-02 10:14:16]}} [2026-09-02 10:14:16.975] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-09-02T10:14:14Z", "value" => "UNKNOWN"} [2026-09-02 10:14:17.047] [DEBUG] QUERY OK db=70.4ms queue=0.1ms idle=77.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:14:14Z", "UNKNOWN", "sim_number", 105761, ~N[2026-09-02 10:14:16], ~N[2026-09-02 10:14:16]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:14:17.047] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083935, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-09-02T10:14:14Z", message: nil, status_log_id: 105761, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:14:16], updated_at: ~N[2026-09-02 10:14:16]}} [2026-09-02 10:14:17.047] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-09-02T10:14:14Z", "value" => "UNKNOWN"} [2026-09-02 10:14:17.134] [DEBUG] QUERY OK db=86.1ms idle=72.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:14:14Z", "UNKNOWN", "sim_iccid", 105761, ~N[2026-09-02 10:14:17], ~N[2026-09-02 10:14:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:14:17.134] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083938, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-09-02T10:14:14Z", message: nil, status_log_id: 105761, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:14:17], updated_at: ~N[2026-09-02 10:14:17]}} [2026-09-02 10:14:17.134] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-09-02T10:14:14Z", "value" => "UNKNOWN"} [2026-09-02 10:14:17.192] [DEBUG] QUERY OK db=57.7ms idle=88.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:14:14Z", "UNKNOWN", "sim_imsi", 105761, ~N[2026-09-02 10:14:17], ~N[2026-09-02 10:14:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:14:17.194] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083941, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-09-02T10:14:14Z", message: nil, status_log_id: 105761, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:14:17], updated_at: ~N[2026-09-02 10:14:17]}} [2026-09-02 10:14:17.194] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-09-02T10:14:14Z", "value" => "UNKNOWN"} [2026-09-02 10:14:17.236] [DEBUG] QUERY OK db=41.4ms idle=60.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:14:14Z", "UNKNOWN", "sim_iccid2", 105761, ~N[2026-09-02 10:14:17], ~N[2026-09-02 10:14:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:14:17.236] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083944, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-09-02T10:14:14Z", message: nil, status_log_id: 105761, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:14:17], updated_at: ~N[2026-09-02 10:14:17]}} [2026-09-02 10:14:17.236] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-09-02T10:14:14Z", "value" => "UNKNOWN"} [2026-09-02 10:14:17.322] [DEBUG] QUERY OK db=86.0ms idle=43.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:14:14Z", "UNKNOWN", "sim_imsi2", 105761, ~N[2026-09-02 10:14:17], ~N[2026-09-02 10:14:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:14:17.325] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083947, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-09-02T10:14:14Z", message: nil, status_log_id: 105761, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:14:17], updated_at: ~N[2026-09-02 10:14:17]}} [2026-09-02 10:14:17.325] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-09-02T10:14:14Z", "value" => "39"} [2026-09-02 10:14:17.386] [DEBUG] QUERY OK db=60.5ms idle=89.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:14:14Z", "39", "data_usage_mb", 105761, ~N[2026-09-02 10:14:17], ~N[2026-09-02 10:14:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:14:17.386] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083950, itemkey: "data_usage_mb", value: "39", timestamp: "2026-09-02T10:14:14Z", message: nil, status_log_id: 105761, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:14:17], updated_at: ~N[2026-09-02 10:14:17]}} [2026-09-02 10:14:17.386] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-09-02T10:14:14Z", "value" => "0"} [2026-09-02 10:14:17.469] [DEBUG] QUERY OK db=82.0ms idle=64.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:14:14Z", "0", "mobile_data_mb", 105761, ~N[2026-09-02 10:14:17], ~N[2026-09-02 10:14:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:14:17.469] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083952, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-09-02T10:14:14Z", message: nil, status_log_id: 105761, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:14:17], updated_at: ~N[2026-09-02 10:14:17]}} [2026-09-02 10:14:17.469] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-09-02T10:14:14Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-09-02 10:14:17.528] [DEBUG] QUERY OK db=57.4ms idle=84.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:14:14Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 105761, ~N[2026-09-02 10:14:17], ~N[2026-09-02 10:14:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:14:17.529] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083953, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-09-02T10:14:14Z", message: nil, status_log_id: 105761, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:14:17], updated_at: ~N[2026-09-02 10:14:17]}} [2026-09-02 10:14:45.946] [INFO ] Received status update for terminal 98251226730001 [2026-09-02 10:14:45.946] [INFO ] Incoming JSON payload: {"oid":"7da72703-8180-442c-a3fa-e8037d68facd","sn":"98251226730001","uploadTime":"2026-09-02T10:14:45Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-09-02T10:14:45Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-09-02T10:14:45Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-09-02T10:14:45Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-09-02T10:14:45Z"},{"itemkey":"ram_free_mb","value":"829","timestamp":"2026-09-02T10:14:45Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-09-02T10:14:45Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-09-02T10:14:45Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-09-02T10:14:45Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-09-02T10:14:45Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-09-02T10:14:45Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-09-02T10:14:45Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-09-02T10:14:45Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-09-02T10:14:45Z"},{"itemkey":"data_usage_mb","value":"39","timestamp":"2026-09-02T10:14:45Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-09-02T10:14:45Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-09-02 10:14:45.948] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "7da72703-8180-442c-a3fa-e8037d68facd", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-09-02T10:14:45Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-09-02T10:14:45Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-09-02T10:14:45Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-09-02T10:14:45Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-09-02T10:14:45Z", "value" => "829"}, %{"itemkey" => "network_type", "timestamp" => "2026-09-02T10:14:45Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-09-02T10:14:45Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-09-02T10:14:45Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-09-02T10:14:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-09-02T10:14:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-09-02T10:14:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-09-02T10:14:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-09-02T10:14:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-09-02T10:14:45Z", "value" => "39"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-09-02T10:14:45Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-09-02T10:14:45Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-09-02T10:14:45Z", "vendor" => "morefun"} [2026-09-02 10:14:45.948] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-09-02 10:14:45.952] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-09-02 10:14:45.955] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-09-02 10:14:45.960] [DEBUG] QUERY OK source="parameter_templates" db=1.1ms queue=0.7ms idle=1240.5ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-09-02 10:14:45.965] [DEBUG] QUERY OK source="parameter_templates" db=3.7ms idle=237.9ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-09-02 10:14:45.967] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-09-02 10:14:45.970] [DEBUG] QUERY OK source="tms_terminals" db=3.1ms idle=7.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:140 [2026-09-02 10:14:45.972] [INFO ] Terminal updated: 98251226730001 [2026-09-02 10:14:45.988] [DEBUG] QUERY OK source="tms_terminals" db=13.9ms queue=1.4ms idle=8.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-09-02 10:14:45], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:164 [2026-09-02 10:14:45.988] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-09-02 10:14:45.992] [DEBUG] QUERY OK source="tms_terminals" db=3.1ms idle=18.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:1184 [2026-09-02 10:14:46.032] [DEBUG] QUERY OK source="tms_terminals" db=38.8ms queue=0.3ms idle=4.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:14:45], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:174 [2026-09-02 10:14:46.039] [DEBUG] QUERY OK source="app_upgrade_device_statuses" db=6.8ms idle=40.7ms SELECT a0.`id`, a0.`config_id`, a0.`device_id`, a0.`device_sn`, a0.`vendor`, a0.`model`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`update_result`, a0.`status`, a0.`remark`, a0.`finish_time`, a0.`pushed_time`, a0.`retry_count`, a0.`inserted_at`, a0.`updated_at` FROM `app_upgrade_device_statuses` AS a0 WHERE ((a0.`device_sn` = ?) AND a0.`status` IN ('pending','pushed')) ["98251226730001"] ↳ TmsCore.TerminalManagement.AppUpgradeService.maybe_repush_for_device/1, at: lib/tms_core/terminal_management/app_upgrade_service.ex:148 [2026-09-02 10:14:46.123] [DEBUG] QUERY OK db=81.2ms queue=0.3ms idle=9.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "7da72703-8180-442c-a3fa-e8037d68facd", "2026-09-02T10:14:45Z", ~N[2026-09-02 10:14:46], ~N[2026-09-02 10:14:46]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:179 [2026-09-02 10:14:46.126] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 105764, oid: "7da72703-8180-442c-a3fa-e8037d68facd", upload_time: "2026-09-02T10:14:45Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:14:46], updated_at: ~N[2026-09-02 10:14:46]} [2026-09-02 10:14:46.126] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-09-02T10:14:45Z", "value" => "morefun"} [2026-09-02 10:14:46.164] [DEBUG] QUERY OK db=35.1ms queue=0.1ms idle=90.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:14:45Z", "morefun", "vendor", 105764, ~N[2026-09-02 10:14:46], ~N[2026-09-02 10:14:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:14:46.166] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083956, itemkey: "vendor", value: "morefun", timestamp: "2026-09-02T10:14:45Z", message: nil, status_log_id: 105764, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:14:46], updated_at: ~N[2026-09-02 10:14:46]}} [2026-09-02 10:14:46.166] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-09-02T10:14:45Z", "value" => "kiosk_launcher"} [2026-09-02 10:14:46.230] [DEBUG] QUERY OK db=64.0ms idle=43.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:14:45Z", "kiosk_launcher", "model", 105764, ~N[2026-09-02 10:14:46], ~N[2026-09-02 10:14:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:14:46.231] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083958, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-09-02T10:14:45Z", message: nil, status_log_id: 105764, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:14:46], updated_at: ~N[2026-09-02 10:14:46]}} [2026-09-02 10:14:46.232] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-09-02T10:14:45Z", "value" => "1.0"} [2026-09-02 10:14:46.289] [DEBUG] QUERY OK db=55.4ms queue=1.0ms idle=68.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:14:45Z", "1.0", "app_version", 105764, ~N[2026-09-02 10:14:46], ~N[2026-09-02 10:14:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:14:46.289] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083962, itemkey: "app_version", value: "1.0", timestamp: "2026-09-02T10:14:45Z", message: nil, status_log_id: 105764, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:14:46], updated_at: ~N[2026-09-02 10:14:46]}} [2026-09-02 10:14:46.290] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-09-02T10:14:45Z", "value" => "13"} [2026-09-02 10:14:46.352] [DEBUG] QUERY OK db=60.4ms idle=60.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:14:45Z", "13", "android_version", 105764, ~N[2026-09-02 10:14:46], ~N[2026-09-02 10:14:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:14:46.353] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083964, itemkey: "android_version", value: "13", timestamp: "2026-09-02T10:14:45Z", message: nil, status_log_id: 105764, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:14:46], updated_at: ~N[2026-09-02 10:14:46]}} [2026-09-02 10:14:46.353] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-09-02T10:14:45Z", "value" => "829"} [2026-09-02 10:14:46.402] [DEBUG] QUERY OK db=49.0ms queue=0.1ms idle=63.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:14:45Z", "829", "ram_free_mb", 105764, ~N[2026-09-02 10:14:46], ~N[2026-09-02 10:14:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:14:46.403] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083967, itemkey: "ram_free_mb", value: "829", timestamp: "2026-09-02T10:14:45Z", message: nil, status_log_id: 105764, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:14:46], updated_at: ~N[2026-09-02 10:14:46]}} [2026-09-02 10:14:46.403] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-09-02T10:14:45Z", "value" => "WIFI"} [2026-09-02 10:14:46.473] [DEBUG] QUERY OK db=70.1ms idle=51.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:14:45Z", "WIFI", "network_type", 105764, ~N[2026-09-02 10:14:46], ~N[2026-09-02 10:14:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:14:46.473] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083970, itemkey: "network_type", value: "WIFI", timestamp: "2026-09-02T10:14:45Z", message: nil, status_log_id: 105764, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:14:46], updated_at: ~N[2026-09-02 10:14:46]}} [2026-09-02 10:14:46.473] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-09-02T10:14:45Z", "value" => "true"} [2026-09-02 10:14:46.516] [DEBUG] QUERY OK db=42.3ms idle=71.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:14:45Z", "true", "kiosk_active", 105764, ~N[2026-09-02 10:14:46], ~N[2026-09-02 10:14:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:14:46.516] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083973, itemkey: "kiosk_active", value: "true", timestamp: "2026-09-02T10:14:45Z", message: nil, status_log_id: 105764, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:14:46], updated_at: ~N[2026-09-02 10:14:46]}} [2026-09-02 10:14:46.516] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-09-02T10:14:45Z", "value" => ""} [2026-09-02 10:14:46.570] [DEBUG] QUERY OK db=51.7ms queue=1.1ms idle=43.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-09-02T10:14:45Z", "sim_operator", 105764, ~N[2026-09-02 10:14:46], ~N[2026-09-02 10:14:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:14:46.570] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083976, itemkey: "sim_operator", value: nil, timestamp: "2026-09-02T10:14:45Z", message: nil, status_log_id: 105764, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:14:46], updated_at: ~N[2026-09-02 10:14:46]}} [2026-09-02 10:14:46.570] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-09-02T10:14:45Z", "value" => "UNKNOWN"} [2026-09-02 10:14:46.608] [DEBUG] QUERY OK db=37.0ms idle=54.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:14:45Z", "UNKNOWN", "sim_number", 105764, ~N[2026-09-02 10:14:46], ~N[2026-09-02 10:14:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:14:46.609] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083979, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-09-02T10:14:45Z", message: nil, status_log_id: 105764, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:14:46], updated_at: ~N[2026-09-02 10:14:46]}} [2026-09-02 10:14:46.609] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-09-02T10:14:45Z", "value" => "UNKNOWN"} [2026-09-02 10:14:46.699] [DEBUG] QUERY OK db=89.4ms queue=0.8ms idle=39.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:14:45Z", "UNKNOWN", "sim_iccid", 105764, ~N[2026-09-02 10:14:46], ~N[2026-09-02 10:14:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:14:46.700] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083982, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-09-02T10:14:45Z", message: nil, status_log_id: 105764, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:14:46], updated_at: ~N[2026-09-02 10:14:46]}} [2026-09-02 10:14:46.700] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-09-02T10:14:45Z", "value" => "UNKNOWN"} [2026-09-02 10:14:46.751] [DEBUG] QUERY OK db=50.8ms idle=91.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:14:45Z", "UNKNOWN", "sim_imsi", 105764, ~N[2026-09-02 10:14:46], ~N[2026-09-02 10:14:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:14:46.751] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083985, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-09-02T10:14:45Z", message: nil, status_log_id: 105764, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:14:46], updated_at: ~N[2026-09-02 10:14:46]}} [2026-09-02 10:14:46.751] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-09-02T10:14:45Z", "value" => "UNKNOWN"} [2026-09-02 10:14:46.788] [DEBUG] QUERY OK db=35.7ms queue=0.9ms idle=26.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:14:45Z", "UNKNOWN", "sim_iccid2", 105764, ~N[2026-09-02 10:14:46], ~N[2026-09-02 10:14:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:14:46.789] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083988, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-09-02T10:14:45Z", message: nil, status_log_id: 105764, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:14:46], updated_at: ~N[2026-09-02 10:14:46]}} [2026-09-02 10:14:46.789] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-09-02T10:14:45Z", "value" => "UNKNOWN"} [2026-09-02 10:14:46.847] [DEBUG] QUERY OK db=57.9ms idle=38.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:14:45Z", "UNKNOWN", "sim_imsi2", 105764, ~N[2026-09-02 10:14:46], ~N[2026-09-02 10:14:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:14:46.847] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083991, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-09-02T10:14:45Z", message: nil, status_log_id: 105764, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:14:46], updated_at: ~N[2026-09-02 10:14:46]}} [2026-09-02 10:14:46.847] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-09-02T10:14:45Z", "value" => "39"} [2026-09-02 10:14:46.895] [DEBUG] QUERY OK db=47.1ms idle=59.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:14:45Z", "39", "data_usage_mb", 105764, ~N[2026-09-02 10:14:46], ~N[2026-09-02 10:14:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:14:46.895] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083994, itemkey: "data_usage_mb", value: "39", timestamp: "2026-09-02T10:14:45Z", message: nil, status_log_id: 105764, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:14:46], updated_at: ~N[2026-09-02 10:14:46]}} [2026-09-02 10:14:46.895] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-09-02T10:14:45Z", "value" => "0"} [2026-09-02 10:14:46.937] [DEBUG] QUERY OK db=41.7ms idle=48.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:14:45Z", "0", "mobile_data_mb", 105764, ~N[2026-09-02 10:14:46], ~N[2026-09-02 10:14:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:14:46.939] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1083997, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-09-02T10:14:45Z", message: nil, status_log_id: 105764, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:14:46], updated_at: ~N[2026-09-02 10:14:46]}} [2026-09-02 10:14:46.940] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-09-02T10:14:45Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-09-02 10:14:47.010] [DEBUG] QUERY OK db=68.6ms idle=45.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:14:45Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 105764, ~N[2026-09-02 10:14:46], ~N[2026-09-02 10:14:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:14:47.014] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084000, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-09-02T10:14:45Z", message: nil, status_log_id: 105764, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:14:46], updated_at: ~N[2026-09-02 10:14:46]}} [2026-09-02 10:15:00.879] [INFO ] [Ysp.Scheduler] 07:00 AM — enqueuing Settlement MIS generation for yesterday [2026-09-02 10:15:00.927] [INFO ] [Ysp.Scheduler] Next MIS generation in 24h 0m [2026-09-02 10:15:01.033] [INFO ] [MisGenerationWorker] Generating MIS date=2026-09-01 channel=COMBINED [2026-09-02 10:15:01.049] [DEBUG] QUERY OK source="settlement_mis" db=0.3ms queue=1.2ms idle=117.5ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 WHERE (s0.`mis_date` = ?) [~D[2026-09-01]] ↳ SettlementCore.SettlementMisGenerator.generate_for_date/2, at: lib/settlement_core/settlement_mis_generator.ex:60 [2026-09-02 10:15:01.050] [INFO ] [MisGenerator] Generating MIS for 2026-09-01 / COMBINED [2026-09-02 10:15:01.073] [DEBUG] QUERY OK source="core_transactions" db=16.9ms queue=1.8ms idle=26.7ms SELECT c0.`merchant_mid`, c0.`merchant_id`, c0.`card_type_code`, c0.`scheme_name`, count(c0.`id`), sum(c0.`gross_amount`), sum(c0.`mdr_amount`), sum(c0.`vat_amount`), sum(c0.`interchange_fee`), sum(c0.`net_settlement_amount`) FROM `core_transactions` AS c0 WHERE ((c0.`switch_settled_date` = ?) OR (c0.`released_for_settlement_date` = ?)) AND (c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE) AND (c0.`chargeback_hold` = FALSE) AND (c0.`exception_type` IS NULL) AND (DATE(c0.`transaction_datetime`) >= ?) GROUP BY c0.`merchant_mid`, c0.`merchant_id`, c0.`card_type_code`, c0.`scheme_name` [~D[2026-09-01], ~D[2026-09-01], ~D[2026-08-02]] ↳ SettlementCore.SettlementMisGenerator.do_generate/2, at: lib/settlement_core/settlement_mis_generator.ex:107 [2026-09-02 10:15:01.092] [DEBUG] QUERY OK source="tid_masters" db=0.7ms queue=1.1ms idle=44.6ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?,?)) ["419926360000000", "425590250000000", "E2E_M3_TEST001"] ↳ SettlementCore.SettlementMisGenerator.build_merchant_name_map/1, at: lib/settlement_core/settlement_mis_generator.ex:192 [2026-09-02 10:15:01.114] [DEBUG] QUERY OK source="merchant_adjustments" db=0.4ms queue=1.1ms idle=39.5ms SELECT m0.`id`, m0.`merchant_mid`, m0.`merchant_name`, m0.`adjustment_date`, m0.`debit_credit`, m0.`amount`, m0.`currency`, m0.`adjustment_type`, m0.`description`, m0.`settlement_mis_id`, m0.`status`, m0.`applied_at`, m0.`cancelled_at`, m0.`cancel_reason`, m0.`approval_status`, m0.`level1_reviewed_by`, m0.`level1_reviewed_at`, m0.`level2_approved_by`, m0.`level2_approved_at`, m0.`rejected_by`, m0.`rejected_at`, m0.`rejection_reason`, m0.`created_by`, m0.`updated_by`, m0.`inserted_at`, m0.`updated_at` FROM `merchant_adjustments` AS m0 WHERE (m0.`adjustment_date` = ?) AND ((m0.`approval_status` = 'approved') OR (m0.`status` = 'applied')) [~D[2026-09-01]] ↳ SettlementCore.SettlementMisGenerator.do_generate/2, at: lib/settlement_core/settlement_mis_generator.ex:110 [2026-09-02 10:15:01.137] [DEBUG] QUERY OK source="chargeback_cases" db=2.1ms queue=15.9ms idle=26.8ms SELECT c0.`id`, c0.`case_number`, c0.`merchant_mid`, c0.`merchant_id`, c0.`core_transaction_id`, c0.`rrn`, c0.`auth_number`, c0.`transaction_amount`, c0.`transaction_currency`, c0.`transaction_date`, c0.`scheme_name`, c0.`card_type_code`, c0.`chargeback_reason_code`, c0.`chargeback_reason_description`, c0.`scheme_case_reference`, c0.`chargeback_date`, c0.`response_due_date`, c0.`recovery_amount`, c0.`recovery_currency`, c0.`status`, c0.`resolution_date`, c0.`resolution_notes`, c0.`financial_impact`, c0.`recovery_deducted_at`, c0.`payout_batch_id`, c0.`created_by`, c0.`updated_by`, c0.`inserted_at`, c0.`updated_at` FROM `chargeback_cases` AS c0 WHERE (c0.`merchant_mid` = ?) AND (c0.`status` = 'resolved') AND (c0.`financial_impact` = 'recovered') AND (c0.`recovery_deducted_at` IS NULL) ["419926360000000"] ↳ Enum.flat_map_list/2, at: lib/enum.ex:4353 [2026-09-02 10:15:01.141] [DEBUG] QUERY OK source="chargeback_cases" db=2.7ms idle=23.9ms SELECT c0.`id`, c0.`case_number`, c0.`merchant_mid`, c0.`merchant_id`, c0.`core_transaction_id`, c0.`rrn`, c0.`auth_number`, c0.`transaction_amount`, c0.`transaction_currency`, c0.`transaction_date`, c0.`scheme_name`, c0.`card_type_code`, c0.`chargeback_reason_code`, c0.`chargeback_reason_description`, c0.`scheme_case_reference`, c0.`chargeback_date`, c0.`response_due_date`, c0.`recovery_amount`, c0.`recovery_currency`, c0.`status`, c0.`resolution_date`, c0.`resolution_notes`, c0.`financial_impact`, c0.`recovery_deducted_at`, c0.`payout_batch_id`, c0.`created_by`, c0.`updated_by`, c0.`inserted_at`, c0.`updated_at` FROM `chargeback_cases` AS c0 WHERE (c0.`merchant_mid` = ?) AND (c0.`status` = 'resolved') AND (c0.`financial_impact` = 'recovered') AND (c0.`recovery_deducted_at` IS NULL) ["425590250000000"] ↳ Enum.flat_map_list/2, at: lib/enum.ex:4353 [2026-09-02 10:15:01.142] [DEBUG] QUERY OK source="chargeback_cases" db=0.8ms idle=3.4ms SELECT c0.`id`, c0.`case_number`, c0.`merchant_mid`, c0.`merchant_id`, c0.`core_transaction_id`, c0.`rrn`, c0.`auth_number`, c0.`transaction_amount`, c0.`transaction_currency`, c0.`transaction_date`, c0.`scheme_name`, c0.`card_type_code`, c0.`chargeback_reason_code`, c0.`chargeback_reason_description`, c0.`scheme_case_reference`, c0.`chargeback_date`, c0.`response_due_date`, c0.`recovery_amount`, c0.`recovery_currency`, c0.`status`, c0.`resolution_date`, c0.`resolution_notes`, c0.`financial_impact`, c0.`recovery_deducted_at`, c0.`payout_batch_id`, c0.`created_by`, c0.`updated_by`, c0.`inserted_at`, c0.`updated_at` FROM `chargeback_cases` AS c0 WHERE (c0.`merchant_mid` = ?) AND (c0.`status` = 'resolved') AND (c0.`financial_impact` = 'recovered') AND (c0.`recovery_deducted_at` IS NULL) ["E2E_M3_TEST001"] ↳ Enum.flat_map_list/2, at: lib/enum.ex:4353 [2026-09-02 10:15:01.142] [DEBUG] QUERY OK db=0.1ms idle=1.4ms begin [] ↳ SettlementCore.SettlementMisGenerator.do_generate/2, at: lib/settlement_core/settlement_mis_generator.ex:120 [2026-09-02 10:15:01.147] [DEBUG] QUERY OK db=0.7ms INSERT INTO `settlement_mis` (`total_vat`,`mis_date`,`approval_status`,`generated_at`,`total_transactions`,`total_merchants`,`gross_total_amount`,`total_adjustments`,`total_ar_recovery`,`total_mdr_charges`,`total_net_payable`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?) [Decimal.new("3.84"), ~D[2026-09-01], "pending", ~N[2026-09-02 10:15:01], 6, 3, Decimal.new("3705.00"), Decimal.new("0"), Decimal.new("0"), Decimal.new("76.59"), Decimal.new("3624.57"), ~N[2026-09-02 10:15:01], ~N[2026-09-02 10:15:01]] ↳ anonymous fn/3 in Ecto.Adapters.SQL.checkout_or_transaction/4, at: lib/ecto/adapters/sql.ex:1473 [2026-09-02 10:15:01.158] [DEBUG] QUERY OK source="settlement_mis_items" db=2.3ms INSERT INTO `settlement_mis_items` (`inserted_at`,`updated_at`,`total_vat_amount`,`total_gross_amount`,`merchant_name`,`settlement_date`,`merchant_mid`,`scheme_name`,`transaction_count`,`card_type_code`,`total_mdr_amount`,`total_net_settlement_amount`,`merchant_id`,`total_interchange_fee`,`margin_contribution`,`net_payable`,`settlement_mis_id`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) [~N[2026-09-02 10:15:01], ~N[2026-09-02 10:15:01], Decimal.new("0.44"), Decimal.new("500.00"), "Kalyan Mart", ~D[2026-09-01], "419926360000000", "MASTERCARD", 1, "MC_CREDIT_STD", Decimal.new("8.75"), Decimal.new("490.81"), 1684, Decimal.new("1.50"), Decimal.new("7.2500"), Decimal.new("490.81"), 328, ~N[2026-09-02 10:15:01], ~N[2026-09-02 10:15:01], Decimal.new("0.30"), Decimal.new("300.00"), "Kalyan Mart", ~D[2026-09-01], "419926360000000", "VISA", 1, "VISA_DEBIT_STD", Decimal.new("6.00"), Decimal.new("293.70"), 1684, Decimal.new("0.90"), Decimal.new("5.1000"), Decimal.new("293.70"), 328, ~N[2026-09-02 10:15:01], ~N[2026-09-02 10:15:01], Decimal.new("0.49"), Decimal.new("555.00"), "Golden Sands Retail LLC", ~D[2026-09-01], "425590250000000", "MASTERCARD", 1, "MC_CREDIT_STD", Decimal.new("9.71"), Decimal.new("544.80"), 990002, Decimal.new("1.67"), Decimal.new("8.0400"), Decimal.new("544.80"), ...] ↳ anonymous fn/3 in Ecto.Adapters.SQL.checkout_or_transaction/4, at: lib/ecto/adapters/sql.ex:1473 [2026-09-02 10:15:01.192] [DEBUG] QUERY OK db=33.7ms commit [] ↳ SettlementCore.SettlementMisGenerator.do_generate/2, at: lib/settlement_core/settlement_mis_generator.ex:120 [2026-09-02 10:15:01.192] [INFO ] [MisGenerator] MIS generated id=328 txns=6 [2026-09-02 10:15:01.192] [INFO ] [MisGenerationWorker] MIS generated id=328 txns=6 merchants=3 [2026-09-02 10:15:51.711] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 42µs Transport: :longpoll Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "bQExXnEzDzcDHWE6JHsHQzkvJmk9YWVz4dh9EYnhWe1kPIj1tnb9ITS5", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://localhost:5329/assets/app.css", "1" => "http://localhost:5329/assets/app.js"}, "vsn" => "2.0.0"} [2026-09-02 10:16:45.376] [INFO ] Received status update for terminal 98251226730001 [2026-09-02 10:16:45.376] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-09-02T10:16:44Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-09-02T10:16:44Z","value":"34"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-09-02T10:16:44Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-09-02T10:16:44Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-09-02T10:16:44Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-09-02T10:16:44Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-09-02T10:16:44Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-09-02T10:16:44Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-09-02T10:16:44Z","vendor":"MoreFun"} [2026-09-02 10:16:45.377] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-09-02T10:16:44Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-09-02T10:16:44Z", "value" => "34"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-09-02T10:16:44Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-09-02T10:16:44Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-09-02T10:16:44Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-09-02T10:16:44Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-09-02T10:16:44Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-09-02T10:16:44Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-09-02T10:16:44Z", "vendor" => "MoreFun"} [2026-09-02 10:16:45.377] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-09-02 10:16:45.377] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-09-02 10:16:45.377] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-09-02 10:16:45.380] [DEBUG] QUERY OK source="parameter_templates" db=1.2ms queue=1.6ms idle=939.6ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-09-02 10:16:45.383] [DEBUG] QUERY OK source="tms_terminals" db=2.2ms idle=6.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-09-02 10:16:45.389] [DEBUG] QUERY OK source="parameter_template_values" db=0.6ms queue=0.4ms idle=7.6ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-09-02 10:16:45.403] [DEBUG] QUERY OK source="parameter_definitions" db=0.9ms queue=0.6ms idle=19.0ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-09-02 10:16:45.419] [DEBUG] QUERY OK source="pos_terminal" db=0.5ms queue=0.4ms idle=28.6ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-09-02 10:16:45.446] [DEBUG] QUERY OK source="pos_merchant" db=0.9ms queue=16.9ms idle=24.3ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [350] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-09-02 10:16:45.453] [DEBUG] QUERY OK db=2.0ms queue=5.1ms idle=1008.2ms SELECT COALESCE(JSON_UNQUOTE(JSON_EXTRACT(mc.settings, '$.BASE_MERCHANT_NAME')), '') as base_merchant_name, COALESCE(u.name, '') as user_name, COALESCE(um.softpos_uuid, '') as softpos_uuid, COALESCE(mc.settings, '{}') as settings FROM user_metadata um LEFT JOIN merchant_configuration mc ON mc.user_id = um.user_id LEFT JOIN users u ON u.id = um.user_id WHERE um.merchant_refrence_number = ? LIMIT 1 ["667267350000000"] [2026-09-02 10:16:45.453] [INFO ] ParamsZipBuilder: Merchant info for merchantid=667267350000000 - business_name=Shubham003, QR_USE_SSL=, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-09-02 10:16:45.470] [DEBUG] QUERY OK source="pos_terminal_data" db=0.4ms queue=0.6ms idle=50.5ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["26735914"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-09-02 10:16:45.485] [DEBUG] QUERY OK source="address" db=0.4ms queue=0.8ms idle=38.0ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [639] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-09-02 10:16:45.486] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="667267350000000" [2026-09-02 10:16:45.506] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-09-02 10:16:45.567] [DEBUG] QUERY OK db=39.9ms queue=0.5ms idle=50.3ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "246e3c002ff50157fed79e14325b6bcd953e7067de227e2e1c4ef58cd49a66e2", 1027, 912, ~U[2026-09-02 10:16:45Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-09-02 10:16:45], ~N[2026-09-02 10:16:45]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-09-02 10:16:45.568] [INFO ] AutoPushService: Created push log 60484 for MF919 params.zip [2026-09-02 10:16:45.577] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4017/ota/98251226730001/params.zip", "requestId" => 1027, "type" => "tms_command", "version" => "1.0.0"} [2026-09-02 10:16:45.577] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-09-02 10:16:45.589] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-09-02 10:16:45.610] [DEBUG] QUERY OK source="config_file_versions" db=1.4ms queue=2.3ms idle=121.1ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-09-02 10:16:45.622] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730001 at priv/ota/98251226730001/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-09-02 10:16:45.685] [DEBUG] QUERY OK db=61.2ms queue=0.5ms idle=61.5ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "db8b07494ad16d55c75847b3566114ea275409061b806029f860da604c75305b", 7266, 17947, ~U[2026-09-02 10:16:45Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-09-02 10:16:45], ~N[2026-09-02 10:16:45]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-09-02 10:16:45.685] [INFO ] AutoPushService: Created push log 60485 for MF919 l3config.zip (version: 1.0.1) [2026-09-02 10:16:45.685] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4017/ota/98251226730001/l3config.zip", "requestId" => 7266, "type" => "tms_command", "version" => "1.0.1"} [2026-09-02 10:16:45.685] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-09-02 10:16:45.685] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-09-02 10:16:45.691] [DEBUG] QUERY OK source="config_file_versions" db=5.3ms idle=75.6ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-09-02 10:16:45.721] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-09-02 10:16:45.725] [DEBUG] QUERY OK source="tms_terminals" db=3.4ms idle=37.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-09-02 10:16:45.725] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730001 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-09-02 10:16:45.836] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-09-02 10:16:45.837] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 10:16:45.837] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 10:16:45.838] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms idle=146.5ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-09-02 10:16:45.838] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-09-02 10:16:45.839] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-09-02 10:16:45.840] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=113.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:140 [2026-09-02 10:16:45.840] [INFO ] Terminal updated: 98251226730001 [2026-09-02 10:16:45.895] [DEBUG] QUERY OK source="tms_terminals" db=54.3ms idle=2.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-09-02 10:16:45], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:164 [2026-09-02 10:16:45.897] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms queue=0.4ms idle=56.0ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) ORDER BY p0.`updated_at` DESC LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_parameter_version/2, at: lib/tms_core/terminal_management/version_compliance_checker.ex:105 [2026-09-02 10:16:45.899] [DEBUG] QUERY OK source="config_file_versions" db=1.7ms idle=1.9ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-09-02 10:16:45.901] [DEBUG] QUERY OK source="config_file_versions" db=1.9ms idle=2.3ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-09-02 10:16:45.901] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-09-02 10:16:45.991] [DEBUG] QUERY OK source="parameter_push_logs" db=51.9ms queue=1.6ms idle=38.5ms SELECT TRUE FROM `parameter_push_logs` AS p0 WHERE ((((p0.`terminal_id` = ?) AND (p0.`config_type` = ?)) AND (p0.`inserted_at` >= ?)) AND p0.`status` IN ('pending','sent')) LIMIT 1 [33, "application", ~N[2026-09-02 09:46:45]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-09-02 10:16:45.991] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-09-02 10:16:45.992] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-09-02 10:16:45.993] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=90.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-09-02 10:16:45.995] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms idle=3.2ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-09-02 10:16:45.996] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-09-02 10:16:45.997] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=3.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:1184 [2026-09-02 10:16:46.055] [DEBUG] QUERY OK source="tms_terminals" db=57.7ms idle=2.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:16:45], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:174 [2026-09-02 10:16:46.058] [DEBUG] QUERY OK source="app_upgrade_device_statuses" db=2.5ms idle=58.4ms SELECT a0.`id`, a0.`config_id`, a0.`device_id`, a0.`device_sn`, a0.`vendor`, a0.`model`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`update_result`, a0.`status`, a0.`remark`, a0.`finish_time`, a0.`pushed_time`, a0.`retry_count`, a0.`inserted_at`, a0.`updated_at` FROM `app_upgrade_device_statuses` AS a0 WHERE ((a0.`device_sn` = ?) AND a0.`status` IN ('pending','pushed')) ["98251226730001"] ↳ TmsCore.TerminalManagement.AppUpgradeService.maybe_repush_for_device/1, at: lib/tms_core/terminal_management/app_upgrade_service.ex:148 [2026-09-02 10:16:46.132] [DEBUG] QUERY OK db=72.6ms idle=4.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-09-02T10:16:44Z", ~N[2026-09-02 10:16:46], ~N[2026-09-02 10:16:46]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:179 [2026-09-02 10:16:46.132] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 105767, oid: "organization_id", upload_time: "2026-09-02T10:16:44Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:16:46], updated_at: ~N[2026-09-02 10:16:46]} [2026-09-02 10:16:46.132] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-09-02T10:16:44Z", "value" => "online"} [2026-09-02 10:16:46.180] [DEBUG] QUERY OK db=41.5ms queue=4.3ms idle=75.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-09-02T10:16:44Z", "online", "status", 105767, ~N[2026-09-02 10:16:46], ~N[2026-09-02 10:16:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:16:46.180] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084011, itemkey: "status", value: "online", timestamp: "2026-09-02T10:16:44Z", message: "Terminal status update", status_log_id: 105767, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:16:46], updated_at: ~N[2026-09-02 10:16:46]}} [2026-09-02 10:16:46.180] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-09-02 10:16:46.180] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-09-02T10:16:44Z", "value" => "34"} [2026-09-02 10:16:46.247] [DEBUG] QUERY OK db=65.4ms queue=1.0ms idle=48.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-09-02T10:16:44Z", "34", "battery", 105767, ~N[2026-09-02 10:16:46], ~N[2026-09-02 10:16:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:16:46.249] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084014, itemkey: "battery", value: "34", timestamp: "2026-09-02T10:16:44Z", message: "Battery level", status_log_id: 105767, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:16:46], updated_at: ~N[2026-09-02 10:16:46]}} [2026-09-02 10:16:46.249] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-09-02T10:16:44Z", "value" => "online"} [2026-09-02 10:16:46.279] [DEBUG] QUERY OK db=29.3ms idle=69.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-09-02T10:16:44Z", "online", "network", 105767, ~N[2026-09-02 10:16:46], ~N[2026-09-02 10:16:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:16:46.279] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084015, itemkey: "network", value: "online", timestamp: "2026-09-02T10:16:44Z", message: "Network connectivity", status_log_id: 105767, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:16:46], updated_at: ~N[2026-09-02 10:16:46]}} [2026-09-02 10:16:46.279] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-09-02 10:16:46.279] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-09-02T10:16:44Z", "value" => "0"} [2026-09-02 10:16:46.534] [DEBUG] QUERY OK db=254.5ms idle=32.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-09-02T10:16:44Z", "0", "cpu", 105767, ~N[2026-09-02 10:16:46], ~N[2026-09-02 10:16:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:16:46.535] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084017, itemkey: "cpu", value: "0", timestamp: "2026-09-02T10:16:44Z", message: "CPU usage percentage", status_log_id: 105767, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:16:46], updated_at: ~N[2026-09-02 10:16:46]}} [2026-09-02 10:16:46.535] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-09-02T10:16:44Z", "value" => "1.0.0"} [2026-09-02 10:16:46.585] [DEBUG] QUERY OK db=49.6ms idle=156.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-09-02T10:16:44Z", "1.0.0", "parameter_config", 105767, ~N[2026-09-02 10:16:46], ~N[2026-09-02 10:16:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:16:46.586] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084020, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-09-02T10:16:44Z", message: "Current parameters version", status_log_id: 105767, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:16:46], updated_at: ~N[2026-09-02 10:16:46]}} [2026-09-02 10:16:46.586] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-09-02T10:16:44Z", "value" => "1.0.1"} [2026-09-02 10:16:46.664] [DEBUG] QUERY OK db=77.5ms idle=52.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-09-02T10:16:44Z", "1.0.1", "emv_config", 105767, ~N[2026-09-02 10:16:46], ~N[2026-09-02 10:16:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:16:46.665] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084022, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-09-02T10:16:44Z", message: "Current EMV config version", status_log_id: 105767, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:16:46], updated_at: ~N[2026-09-02 10:16:46]}} [2026-09-02 10:16:46.665] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-09-02T10:16:44Z", "value" => ""} [2026-09-02 10:16:46.759] [DEBUG] QUERY OK db=92.3ms queue=0.5ms idle=80.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-09-02T10:16:44Z", "keys_config", 105767, ~N[2026-09-02 10:16:46], ~N[2026-09-02 10:16:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:16:46.759] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084024, itemkey: "keys_config", value: nil, timestamp: "2026-09-02T10:16:44Z", message: "Current keys config version", status_log_id: 105767, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:16:46], updated_at: ~N[2026-09-02 10:16:46]}} [2026-09-02 10:16:46.759] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-09-02T10:16:44Z", "value" => "3.8.7.3"} [2026-09-02 10:16:46.820] [DEBUG] QUERY OK db=59.9ms idle=95.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-09-02T10:16:44Z", "3.8.7.3", "application", 105767, ~N[2026-09-02 10:16:46], ~N[2026-09-02 10:16:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:16:46.820] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084025, itemkey: "application", value: "3.8.7.3", timestamp: "2026-09-02T10:16:44Z", message: "Current application version", status_log_id: 105767, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:16:46], updated_at: ~N[2026-09-02 10:16:46]}} [2026-09-02 10:16:46.830] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.0","requestId":"246755","status":"success","timestamp":1788344205066,"type":"tms_response"} [2026-09-02 10:16:46.838] [INFO ] Processing file download response for device 98251226730001, request_id: 246755 [2026-09-02 10:16:46.845] [DEBUG] QUERY OK source="file_download_logs" db=1.7ms queue=0.7ms idle=84.2ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["246755"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:16:46.846] [INFO ] No file download log for request_id 246755; response not attached to a push [2026-09-02 10:16:46.846] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:16:46.846586Z], response: %{"message" => "Already up to date: 1.0.0", "requestId" => "246755", "status" => "success", "timestamp" => 1788344205066, "type" => "tms_response"}, request_id: "246755", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:16:46.846] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.0","requestId":"1027","status":"success","timestamp":1788344205098,"type":"tms_response"} [2026-09-02 10:16:46.846] [INFO ] Processing file download response for device 98251226730001, request_id: 1027 [2026-09-02 10:16:46.848] [DEBUG] QUERY OK source="file_download_logs" db=1.1ms idle=27.0ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["1027"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:16:46.848] [INFO ] No file download log for request_id 1027; response not attached to a push [2026-09-02 10:16:46.849] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:16:46.848521Z], response: %{"message" => "Already up to date: 1.0.0", "requestId" => "1027", "status" => "success", "timestamp" => 1788344205098, "type" => "tms_response"}, request_id: "1027", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:16:46.849] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.1","requestId":"7266","status":"success","timestamp":1788344205188,"type":"tms_response"} [2026-09-02 10:16:46.849] [INFO ] Processing file download response for device 98251226730001, request_id: 7266 [2026-09-02 10:16:46.850] [DEBUG] QUERY OK source="file_download_logs" db=1.0ms idle=3.9ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["7266"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:16:46.851] [INFO ] No file download log for request_id 7266; response not attached to a push [2026-09-02 10:16:46.851] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:16:46.851121Z], response: %{"message" => "Already up to date: 1.0.1", "requestId" => "7266", "status" => "success", "timestamp" => 1788344205188, "type" => "tms_response"}, request_id: "7266", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:16:46.851] [WARN ] Unexpected async result [2026-09-02 10:16:46.851] [WARN ] Unexpected async result [2026-09-02 10:17:21.488] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 55µs Transport: :longpoll Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "bQExXnEzDzcDHWE6JHsHQzkvJmk9YWVz4dh9EYnhWe1kPIj1tnb9ITS5", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://localhost:5329/assets/app.css", "1" => "http://localhost:5329/assets/app.js"}, "vsn" => "2.0.0"} [2026-09-02 10:17:22.003] [DEBUG] MOUNT PlatformWeb.SettlementLive.MisApproval Parameters: %{} Session: %{"_csrf_token" => "YeYg4ja_TxPQt2mrMADPt56F", "live_socket_id" => "users_sessions:1SCMkuUViXFyTH5BPBDsb34g_qe7I7Ttdm5i6LAnpjM=", "user_token" => <<213, 32, 140, 146, 229, 21, 137, 113, 114, 76, 126, 65, 60, 16, 236, 111, 126, 32, 254, 167, 187, 35, 180, 237, 118, 110, 98, 232, 176, 39, 166, 51>>} [2026-09-02 10:17:22.077] [DEBUG] QUERY OK source="users_tokens" db=0.6ms queue=1.5ms idle=1674.2ms SELECT u1.`id`, u1.`email`, u1.`hashed_password`, u1.`confirmed_at`, u1.`role`, u1.`name`, u1.`first_name`, u1.`last_name`, u1.`data`, u1.`inserted_at`, u1.`updated_at` FROM `users_tokens` AS u0 INNER JOIN `users` AS u1 ON u1.`id` = u0.`user_id` WHERE ((u0.`token` = ?) AND (u0.`context` = ?)) AND (u0.`inserted_at` > date_add(?, INTERVAL -(60) day)) [<<213, 32, 140, 146, 229, 21, 137, 113, 114, 76, 126, 65, 60, 16, 236, 111, 126, 32, 254, 167, 187, 35, 180, 237, 118, 110, 98, 232, 176, 39, 166, 51>>, "session", ~U[2026-09-02 10:17:22.064612Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-09-02 10:17:22.096] [DEBUG] QUERY OK source="settlement_mis" db=1.1ms queue=0.6ms idle=649.9ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 ORDER BY s0.`mis_date` DESC LIMIT 100 [] ↳ PlatformWeb.SettlementLive.MisApproval.load_mis_rows/1, at: lib/platform_web/live/settlement_live/mis_approval.ex:505 [2026-09-02 10:17:22.098] [DEBUG] Replied in 106ms [2026-09-02 10:17:23.317] [INFO ] GET /admin/settlements/mis [2026-09-02 10:17:23.379] [DEBUG] Processing with PlatformWeb.SettlementLive.MisApproval.index/2 Parameters: %{} Pipelines: [:browser, :require_authenticated_user] [2026-09-02 10:17:23.400] [DEBUG] QUERY OK source="users_tokens" db=0.6ms idle=1322.6ms SELECT u1.`id`, u1.`email`, u1.`hashed_password`, u1.`confirmed_at`, u1.`role`, u1.`name`, u1.`first_name`, u1.`last_name`, u1.`data`, u1.`inserted_at`, u1.`updated_at` FROM `users_tokens` AS u0 INNER JOIN `users` AS u1 ON u1.`id` = u0.`user_id` WHERE ((u0.`token` = ?) AND (u0.`context` = ?)) AND (u0.`inserted_at` > date_add(?, INTERVAL -(60) day)) [<<213, 32, 140, 146, 229, 21, 137, 113, 114, 76, 126, 65, 60, 16, 236, 111, 126, 32, 254, 167, 187, 35, 180, 237, 118, 110, 98, 232, 176, 39, 166, 51>>, "session", ~U[2026-09-02 10:17:23.399842Z]] ↳ PlatformWeb.UserAuth.fetch_current_user/2, at: lib/platform_web/user_auth.ex:97 [2026-09-02 10:17:23.420] [DEBUG] QUERY OK source="settlement_mis" db=2.2ms idle=1321.9ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 ORDER BY s0.`mis_date` DESC LIMIT 100 [] ↳ PlatformWeb.SettlementLive.MisApproval.load_mis_rows/1, at: lib/platform_web/live/settlement_live/mis_approval.ex:505 [2026-09-02 10:17:23.439] [INFO ] Sent 200 in 121ms [2026-09-02 10:17:27.564] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 24µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "ECoLOAA8MWkaPWUJWQs4IAsGPDERdlgqIOR_4VP6NE5X-9URFGxaeCnl", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://localhost:5329/assets/app.css", "1" => "http://localhost:5329/assets/app.js"}, "vsn" => "2.0.0"} [2026-09-02 10:17:27.780] [DEBUG] MOUNT PlatformWeb.SettlementLive.MisApproval Parameters: %{} Session: %{"_csrf_token" => "YeYg4ja_TxPQt2mrMADPt56F", "live_socket_id" => "users_sessions:1SCMkuUViXFyTH5BPBDsb34g_qe7I7Ttdm5i6LAnpjM=", "user_token" => <<213, 32, 140, 146, 229, 21, 137, 113, 114, 76, 126, 65, 60, 16, 236, 111, 126, 32, 254, 167, 187, 35, 180, 237, 118, 110, 98, 232, 176, 39, 166, 51>>} [2026-09-02 10:17:27.782] [DEBUG] QUERY OK source="users_tokens" db=1.3ms idle=1379.6ms SELECT u1.`id`, u1.`email`, u1.`hashed_password`, u1.`confirmed_at`, u1.`role`, u1.`name`, u1.`first_name`, u1.`last_name`, u1.`data`, u1.`inserted_at`, u1.`updated_at` FROM `users_tokens` AS u0 INNER JOIN `users` AS u1 ON u1.`id` = u0.`user_id` WHERE ((u0.`token` = ?) AND (u0.`context` = ?)) AND (u0.`inserted_at` > date_add(?, INTERVAL -(60) day)) [<<213, 32, 140, 146, 229, 21, 137, 113, 114, 76, 126, 65, 60, 16, 236, 111, 126, 32, 254, 167, 187, 35, 180, 237, 118, 110, 98, 232, 176, 39, 166, 51>>, "session", ~U[2026-09-02 10:17:27.780481Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-09-02 10:17:27.786] [DEBUG] QUERY OK source="settlement_mis" db=3.6ms queue=0.1ms idle=1195.1ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 ORDER BY s0.`mis_date` DESC LIMIT 100 [] ↳ PlatformWeb.SettlementLive.MisApproval.load_mis_rows/1, at: lib/platform_web/live/settlement_live/mis_approval.ex:505 [2026-09-02 10:17:27.790] [DEBUG] Replied in 10ms [2026-09-02 10:17:32.585] [DEBUG] HANDLE EVENT "mis_row_clicked" in PlatformWeb.SettlementLive.MisApproval Parameters: %{"id" => 328} [2026-09-02 10:17:32.590] [DEBUG] QUERY OK source="settlement_mis" db=1.3ms queue=2.4ms idle=975.8ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 WHERE (s0.`id` = ?) [328] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:284 [2026-09-02 10:17:32.593] [DEBUG] QUERY OK source="settlement_mis_items" db=1.4ms queue=1.9ms idle=975.2ms SELECT s0.`merchant_mid`, s0.`merchant_id`, MAX(s0.`merchant_name`), sum(s0.`transaction_count`), sum(s0.`total_gross_amount`), sum(s0.`total_mdr_amount`), sum(s0.`total_vat_amount`), sum(s0.`total_interchange_fee`), sum(s0.`net_payable`), GROUP_CONCAT(DISTINCT s0.`scheme_name` SEPARATOR ', '), GROUP_CONCAT(DISTINCT s0.`card_type_code` SEPARATOR ', ') FROM `settlement_mis_items` AS s0 WHERE (s0.`settlement_mis_id` = ?) GROUP BY s0.`merchant_mid`, s0.`merchant_id` [328] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:285 [2026-09-02 10:17:32.597] [DEBUG] QUERY OK source="merchant_adjustments" db=0.4ms queue=0.7ms idle=5.8ms SELECT m0.`id`, m0.`merchant_mid`, m0.`merchant_name`, m0.`adjustment_date`, m0.`debit_credit`, m0.`amount`, m0.`currency`, m0.`adjustment_type`, m0.`description`, m0.`settlement_mis_id`, m0.`status`, m0.`applied_at`, m0.`cancelled_at`, m0.`cancel_reason`, m0.`approval_status`, m0.`level1_reviewed_by`, m0.`level1_reviewed_at`, m0.`level2_approved_by`, m0.`level2_approved_at`, m0.`rejected_by`, m0.`rejected_at`, m0.`rejection_reason`, m0.`created_by`, m0.`updated_by`, m0.`inserted_at`, m0.`updated_at` FROM `merchant_adjustments` AS m0 WHERE (m0.`adjustment_date` = ?) AND (m0.`approval_status` = 'approved') [~D[2026-09-01]] ↳ SettlementCore.Context.list_approved_adjustments_by_date/1, at: lib/settlement_core/context.ex:971 [2026-09-02 10:17:32.601] [DEBUG] QUERY OK source="core_transactions" db=1.6ms queue=2.6ms idle=3.6ms SELECT DISTINCT c0.`merchant_mid`, coalesce(t1.`merchant_name_legal`, t1.`merchant_name_dba`) FROM `core_transactions` AS c0 INNER JOIN `tid_masters` AS t1 ON t1.`mid` = c0.`merchant_mid` WHERE (DATE(c0.`transaction_datetime`) = ?) AND ((c0.`risk_hold` = TRUE) OR (c0.`settlement_status` = 'exception_hold')) AND (NOT (c0.`merchant_mid` IN (SELECT DISTINCT ss0.`merchant_mid` FROM `settlement_mis_items` AS ss0 WHERE (ss0.`settlement_mis_id` = ?)))) [~D[2026-09-01], 328] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:302 [2026-09-02 10:17:32.601] [DEBUG] Replied in 16ms [2026-09-02 10:17:38.903] [DEBUG] HANDLE EVENT "expand_merchant" in PlatformWeb.SettlementLive.MisApproval Parameters: %{"mid" => "419926360000000"} [2026-09-02 10:17:38.907] [DEBUG] QUERY OK source="settlement_mis_items" db=1.2ms queue=2.6ms idle=180.8ms SELECT s0.`id`, s0.`settlement_mis_id`, s0.`core_transaction_id`, s0.`merchant_mid`, s0.`merchant_id`, s0.`merchant_name`, s0.`merchant_ref_number`, s0.`bank_name`, s0.`iban`, s0.`account_number`, s0.`settlement_date`, s0.`rrn`, s0.`tid`, s0.`auth_number`, s0.`transaction_date`, s0.`transaction_type`, s0.`scheme_name`, s0.`card_type_code`, s0.`gross_amount`, s0.`mdr_percentage_rate`, s0.`mdr_amount`, s0.`vat_rate`, s0.`vat_amount`, s0.`interchange_fee`, s0.`adjustment_amount`, s0.`ar_recovery`, s0.`net_payable`, s0.`transaction_count`, s0.`total_gross_amount`, s0.`total_mdr_amount`, s0.`total_vat_amount`, s0.`total_interchange_fee`, s0.`total_net_settlement_amount`, s0.`risk_status`, s0.`exception_type`, s0.`mpr_sent`, s0.`margin_contribution`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis_items` AS s0 WHERE ((s0.`settlement_mis_id` = ?) AND (s0.`merchant_mid` = ?)) ORDER BY s0.`card_type_code` [328, "419926360000000"] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:319 [2026-09-02 10:17:38.910] [DEBUG] QUERY OK source="merchant_adjustments" db=1.0ms queue=1.3ms idle=169.3ms SELECT m0.`id`, m0.`merchant_mid`, m0.`merchant_name`, m0.`adjustment_date`, m0.`debit_credit`, m0.`amount`, m0.`currency`, m0.`adjustment_type`, m0.`description`, m0.`settlement_mis_id`, m0.`status`, m0.`applied_at`, m0.`cancelled_at`, m0.`cancel_reason`, m0.`approval_status`, m0.`level1_reviewed_by`, m0.`level1_reviewed_at`, m0.`level2_approved_by`, m0.`level2_approved_at`, m0.`rejected_by`, m0.`rejected_at`, m0.`rejection_reason`, m0.`created_by`, m0.`updated_by`, m0.`inserted_at`, m0.`updated_at` FROM `merchant_adjustments` AS m0 WHERE (m0.`adjustment_date` = ?) AND (m0.`approval_status` = 'approved') [~D[2026-09-01]] ↳ SettlementCore.Context.list_approved_adjustments_by_date/1, at: lib/settlement_core/context.ex:971 [2026-09-02 10:17:38.915] [DEBUG] QUERY OK source="core_transactions" db=2.9ms queue=1.5ms idle=3.3ms SELECT c0.`id`, c0.`source_type`, c0.`source_ref_id`, c0.`settlement_batch_id`, c0.`rrn`, c0.`tid`, c0.`auth_number`, c0.`stan`, c0.`invoice_number`, c0.`batch_number`, c0.`merchant_mid`, c0.`merchant_id`, c0.`merchant_ref_number`, c0.`transaction_amount`, c0.`transaction_currency`, c0.`transaction_type`, c0.`transaction_datetime`, c0.`masked_pan`, c0.`scheme_name`, c0.`card_holder_name`, c0.`customer_mobile`, c0.`customer_country`, c0.`mcc_code`, c0.`card_type_id`, c0.`card_type_code`, c0.`mdr_template_id`, c0.`mdr_percentage_rate`, c0.`mdr_fixed_fee`, c0.`mdr_minimum_fee`, c0.`mdr_maximum_fee`, c0.`mdr_amount`, c0.`vat_rate`, c0.`vat_amount`, c0.`interchange_fee`, c0.`interchange_template_id`, c0.`gross_amount`, c0.`net_settlement_amount`, c0.`settlement_status`, c0.`switch_settled_date`, c0.`released_for_settlement_date`, c0.`risk_hold`, c0.`risk_rule_name`, c0.`chargeback_hold`, c0.`exception_type`, c0.`refund_status`, c0.`refund_date`, c0.`reversal_status`, c0.`reversal_date`, c0.`store_id`, c0.`dr_cr`, c0.`qr_tag`, c0.`bank_transfer_reference`, c0.`bank_transfer_date`, c0.`spare_fields`, c0.`inserted_at`, c0.`updated_at` FROM `core_transactions` AS c0 WHERE (DATE(c0.`transaction_datetime`) = ?) AND ((c0.`risk_hold` = TRUE) OR (c0.`settlement_status` = 'exception_hold')) AND (c0.`merchant_mid` = ?) ORDER BY c0.`merchant_mid`, c0.`transaction_datetime` [~D[2026-09-01], "419926360000000"] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:328 [2026-09-02 10:17:38.915] [DEBUG] Replied in 12ms [2026-09-02 10:17:43.387] [DEBUG] HANDLE EVENT "expand_merchant" in PlatformWeb.SettlementLive.MisApproval Parameters: %{"mid" => "425590250000000"} [2026-09-02 10:17:43.390] [DEBUG] QUERY OK source="settlement_mis_items" db=2.6ms idle=939.6ms SELECT s0.`id`, s0.`settlement_mis_id`, s0.`core_transaction_id`, s0.`merchant_mid`, s0.`merchant_id`, s0.`merchant_name`, s0.`merchant_ref_number`, s0.`bank_name`, s0.`iban`, s0.`account_number`, s0.`settlement_date`, s0.`rrn`, s0.`tid`, s0.`auth_number`, s0.`transaction_date`, s0.`transaction_type`, s0.`scheme_name`, s0.`card_type_code`, s0.`gross_amount`, s0.`mdr_percentage_rate`, s0.`mdr_amount`, s0.`vat_rate`, s0.`vat_amount`, s0.`interchange_fee`, s0.`adjustment_amount`, s0.`ar_recovery`, s0.`net_payable`, s0.`transaction_count`, s0.`total_gross_amount`, s0.`total_mdr_amount`, s0.`total_vat_amount`, s0.`total_interchange_fee`, s0.`total_net_settlement_amount`, s0.`risk_status`, s0.`exception_type`, s0.`mpr_sent`, s0.`margin_contribution`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis_items` AS s0 WHERE ((s0.`settlement_mis_id` = ?) AND (s0.`merchant_mid` = ?)) ORDER BY s0.`card_type_code` [328, "425590250000000"] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:319 [2026-09-02 10:17:43.392] [DEBUG] QUERY OK source="merchant_adjustments" db=1.7ms idle=650.0ms SELECT m0.`id`, m0.`merchant_mid`, m0.`merchant_name`, m0.`adjustment_date`, m0.`debit_credit`, m0.`amount`, m0.`currency`, m0.`adjustment_type`, m0.`description`, m0.`settlement_mis_id`, m0.`status`, m0.`applied_at`, m0.`cancelled_at`, m0.`cancel_reason`, m0.`approval_status`, m0.`level1_reviewed_by`, m0.`level1_reviewed_at`, m0.`level2_approved_by`, m0.`level2_approved_at`, m0.`rejected_by`, m0.`rejected_at`, m0.`rejection_reason`, m0.`created_by`, m0.`updated_by`, m0.`inserted_at`, m0.`updated_at` FROM `merchant_adjustments` AS m0 WHERE (m0.`adjustment_date` = ?) AND (m0.`approval_status` = 'approved') [~D[2026-09-01]] ↳ SettlementCore.Context.list_approved_adjustments_by_date/1, at: lib/settlement_core/context.ex:971 [2026-09-02 10:17:43.393] [DEBUG] QUERY OK source="core_transactions" db=0.7ms idle=2.3ms SELECT c0.`id`, c0.`source_type`, c0.`source_ref_id`, c0.`settlement_batch_id`, c0.`rrn`, c0.`tid`, c0.`auth_number`, c0.`stan`, c0.`invoice_number`, c0.`batch_number`, c0.`merchant_mid`, c0.`merchant_id`, c0.`merchant_ref_number`, c0.`transaction_amount`, c0.`transaction_currency`, c0.`transaction_type`, c0.`transaction_datetime`, c0.`masked_pan`, c0.`scheme_name`, c0.`card_holder_name`, c0.`customer_mobile`, c0.`customer_country`, c0.`mcc_code`, c0.`card_type_id`, c0.`card_type_code`, c0.`mdr_template_id`, c0.`mdr_percentage_rate`, c0.`mdr_fixed_fee`, c0.`mdr_minimum_fee`, c0.`mdr_maximum_fee`, c0.`mdr_amount`, c0.`vat_rate`, c0.`vat_amount`, c0.`interchange_fee`, c0.`interchange_template_id`, c0.`gross_amount`, c0.`net_settlement_amount`, c0.`settlement_status`, c0.`switch_settled_date`, c0.`released_for_settlement_date`, c0.`risk_hold`, c0.`risk_rule_name`, c0.`chargeback_hold`, c0.`exception_type`, c0.`refund_status`, c0.`refund_date`, c0.`reversal_status`, c0.`reversal_date`, c0.`store_id`, c0.`dr_cr`, c0.`qr_tag`, c0.`bank_transfer_reference`, c0.`bank_transfer_date`, c0.`spare_fields`, c0.`inserted_at`, c0.`updated_at` FROM `core_transactions` AS c0 WHERE (DATE(c0.`transaction_datetime`) = ?) AND ((c0.`risk_hold` = TRUE) OR (c0.`settlement_status` = 'exception_hold')) AND (c0.`merchant_mid` = ?) ORDER BY c0.`merchant_mid`, c0.`transaction_datetime` [~D[2026-09-01], "425590250000000"] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:328 [2026-09-02 10:17:43.393] [DEBUG] Replied in 6ms [2026-09-02 10:17:45.314] [DEBUG] HANDLE EVENT "expand_merchant" in PlatformWeb.SettlementLive.MisApproval Parameters: %{"mid" => "E2E_M3_TEST001"} [2026-09-02 10:17:45.317] [DEBUG] QUERY OK source="settlement_mis_items" db=2.8ms queue=0.1ms idle=867.7ms SELECT s0.`id`, s0.`settlement_mis_id`, s0.`core_transaction_id`, s0.`merchant_mid`, s0.`merchant_id`, s0.`merchant_name`, s0.`merchant_ref_number`, s0.`bank_name`, s0.`iban`, s0.`account_number`, s0.`settlement_date`, s0.`rrn`, s0.`tid`, s0.`auth_number`, s0.`transaction_date`, s0.`transaction_type`, s0.`scheme_name`, s0.`card_type_code`, s0.`gross_amount`, s0.`mdr_percentage_rate`, s0.`mdr_amount`, s0.`vat_rate`, s0.`vat_amount`, s0.`interchange_fee`, s0.`adjustment_amount`, s0.`ar_recovery`, s0.`net_payable`, s0.`transaction_count`, s0.`total_gross_amount`, s0.`total_mdr_amount`, s0.`total_vat_amount`, s0.`total_interchange_fee`, s0.`total_net_settlement_amount`, s0.`risk_status`, s0.`exception_type`, s0.`mpr_sent`, s0.`margin_contribution`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis_items` AS s0 WHERE ((s0.`settlement_mis_id` = ?) AND (s0.`merchant_mid` = ?)) ORDER BY s0.`card_type_code` [328, "E2E_M3_TEST001"] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:319 [2026-09-02 10:17:45.321] [DEBUG] QUERY OK source="merchant_adjustments" db=1.2ms idle=570.5ms SELECT m0.`id`, m0.`merchant_mid`, m0.`merchant_name`, m0.`adjustment_date`, m0.`debit_credit`, m0.`amount`, m0.`currency`, m0.`adjustment_type`, m0.`description`, m0.`settlement_mis_id`, m0.`status`, m0.`applied_at`, m0.`cancelled_at`, m0.`cancel_reason`, m0.`approval_status`, m0.`level1_reviewed_by`, m0.`level1_reviewed_at`, m0.`level2_approved_by`, m0.`level2_approved_at`, m0.`rejected_by`, m0.`rejected_at`, m0.`rejection_reason`, m0.`created_by`, m0.`updated_by`, m0.`inserted_at`, m0.`updated_at` FROM `merchant_adjustments` AS m0 WHERE (m0.`adjustment_date` = ?) AND (m0.`approval_status` = 'approved') [~D[2026-09-01]] ↳ SettlementCore.Context.list_approved_adjustments_by_date/1, at: lib/settlement_core/context.ex:971 [2026-09-02 10:17:45.323] [DEBUG] QUERY OK source="core_transactions" db=1.2ms idle=4.5ms SELECT c0.`id`, c0.`source_type`, c0.`source_ref_id`, c0.`settlement_batch_id`, c0.`rrn`, c0.`tid`, c0.`auth_number`, c0.`stan`, c0.`invoice_number`, c0.`batch_number`, c0.`merchant_mid`, c0.`merchant_id`, c0.`merchant_ref_number`, c0.`transaction_amount`, c0.`transaction_currency`, c0.`transaction_type`, c0.`transaction_datetime`, c0.`masked_pan`, c0.`scheme_name`, c0.`card_holder_name`, c0.`customer_mobile`, c0.`customer_country`, c0.`mcc_code`, c0.`card_type_id`, c0.`card_type_code`, c0.`mdr_template_id`, c0.`mdr_percentage_rate`, c0.`mdr_fixed_fee`, c0.`mdr_minimum_fee`, c0.`mdr_maximum_fee`, c0.`mdr_amount`, c0.`vat_rate`, c0.`vat_amount`, c0.`interchange_fee`, c0.`interchange_template_id`, c0.`gross_amount`, c0.`net_settlement_amount`, c0.`settlement_status`, c0.`switch_settled_date`, c0.`released_for_settlement_date`, c0.`risk_hold`, c0.`risk_rule_name`, c0.`chargeback_hold`, c0.`exception_type`, c0.`refund_status`, c0.`refund_date`, c0.`reversal_status`, c0.`reversal_date`, c0.`store_id`, c0.`dr_cr`, c0.`qr_tag`, c0.`bank_transfer_reference`, c0.`bank_transfer_date`, c0.`spare_fields`, c0.`inserted_at`, c0.`updated_at` FROM `core_transactions` AS c0 WHERE (DATE(c0.`transaction_datetime`) = ?) AND ((c0.`risk_hold` = TRUE) OR (c0.`settlement_status` = 'exception_hold')) AND (c0.`merchant_mid` = ?) ORDER BY c0.`merchant_mid`, c0.`transaction_datetime` [~D[2026-09-01], "E2E_M3_TEST001"] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:328 [2026-09-02 10:17:45.323] [DEBUG] Replied in 9ms [2026-09-02 10:18:27.022] [INFO ] Received status update for terminal 98251226730001 [2026-09-02 10:18:27.023] [INFO ] Incoming JSON payload: {"oid":"f4394378-12af-4185-ac55-7b7a8d5d6d7a","sn":"98251226730001","uploadTime":"2026-09-02T10:18:25Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-09-02T10:18:25Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-09-02T10:18:25Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-09-02T10:18:25Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-09-02T10:18:25Z"},{"itemkey":"ram_free_mb","value":"840","timestamp":"2026-09-02T10:18:25Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-09-02T10:18:25Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-09-02T10:18:25Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-09-02T10:18:25Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-09-02T10:18:25Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-09-02T10:18:25Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-09-02T10:18:25Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-09-02T10:18:25Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-09-02T10:18:25Z"},{"itemkey":"data_usage_mb","value":"39","timestamp":"2026-09-02T10:18:25Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-09-02T10:18:25Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-09-02 10:18:27.025] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "f4394378-12af-4185-ac55-7b7a8d5d6d7a", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-09-02T10:18:25Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-09-02T10:18:25Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-09-02T10:18:25Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-09-02T10:18:25Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-09-02T10:18:25Z", "value" => "840"}, %{"itemkey" => "network_type", "timestamp" => "2026-09-02T10:18:25Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-09-02T10:18:25Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-09-02T10:18:25Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-09-02T10:18:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-09-02T10:18:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-09-02T10:18:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-09-02T10:18:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-09-02T10:18:25Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-09-02T10:18:25Z", "value" => "39"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-09-02T10:18:25Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-09-02T10:18:25Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-09-02T10:18:25Z", "vendor" => "morefun"} [2026-09-02 10:18:27.025] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-09-02 10:18:27.026] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-09-02 10:18:27.026] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-09-02 10:18:27.027] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=572.2ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-09-02 10:18:27.031] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=70.0ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-09-02 10:18:27.031] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-09-02 10:18:27.032] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=4.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:140 [2026-09-02 10:18:27.097] [DEBUG] QUERY OK source="tms_terminals" db=24.0ms queue=40.8ms idle=4.9ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-09-02 10:18:27], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-09-02 10:18:27.098] [INFO ] Terminal updated: 98251226730001 [2026-09-02 10:18:27.098] [DEBUG] Processing terminal event: terminal_updated [2026-09-02 10:18:27.102] [INFO ] Processing terminal_updated event for terminal 33 [2026-09-02 10:18:27.102] [INFO ] Changed fields: [:vendor, :model] [2026-09-02 10:18:27.098] [INFO ] Event published: terminal_updated [2026-09-02 10:18:27.137] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.7ms queue=1.1ms idle=102.9ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-09-02 10:18:27], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-09-02 10:18:27.142] [DEBUG] QUERY OK source="tms_terminals" db=2.0ms queue=0.5ms idle=41.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-09-02 10:18:27.165] [DEBUG] QUERY OK source="terminal_group_rules" db=0.5ms queue=0.9ms idle=21.3ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-09-02 10:18:27.165] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-09-02 10:18:27.234] [DEBUG] QUERY OK source="tms_terminals" db=50.8ms queue=43.0ms idle=3.4ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "kiosk_launcher", "morefun", nil, nil, nil, nil, ~N[2026-09-02 10:18:27], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:164 [2026-09-02 10:18:27.235] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-09-02 10:18:27.239] [DEBUG] QUERY OK source="tms_terminals" db=3.7ms idle=70.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:1184 [2026-09-02 10:18:27.301] [DEBUG] QUERY OK source="tms_terminals" db=54.8ms queue=6.6ms idle=4.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:18:27], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:174 [2026-09-02 10:18:27.313] [DEBUG] QUERY OK source="app_upgrade_device_statuses" db=11.7ms queue=0.1ms idle=62.8ms SELECT a0.`id`, a0.`config_id`, a0.`device_id`, a0.`device_sn`, a0.`vendor`, a0.`model`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`update_result`, a0.`status`, a0.`remark`, a0.`finish_time`, a0.`pushed_time`, a0.`retry_count`, a0.`inserted_at`, a0.`updated_at` FROM `app_upgrade_device_statuses` AS a0 WHERE ((a0.`device_sn` = ?) AND a0.`status` IN ('pending','pushed')) ["98251226730001"] ↳ TmsCore.TerminalManagement.AppUpgradeService.maybe_repush_for_device/1, at: lib/tms_core/terminal_management/app_upgrade_service.ex:148 [2026-09-02 10:18:27.361] [DEBUG] QUERY OK db=43.9ms idle=16.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "f4394378-12af-4185-ac55-7b7a8d5d6d7a", "2026-09-02T10:18:25Z", ~N[2026-09-02 10:18:27], ~N[2026-09-02 10:18:27]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:179 [2026-09-02 10:18:27.361] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 105770, oid: "f4394378-12af-4185-ac55-7b7a8d5d6d7a", upload_time: "2026-09-02T10:18:25Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:18:27], updated_at: ~N[2026-09-02 10:18:27]} [2026-09-02 10:18:27.361] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-09-02T10:18:25Z", "value" => "morefun"} [2026-09-02 10:18:27.408] [DEBUG] QUERY OK db=46.5ms idle=52.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:18:25Z", "morefun", "vendor", 105770, ~N[2026-09-02 10:18:27], ~N[2026-09-02 10:18:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:18:27.408] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084026, itemkey: "vendor", value: "morefun", timestamp: "2026-09-02T10:18:25Z", message: nil, status_log_id: 105770, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:18:27], updated_at: ~N[2026-09-02 10:18:27]}} [2026-09-02 10:18:27.408] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-09-02T10:18:25Z", "value" => "kiosk_launcher"} [2026-09-02 10:18:27.474] [DEBUG] QUERY OK db=60.9ms decode=0.1ms queue=1.9ms idle=50.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:18:25Z", "kiosk_launcher", "model", 105770, ~N[2026-09-02 10:18:27], ~N[2026-09-02 10:18:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:18:27.474] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084029, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-09-02T10:18:25Z", message: nil, status_log_id: 105770, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:18:27], updated_at: ~N[2026-09-02 10:18:27]}} [2026-09-02 10:18:27.474] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-09-02T10:18:25Z", "value" => "1.0"} [2026-09-02 10:18:27.557] [DEBUG] QUERY OK db=78.8ms idle=70.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:18:25Z", "1.0", "app_version", 105770, ~N[2026-09-02 10:18:27], ~N[2026-09-02 10:18:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:18:27.557] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084032, itemkey: "app_version", value: "1.0", timestamp: "2026-09-02T10:18:25Z", message: nil, status_log_id: 105770, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:18:27], updated_at: ~N[2026-09-02 10:18:27]}} [2026-09-02 10:18:27.557] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-09-02T10:18:25Z", "value" => "13"} [2026-09-02 10:18:27.610] [DEBUG] QUERY OK db=51.9ms idle=84.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:18:25Z", "13", "android_version", 105770, ~N[2026-09-02 10:18:27], ~N[2026-09-02 10:18:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:18:27.611] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084034, itemkey: "android_version", value: "13", timestamp: "2026-09-02T10:18:25Z", message: nil, status_log_id: 105770, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:18:27], updated_at: ~N[2026-09-02 10:18:27]}} [2026-09-02 10:18:27.611] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-09-02T10:18:25Z", "value" => "840"} [2026-09-02 10:18:27.673] [DEBUG] QUERY OK db=61.0ms idle=54.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:18:25Z", "840", "ram_free_mb", 105770, ~N[2026-09-02 10:18:27], ~N[2026-09-02 10:18:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:18:27.674] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084037, itemkey: "ram_free_mb", value: "840", timestamp: "2026-09-02T10:18:25Z", message: nil, status_log_id: 105770, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:18:27], updated_at: ~N[2026-09-02 10:18:27]}} [2026-09-02 10:18:27.674] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-09-02T10:18:25Z", "value" => "WIFI"} [2026-09-02 10:18:27.754] [DEBUG] QUERY OK db=78.9ms idle=65.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:18:25Z", "WIFI", "network_type", 105770, ~N[2026-09-02 10:18:27], ~N[2026-09-02 10:18:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:18:27.754] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084040, itemkey: "network_type", value: "WIFI", timestamp: "2026-09-02T10:18:25Z", message: nil, status_log_id: 105770, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:18:27], updated_at: ~N[2026-09-02 10:18:27]}} [2026-09-02 10:18:27.754] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-09-02T10:18:25Z", "value" => "true"} [2026-09-02 10:18:27.832] [DEBUG] QUERY OK db=76.9ms idle=82.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:18:25Z", "true", "kiosk_active", 105770, ~N[2026-09-02 10:18:27], ~N[2026-09-02 10:18:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:18:27.832] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084043, itemkey: "kiosk_active", value: "true", timestamp: "2026-09-02T10:18:25Z", message: nil, status_log_id: 105770, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:18:27], updated_at: ~N[2026-09-02 10:18:27]}} [2026-09-02 10:18:27.832] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-09-02T10:18:25Z", "value" => ""} [2026-09-02 10:18:27.892] [DEBUG] QUERY OK db=59.8ms idle=78.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-09-02T10:18:25Z", "sim_operator", 105770, ~N[2026-09-02 10:18:27], ~N[2026-09-02 10:18:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:18:27.895] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084046, itemkey: "sim_operator", value: nil, timestamp: "2026-09-02T10:18:25Z", message: nil, status_log_id: 105770, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:18:27], updated_at: ~N[2026-09-02 10:18:27]}} [2026-09-02 10:18:27.895] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-09-02T10:18:25Z", "value" => "UNKNOWN"} [2026-09-02 10:18:27.985] [DEBUG] QUERY OK db=89.0ms idle=63.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:18:25Z", "UNKNOWN", "sim_number", 105770, ~N[2026-09-02 10:18:27], ~N[2026-09-02 10:18:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:18:27.985] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084049, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-09-02T10:18:25Z", message: nil, status_log_id: 105770, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:18:27], updated_at: ~N[2026-09-02 10:18:27]}} [2026-09-02 10:18:27.985] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-09-02T10:18:25Z", "value" => "UNKNOWN"} [2026-09-02 10:18:28.018] [DEBUG] QUERY OK db=32.1ms idle=23.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:18:25Z", "UNKNOWN", "sim_iccid", 105770, ~N[2026-09-02 10:18:27], ~N[2026-09-02 10:18:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:18:28.021] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084052, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-09-02T10:18:25Z", message: nil, status_log_id: 105770, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:18:27], updated_at: ~N[2026-09-02 10:18:27]}} [2026-09-02 10:18:28.021] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-09-02T10:18:25Z", "value" => "UNKNOWN"} [2026-09-02 10:18:28.095] [DEBUG] QUERY OK db=72.0ms idle=38.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:18:25Z", "UNKNOWN", "sim_imsi", 105770, ~N[2026-09-02 10:18:28], ~N[2026-09-02 10:18:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:18:28.096] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084055, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-09-02T10:18:25Z", message: nil, status_log_id: 105770, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:18:28], updated_at: ~N[2026-09-02 10:18:28]}} [2026-09-02 10:18:28.096] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-09-02T10:18:25Z", "value" => "UNKNOWN"} [2026-09-02 10:18:28.142] [DEBUG] QUERY OK db=45.8ms idle=78.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:18:25Z", "UNKNOWN", "sim_iccid2", 105770, ~N[2026-09-02 10:18:28], ~N[2026-09-02 10:18:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:18:28.145] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084057, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-09-02T10:18:25Z", message: nil, status_log_id: 105770, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:18:28], updated_at: ~N[2026-09-02 10:18:28]}} [2026-09-02 10:18:28.145] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-09-02T10:18:25Z", "value" => "UNKNOWN"} [2026-09-02 10:18:28.219] [DEBUG] QUERY OK db=70.9ms idle=53.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:18:25Z", "UNKNOWN", "sim_imsi2", 105770, ~N[2026-09-02 10:18:28], ~N[2026-09-02 10:18:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:18:28.220] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084060, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-09-02T10:18:25Z", message: nil, status_log_id: 105770, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:18:28], updated_at: ~N[2026-09-02 10:18:28]}} [2026-09-02 10:18:28.220] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-09-02T10:18:25Z", "value" => "39"} [2026-09-02 10:18:28.326] [DEBUG] QUERY OK db=77.3ms queue=7.7ms idle=98.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:18:25Z", "39", "data_usage_mb", 105770, ~N[2026-09-02 10:18:28], ~N[2026-09-02 10:18:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:18:28.326] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084063, itemkey: "data_usage_mb", value: "39", timestamp: "2026-09-02T10:18:25Z", message: nil, status_log_id: 105770, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:18:28], updated_at: ~N[2026-09-02 10:18:28]}} [2026-09-02 10:18:28.352] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-09-02T10:18:25Z", "value" => "0"} [2026-09-02 10:18:28.392] [DEBUG] QUERY OK db=39.7ms idle=132.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:18:25Z", "0", "mobile_data_mb", 105770, ~N[2026-09-02 10:18:28], ~N[2026-09-02 10:18:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:18:28.392] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084066, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-09-02T10:18:25Z", message: nil, status_log_id: 105770, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:18:28], updated_at: ~N[2026-09-02 10:18:28]}} [2026-09-02 10:18:28.393] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-09-02T10:18:25Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-09-02 10:18:28.472] [DEBUG] QUERY OK db=76.7ms idle=67.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:18:25Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 105770, ~N[2026-09-02 10:18:28], ~N[2026-09-02 10:18:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:18:28.478] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084068, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-09-02T10:18:25Z", message: nil, status_log_id: 105770, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:18:28], updated_at: ~N[2026-09-02 10:18:28]}} [2026-09-02 10:18:41.606] [INFO ] Received status update for terminal 61250415798001 [2026-09-02 10:18:41.606] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61250415798001","vendor":"MoreFun","model":"SR600","uploadTime":"-952322-10-10T22:52:47Z","org.device":[{"itemkey":"status","value":"online","timestamp":"-952322-10-10T22:52:47Z","message":"Device Connected"}]} [2026-09-02 10:18:41.607] [INFO ] Decoded JSON: %{"model" => "SR600", "oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "status", "message" => "Device Connected", "timestamp" => "-952322-10-10T22:52:47Z", "value" => "online"}], "sn" => "61250415798001", "uploadTime" => "-952322-10-10T22:52:47Z", "vendor" => "MoreFun"} [2026-09-02 10:18:41.611] [INFO ] Extracted versions for 61250415798001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-09-02 10:18:41.611] [INFO ] Detected missing versions for 61250415798001, triggering auto-push [2026-09-02 10:18:41.611] [INFO ] AutoPushService: Triggering auto-push for 61250415798001 (MoreFun SR600) - missing version [2026-09-02 10:18:41.612] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=577.3ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["MoreFun", "SR600"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-09-02 10:18:41.613] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=570.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-09-02 10:18:41.617] [DEBUG] QUERY OK source="parameter_template_values" db=2.6ms queue=0.8ms idle=1.2ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [7] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-09-02 10:18:41.686] [DEBUG] QUERY OK db=63.7ms queue=4.7ms idle=4.3ms INSERT INTO `parameter_push_logs` (`status`,`request_id`,`log_time`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", 452, ~U[2026-09-02 10:18:41Z], 1, "parameter", "SR600", "MoreFun", %{}, "full", 7, "missing_version", "1.0.0", ~N[2026-09-02 10:18:41], ~N[2026-09-02 10:18:41]] ↳ TmsCore.TerminalManagement.AutoPushService.push_generic_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:235 [2026-09-02 10:18:41.687] [INFO ] AutoPushService: Created push log 60487 for parameters (template: 7) [2026-09-02 10:18:41.687] [INFO ] SR600 MQTT Command: %{"command" => "file_download", "merchant_config" => "true", "request_id" => 452, "retry_count" => "3", "version" => "1.0.0"} [2026-09-02 10:18:41.687] [INFO ] AutoPushService: Sending parameter push to 61250415798001 on topic: /ota/pFppbioOCKlo5c8E/61250415798001/update [2026-09-02 10:18:41.687] [INFO ] AutoPushService: Parameter push sent successfully to 61250415798001 [2026-09-02 10:18:41.749] [DEBUG] QUERY OK db=58.8ms queue=2.1ms idle=71.5ms INSERT INTO `parameter_push_logs` (`status`,`request_id`,`log_time`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?) ["pending", 484, ~U[2026-09-02 10:18:41Z], 1, "emv_config", "SR600", "MoreFun", "full", "missing_version", ~N[2026-09-02 10:18:41], ~N[2026-09-02 10:18:41]] ↳ TmsCore.TerminalManagement.AutoPushService.push_regular_config/5, at: lib/tms_core/terminal_management/auto_push_service.ex:427 [2026-09-02 10:18:41.750] [INFO ] AutoPushService: Created push log for emv_config [2026-09-02 10:18:41.750] [INFO ] SR600 MQTT Command: %{"command" => "file_download", "merchant_config" => "true", "request_id" => 484, "retry_count" => "3"} [2026-09-02 10:18:41.750] [INFO ] AutoPushService: Sending emv_config push to 61250415798001 on topic: /ota/pFppbioOCKlo5c8E/61250415798001/update [2026-09-02 10:18:41.751] [INFO ] AutoPushService: emv_config push sent successfully to 61250415798001 [2026-09-02 10:18:41.753] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms idle=66.3ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "SR600"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-09-02 10:18:41.753] [INFO ] KeysConfigService: Generating keys.json for 61250415798001 (SR600) [2026-09-02 10:18:41.756] [DEBUG] QUERY OK source="tms_terminals" db=2.6ms idle=3.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-09-02 10:18:41.756] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 61250415798001 with params: %{"kekKcv" => "112233", "model" => "SR600", "serialNumber" => "61250415798001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-09-02 10:18:41.759] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-09-02 10:18:41.759] [ERROR] KeysConfigService: Failed to generate keys for 61250415798001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 10:18:41.760] [ERROR] AutoPushService: Failed to generate keys.json for 61250415798001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 10:18:41.816] [DEBUG] QUERY OK db=55.1ms queue=1.3ms idle=6.9ms INSERT INTO `parameter_push_logs` (`status`,`request_id`,`log_time`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?) ["pending", 516, ~U[2026-09-02 10:18:41Z], 1, "application", "SR600", "MoreFun", "full", "missing_version", ~N[2026-09-02 10:18:41], ~N[2026-09-02 10:18:41]] ↳ TmsCore.TerminalManagement.AutoPushService.push_regular_config/5, at: lib/tms_core/terminal_management/auto_push_service.ex:427 [2026-09-02 10:18:41.817] [INFO ] AutoPushService: Created push log for application [2026-09-02 10:18:41.817] [INFO ] SR600 MQTT Command: %{"command" => "file_download", "merchant_config" => "true", "request_id" => 516, "retry_count" => "3"} [2026-09-02 10:18:41.817] [INFO ] AutoPushService: Sending application push to 61250415798001 on topic: /ota/pFppbioOCKlo5c8E/61250415798001/update [2026-09-02 10:18:41.817] [INFO ] AutoPushService: application push sent successfully to 61250415798001 [2026-09-02 10:18:41.817] [INFO ] AutoPushService: Auto-push completed for 61250415798001 [2026-09-02 10:18:41.824] [DEBUG] QUERY OK source="tms_terminals" db=6.7ms idle=61.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:140 [2026-09-02 10:18:41.824] [INFO ] Terminal updated: 61250415798001 [2026-09-02 10:18:41.865] [DEBUG] QUERY OK source="tms_terminals" db=40.6ms idle=8.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-09-02 10:18:41], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:164 [2026-09-02 10:18:41.866] [DEBUG] VersionComplianceChecker: 61250415798001 — all versions compliant [2026-09-02 10:18:41.868] [DEBUG] QUERY OK source="tms_terminals" db=2.1ms idle=45.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:1184 [2026-09-02 10:18:41.924] [DEBUG] QUERY OK source="tms_terminals" db=55.5ms idle=3.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:18:41], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:174 [2026-09-02 10:18:41.926] [DEBUG] QUERY OK source="app_upgrade_device_statuses" db=2.0ms idle=56.3ms SELECT a0.`id`, a0.`config_id`, a0.`device_id`, a0.`device_sn`, a0.`vendor`, a0.`model`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`update_result`, a0.`status`, a0.`remark`, a0.`finish_time`, a0.`pushed_time`, a0.`retry_count`, a0.`inserted_at`, a0.`updated_at` FROM `app_upgrade_device_statuses` AS a0 WHERE ((a0.`device_sn` = ?) AND a0.`status` IN ('pending','pushed')) ["61250415798001"] ↳ TmsCore.TerminalManagement.AppUpgradeService.maybe_repush_for_device/1, at: lib/tms_core/terminal_management/app_upgrade_service.ex:148 [2026-09-02 10:18:41.972] [DEBUG] QUERY OK db=44.7ms idle=2.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [1, "org-id-placeholder", "-952322-10-10T22:52:47Z", ~N[2026-09-02 10:18:41], ~N[2026-09-02 10:18:41]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:179 [2026-09-02 10:18:41.972] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 105772, oid: "org-id-placeholder", upload_time: "-952322-10-10T22:52:47Z", terminal_id: 1, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:18:41], updated_at: ~N[2026-09-02 10:18:41]} [2026-09-02 10:18:41.972] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Device Connected", "timestamp" => "-952322-10-10T22:52:47Z", "value" => "online"} [2026-09-02 10:18:42.079] [DEBUG] QUERY OK db=106.9ms idle=45.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Device Connected", "-952322-10-10T22:52:47Z", "online", "status", 105772, ~N[2026-09-02 10:18:41], ~N[2026-09-02 10:18:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:18:42.079] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084075, itemkey: "status", value: "online", timestamp: "-952322-10-10T22:52:47Z", message: "Device Connected", status_log_id: 105772, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:18:41], updated_at: ~N[2026-09-02 10:18:41]}} [2026-09-02 10:18:42.080] [INFO ] Setting terminal 61250415798001 status to 'online' from status itemkey [2026-09-02 10:18:42.080] [WARN ] Unexpected async result [2026-09-02 10:18:42.080] [WARN ] Unexpected async result [2026-09-02 10:18:42.080] [WARN ] Unexpected async result [2026-09-02 10:18:54.063] [INFO ] GET /api/v1/settlements/mis/328/download_xlsx [2026-09-02 10:18:54.064] [DEBUG] Processing with PlatformWeb.SettlementMisController.download_xlsx/2 Parameters: %{"id" => "328"} Pipelines: [:api] [2026-09-02 10:18:54.078] [DEBUG] QUERY OK source="settlement_mis" db=0.6ms idle=1612.2ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 WHERE (s0.`id` = ?) [328] ↳ PlatformWeb.SettlementMisController.download_xlsx/2, at: lib/platform_web/controllers/settlement_mis_controller.ex:163 [2026-09-02 10:18:54.081] [DEBUG] QUERY OK source="core_transactions" db=1.1ms queue=1.5ms idle=980.7ms SELECT c0.`id`, c0.`source_type`, c0.`source_ref_id`, c0.`settlement_batch_id`, c0.`rrn`, c0.`tid`, c0.`auth_number`, c0.`stan`, c0.`invoice_number`, c0.`batch_number`, c0.`merchant_mid`, c0.`merchant_id`, c0.`merchant_ref_number`, c0.`transaction_amount`, c0.`transaction_currency`, c0.`transaction_type`, c0.`transaction_datetime`, c0.`masked_pan`, c0.`scheme_name`, c0.`card_holder_name`, c0.`customer_mobile`, c0.`customer_country`, c0.`mcc_code`, c0.`card_type_id`, c0.`card_type_code`, c0.`mdr_template_id`, c0.`mdr_percentage_rate`, c0.`mdr_fixed_fee`, c0.`mdr_minimum_fee`, c0.`mdr_maximum_fee`, c0.`mdr_amount`, c0.`vat_rate`, c0.`vat_amount`, c0.`interchange_fee`, c0.`interchange_template_id`, c0.`gross_amount`, c0.`net_settlement_amount`, c0.`settlement_status`, c0.`switch_settled_date`, c0.`released_for_settlement_date`, c0.`risk_hold`, c0.`risk_rule_name`, c0.`chargeback_hold`, c0.`exception_type`, c0.`refund_status`, c0.`refund_date`, c0.`reversal_status`, c0.`reversal_date`, c0.`store_id`, c0.`dr_cr`, c0.`qr_tag`, c0.`bank_transfer_reference`, c0.`bank_transfer_date`, c0.`spare_fields`, c0.`inserted_at`, c0.`updated_at` FROM `core_transactions` AS c0 WHERE ((c0.`switch_settled_date` = ?) OR (c0.`released_for_settlement_date` = ?)) AND (c0.`settlement_status` = 'matched') AND (c0.`risk_hold` = FALSE) AND (c0.`chargeback_hold` = FALSE) AND (c0.`exception_type` IS NULL) AND (DATE(c0.`transaction_datetime`) >= ?) ORDER BY c0.`merchant_mid`, c0.`transaction_datetime` [~D[2026-09-01], ~D[2026-09-01], ~D[2026-08-02]] ↳ PlatformWeb.SettlementMisController.fetch_mis_transactions/1, at: lib/platform_web/controllers/settlement_mis_controller.ex:195 [2026-09-02 10:18:54.085] [DEBUG] QUERY OK source="core_transactions" db=1.0ms queue=1.7ms idle=4.4ms SELECT c0.`id`, c0.`source_type`, c0.`source_ref_id`, c0.`settlement_batch_id`, c0.`rrn`, c0.`tid`, c0.`auth_number`, c0.`stan`, c0.`invoice_number`, c0.`batch_number`, c0.`merchant_mid`, c0.`merchant_id`, c0.`merchant_ref_number`, c0.`transaction_amount`, c0.`transaction_currency`, c0.`transaction_type`, c0.`transaction_datetime`, c0.`masked_pan`, c0.`scheme_name`, c0.`card_holder_name`, c0.`customer_mobile`, c0.`customer_country`, c0.`mcc_code`, c0.`card_type_id`, c0.`card_type_code`, c0.`mdr_template_id`, c0.`mdr_percentage_rate`, c0.`mdr_fixed_fee`, c0.`mdr_minimum_fee`, c0.`mdr_maximum_fee`, c0.`mdr_amount`, c0.`vat_rate`, c0.`vat_amount`, c0.`interchange_fee`, c0.`interchange_template_id`, c0.`gross_amount`, c0.`net_settlement_amount`, c0.`settlement_status`, c0.`switch_settled_date`, c0.`released_for_settlement_date`, c0.`risk_hold`, c0.`risk_rule_name`, c0.`chargeback_hold`, c0.`exception_type`, c0.`refund_status`, c0.`refund_date`, c0.`reversal_status`, c0.`reversal_date`, c0.`store_id`, c0.`dr_cr`, c0.`qr_tag`, c0.`bank_transfer_reference`, c0.`bank_transfer_date`, c0.`spare_fields`, c0.`inserted_at`, c0.`updated_at` FROM `core_transactions` AS c0 WHERE (DATE(c0.`transaction_datetime`) = ?) AND ((c0.`risk_hold` = TRUE) OR (c0.`settlement_status` = 'exception_hold')) ORDER BY c0.`merchant_mid`, c0.`transaction_datetime` [~D[2026-09-01]] ↳ PlatformWeb.SettlementMisController.fetch_mis_transactions/1, at: lib/platform_web/controllers/settlement_mis_controller.ex:199 [2026-09-02 10:18:54.091] [DEBUG] QUERY OK source="tid_masters" db=0.8ms queue=0.6ms idle=8.5ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` = ?) ["419926360000000"] ↳ anonymous fn/1 in PlatformWeb.SettlementMisController.fetch_mis_transactions/1, at: lib/platform_web/controllers/settlement_mis_controller.ex:213 [2026-09-02 10:18:54.094] [DEBUG] QUERY OK source="tid_masters" db=2.5ms idle=6.7ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` = ?) ["425590250000000"] ↳ anonymous fn/1 in PlatformWeb.SettlementMisController.fetch_mis_transactions/1, at: lib/platform_web/controllers/settlement_mis_controller.ex:213 [2026-09-02 10:18:54.095] [DEBUG] QUERY OK source="tid_masters" db=0.7ms idle=3.2ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` = ?) ["E2E_M3_TEST001"] ↳ anonymous fn/1 in PlatformWeb.SettlementMisController.fetch_mis_transactions/1, at: lib/platform_web/controllers/settlement_mis_controller.ex:213 [2026-09-02 10:18:54.101] [DEBUG] QUERY OK source="settlement_mis_items" db=0.5ms queue=4.5ms idle=1.5ms SELECT s0.`id`, s0.`settlement_mis_id`, s0.`core_transaction_id`, s0.`merchant_mid`, s0.`merchant_id`, s0.`merchant_name`, s0.`merchant_ref_number`, s0.`bank_name`, s0.`iban`, s0.`account_number`, s0.`settlement_date`, s0.`rrn`, s0.`tid`, s0.`auth_number`, s0.`transaction_date`, s0.`transaction_type`, s0.`scheme_name`, s0.`card_type_code`, s0.`gross_amount`, s0.`mdr_percentage_rate`, s0.`mdr_amount`, s0.`vat_rate`, s0.`vat_amount`, s0.`interchange_fee`, s0.`adjustment_amount`, s0.`ar_recovery`, s0.`net_payable`, s0.`transaction_count`, s0.`total_gross_amount`, s0.`total_mdr_amount`, s0.`total_vat_amount`, s0.`total_interchange_fee`, s0.`total_net_settlement_amount`, s0.`risk_status`, s0.`exception_type`, s0.`mpr_sent`, s0.`margin_contribution`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis_items` AS s0 WHERE (s0.`settlement_mis_id` = ?) ORDER BY s0.`merchant_mid`, s0.`card_type_code` [328] ↳ PlatformWeb.SettlementMisController.build_ar_recovery_map/1, at: lib/platform_web/controllers/settlement_mis_controller.ex:253 [2026-09-02 10:18:54.105] [DEBUG] QUERY OK source="merchant_adjustments" db=2.4ms queue=0.8ms idle=5.9ms SELECT sum(m0.`amount`) FROM `merchant_adjustments` AS m0 WHERE ((m0.`merchant_mid` = ?) AND ((m0.`status` = 'applied') OR (m0.`settlement_mis_id` = ?))) ["419926360000000", 328] ↳ anonymous fn/4 in PlatformWeb.SettlementMisController.build_ar_recovery_map/1, at: lib/platform_web/controllers/settlement_mis_controller.ex:269 [2026-09-02 10:18:54.107] [DEBUG] QUERY OK source="merchant_adjustments" db=2.0ms idle=0.2ms SELECT sum(m0.`amount`) FROM `merchant_adjustments` AS m0 WHERE ((m0.`merchant_mid` = ?) AND ((m0.`status` = 'applied') OR (m0.`settlement_mis_id` = ?))) ["425590250000000", 328] ↳ anonymous fn/4 in PlatformWeb.SettlementMisController.build_ar_recovery_map/1, at: lib/platform_web/controllers/settlement_mis_controller.ex:269 [2026-09-02 10:18:54.109] [DEBUG] QUERY OK source="merchant_adjustments" db=1.8ms idle=2.5ms SELECT sum(m0.`amount`) FROM `merchant_adjustments` AS m0 WHERE ((m0.`merchant_mid` = ?) AND ((m0.`status` = 'applied') OR (m0.`settlement_mis_id` = ?))) ["E2E_M3_TEST001", 328] ↳ anonymous fn/4 in PlatformWeb.SettlementMisController.build_ar_recovery_map/1, at: lib/platform_web/controllers/settlement_mis_controller.ex:269 [2026-09-02 10:18:54.111] [DEBUG] QUERY OK source="merchant_adjustments" db=0.4ms queue=1.0ms idle=2.4ms SELECT m0.`id`, m0.`merchant_mid`, m0.`merchant_name`, m0.`adjustment_date`, m0.`debit_credit`, m0.`amount`, m0.`currency`, m0.`adjustment_type`, m0.`description`, m0.`settlement_mis_id`, m0.`status`, m0.`applied_at`, m0.`cancelled_at`, m0.`cancel_reason`, m0.`approval_status`, m0.`level1_reviewed_by`, m0.`level1_reviewed_at`, m0.`level2_approved_by`, m0.`level2_approved_at`, m0.`rejected_by`, m0.`rejected_at`, m0.`rejection_reason`, m0.`created_by`, m0.`updated_by`, m0.`inserted_at`, m0.`updated_at` FROM `merchant_adjustments` AS m0 WHERE ((m0.`adjustment_date` = ?) AND (m0.`approval_status` = 'approved')) [~D[2026-09-01]] ↳ PlatformWeb.SettlementMisController.build_adjustments_map/1, at: lib/platform_web/controllers/settlement_mis_controller.ex:284 [2026-09-02 10:18:54.136] [INFO ] Sent 200 in 73ms [2026-09-02 10:19:02.618] [INFO ] Received status update for terminal 98251226730001 [2026-09-02 10:19:02.618] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-09-02T10:19:01Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-09-02T10:19:01Z","value":"34"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-09-02T10:19:01Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-09-02T10:19:01Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-09-02T10:19:01Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-09-02T10:19:01Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-09-02T10:19:01Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-09-02T10:19:01Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-09-02T10:19:01Z","vendor":"MoreFun"} [2026-09-02 10:19:02.619] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-09-02T10:19:01Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-09-02T10:19:01Z", "value" => "34"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-09-02T10:19:01Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-09-02T10:19:01Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-09-02T10:19:01Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-09-02T10:19:01Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-09-02T10:19:01Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-09-02T10:19:01Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-09-02T10:19:01Z", "vendor" => "MoreFun"} [2026-09-02 10:19:02.619] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-09-02 10:19:02.624] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-09-02 10:19:02.625] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-09-02 10:19:02.628] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms queue=2.4ms idle=486.1ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-09-02 10:19:02.634] [DEBUG] QUERY OK source="tms_terminals" db=5.9ms idle=162.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-09-02 10:19:02.638] [DEBUG] QUERY OK source="parameter_template_values" db=3.0ms queue=0.3ms idle=6.5ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-09-02 10:19:02.644] [DEBUG] QUERY OK source="parameter_definitions" db=4.3ms queue=1.3ms idle=4.0ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-09-02 10:19:02.652] [DEBUG] QUERY OK source="pos_terminal" db=5.3ms idle=6.6ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-09-02 10:19:02.685] [DEBUG] QUERY OK source="pos_merchant" db=32.2ms idle=9.3ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [350] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-09-02 10:19:02.689] [DEBUG] QUERY OK db=2.6ms queue=1.7ms idle=1220.3ms SELECT COALESCE(JSON_UNQUOTE(JSON_EXTRACT(mc.settings, '$.BASE_MERCHANT_NAME')), '') as base_merchant_name, COALESCE(u.name, '') as user_name, COALESCE(um.softpos_uuid, '') as softpos_uuid, COALESCE(mc.settings, '{}') as settings FROM user_metadata um LEFT JOIN merchant_configuration mc ON mc.user_id = um.user_id LEFT JOIN users u ON u.id = um.user_id WHERE um.merchant_refrence_number = ? LIMIT 1 ["667267350000000"] [2026-09-02 10:19:02.689] [INFO ] ParamsZipBuilder: Merchant info for merchantid=667267350000000 - business_name=Shubham003, QR_USE_SSL=, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-09-02 10:19:02.694] [DEBUG] QUERY OK source="pos_terminal_data" db=3.9ms queue=0.5ms idle=39.4ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["26735914"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-09-02 10:19:02.696] [DEBUG] QUERY OK source="address" db=1.1ms idle=9.7ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [639] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-09-02 10:19:02.696] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="667267350000000" [2026-09-02 10:19:02.702] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-09-02 10:19:02.803] [DEBUG] QUERY OK db=83.4ms queue=4.7ms idle=20.2ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "652093b1354b41a7422ab47df6d4fecebd2feba5030ea45c4238acfcc11dd0d9", 2115, 912, ~U[2026-09-02 10:19:02Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-09-02 10:19:02], ~N[2026-09-02 10:19:02]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-09-02 10:19:02.803] [INFO ] AutoPushService: Created push log 60495 for MF919 params.zip [2026-09-02 10:19:02.803] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4017/ota/98251226730001/params.zip", "requestId" => 2115, "type" => "tms_command", "version" => "1.0.0"} [2026-09-02 10:19:02.803] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-09-02 10:19:02.803] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-09-02 10:19:02.812] [DEBUG] QUERY OK source="config_file_versions" db=3.4ms idle=108.0ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-09-02 10:19:02.830] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730001 at priv/ota/98251226730001/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-09-02 10:19:02.906] [DEBUG] QUERY OK db=65.3ms queue=7.3ms idle=30.8ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "5987a4129743aff83e9bdcd8e868b500be2e40472d8f2663ebc5c6997a29d9f0", 644, 17947, ~U[2026-09-02 10:19:02Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-09-02 10:19:02], ~N[2026-09-02 10:19:02]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-09-02 10:19:02.906] [INFO ] AutoPushService: Created push log 60496 for MF919 l3config.zip (version: 1.0.1) [2026-09-02 10:19:02.906] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4017/ota/98251226730001/l3config.zip", "requestId" => 644, "type" => "tms_command", "version" => "1.0.1"} [2026-09-02 10:19:02.907] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-09-02 10:19:02.907] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-09-02 10:19:02.918] [DEBUG] QUERY OK source="config_file_versions" db=9.6ms idle=100.9ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-09-02 10:19:02.918] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-09-02 10:19:02.921] [DEBUG] QUERY OK source="tms_terminals" db=2.1ms queue=0.8ms idle=12.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-09-02 10:19:02.921] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730001 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-09-02 10:19:02.924] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-09-02 10:19:02.924] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 10:19:02.924] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 10:19:02.927] [DEBUG] QUERY OK source="config_file_versions" db=2.7ms idle=6.8ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-09-02 10:19:02.928] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-09-02 10:19:02.928] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-09-02 10:19:02.931] [DEBUG] QUERY OK source="tms_terminals" db=3.4ms idle=6.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:140 [2026-09-02 10:19:02.932] [INFO ] Terminal updated: 98251226730001 [2026-09-02 10:19:02.975] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms queue=42.3ms idle=4.5ms UPDATE `tms_terminals` SET `status` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "3.8.7.3", "1.0.0", "1.0.1", "1.0.0", ~N[2026-09-02 10:19:02], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:164 [2026-09-02 10:19:02.990] [DEBUG] QUERY OK source="parameter_templates" db=14.6ms queue=0.2ms idle=44.0ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) ORDER BY p0.`updated_at` DESC LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_parameter_version/2, at: lib/tms_core/terminal_management/version_compliance_checker.ex:105 [2026-09-02 10:19:02.992] [DEBUG] QUERY OK source="config_file_versions" db=1.3ms idle=15.5ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-09-02 10:19:02.995] [DEBUG] QUERY OK source="config_file_versions" db=3.0ms idle=1.9ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-09-02 10:19:02.995] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-09-02 10:19:03.111] [DEBUG] QUERY OK source="parameter_push_logs" db=115.4ms idle=3.8ms SELECT TRUE FROM `parameter_push_logs` AS p0 WHERE ((((p0.`terminal_id` = ?) AND (p0.`config_type` = ?)) AND (p0.`inserted_at` >= ?)) AND p0.`status` IN ('pending','sent')) LIMIT 1 [33, "application", ~N[2026-09-02 09:49:02]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-09-02 10:19:03.111] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-09-02 10:19:03.112] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-09-02 10:19:03.133] [DEBUG] QUERY OK source="tms_terminals" db=2.3ms queue=5.1ms idle=130.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-09-02 10:19:03.140] [DEBUG] QUERY OK source="config_file_versions" db=2.7ms queue=3.3ms idle=22.0ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-09-02 10:19:03.142] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-09-02 10:19:03.151] [DEBUG] QUERY OK source="tms_terminals" db=8.7ms idle=2.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:1184 [2026-09-02 10:19:03.290] [DEBUG] QUERY OK source="tms_terminals" db=91.6ms queue=47.2ms idle=0.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:19:03], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:174 [2026-09-02 10:19:03.296] [DEBUG] QUERY OK source="app_upgrade_device_statuses" db=1.6ms idle=122.9ms SELECT a0.`id`, a0.`config_id`, a0.`device_id`, a0.`device_sn`, a0.`vendor`, a0.`model`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`update_result`, a0.`status`, a0.`remark`, a0.`finish_time`, a0.`pushed_time`, a0.`retry_count`, a0.`inserted_at`, a0.`updated_at` FROM `app_upgrade_device_statuses` AS a0 WHERE ((a0.`device_sn` = ?) AND a0.`status` IN ('pending','pushed')) ["98251226730001"] ↳ TmsCore.TerminalManagement.AppUpgradeService.maybe_repush_for_device/1, at: lib/tms_core/terminal_management/app_upgrade_service.ex:148 [2026-09-02 10:19:03.385] [DEBUG] QUERY OK db=88.6ms idle=6.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-09-02T10:19:01Z", ~N[2026-09-02 10:19:03], ~N[2026-09-02 10:19:03]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:179 [2026-09-02 10:19:03.385] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 105774, oid: "organization_id", upload_time: "2026-09-02T10:19:01Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:19:03], updated_at: ~N[2026-09-02 10:19:03]} [2026-09-02 10:19:03.385] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-09-02T10:19:01Z", "value" => "online"} [2026-09-02 10:19:03.430] [DEBUG] QUERY OK db=44.1ms idle=89.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-09-02T10:19:01Z", "online", "status", 105774, ~N[2026-09-02 10:19:03], ~N[2026-09-02 10:19:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:19:03.430] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084077, itemkey: "status", value: "online", timestamp: "2026-09-02T10:19:01Z", message: "Terminal status update", status_log_id: 105774, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:19:03], updated_at: ~N[2026-09-02 10:19:03]}} [2026-09-02 10:19:03.430] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-09-02 10:19:03.431] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-09-02T10:19:01Z", "value" => "34"} [2026-09-02 10:19:03.490] [DEBUG] QUERY OK db=56.6ms idle=48.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-09-02T10:19:01Z", "34", "battery", 105774, ~N[2026-09-02 10:19:03], ~N[2026-09-02 10:19:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:19:03.490] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084079, itemkey: "battery", value: "34", timestamp: "2026-09-02T10:19:01Z", message: "Battery level", status_log_id: 105774, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:19:03], updated_at: ~N[2026-09-02 10:19:03]}} [2026-09-02 10:19:03.490] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-09-02T10:19:01Z", "value" => "online"} [2026-09-02 10:19:03.541] [DEBUG] QUERY OK db=50.3ms idle=60.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-09-02T10:19:01Z", "online", "network", 105774, ~N[2026-09-02 10:19:03], ~N[2026-09-02 10:19:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:19:03.541] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084081, itemkey: "network", value: "online", timestamp: "2026-09-02T10:19:01Z", message: "Network connectivity", status_log_id: 105774, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:19:03], updated_at: ~N[2026-09-02 10:19:03]}} [2026-09-02 10:19:03.541] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-09-02 10:19:03.541] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-09-02T10:19:01Z", "value" => "0"} [2026-09-02 10:19:03.622] [DEBUG] QUERY OK db=80.1ms idle=51.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-09-02T10:19:01Z", "0", "cpu", 105774, ~N[2026-09-02 10:19:03], ~N[2026-09-02 10:19:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:19:03.622] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084083, itemkey: "cpu", value: "0", timestamp: "2026-09-02T10:19:01Z", message: "CPU usage percentage", status_log_id: 105774, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:19:03], updated_at: ~N[2026-09-02 10:19:03]}} [2026-09-02 10:19:03.622] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-09-02T10:19:01Z", "value" => "1.0.0"} [2026-09-02 10:19:03.720] [DEBUG] QUERY OK db=97.0ms idle=81.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-09-02T10:19:01Z", "1.0.0", "parameter_config", 105774, ~N[2026-09-02 10:19:03], ~N[2026-09-02 10:19:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:19:03.720] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084085, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-09-02T10:19:01Z", message: "Current parameters version", status_log_id: 105774, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:19:03], updated_at: ~N[2026-09-02 10:19:03]}} [2026-09-02 10:19:03.720] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-09-02T10:19:01Z", "value" => "1.0.1"} [2026-09-02 10:19:03.770] [DEBUG] QUERY OK db=49.3ms idle=98.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-09-02T10:19:01Z", "1.0.1", "emv_config", 105774, ~N[2026-09-02 10:19:03], ~N[2026-09-02 10:19:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:19:03.772] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084088, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-09-02T10:19:01Z", message: "Current EMV config version", status_log_id: 105774, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:19:03], updated_at: ~N[2026-09-02 10:19:03]}} [2026-09-02 10:19:03.776] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-09-02T10:19:01Z", "value" => ""} [2026-09-02 10:19:03.853] [DEBUG] QUERY OK db=60.9ms queue=15.9ms idle=56.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-09-02T10:19:01Z", "keys_config", 105774, ~N[2026-09-02 10:19:03], ~N[2026-09-02 10:19:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:19:03.853] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084091, itemkey: "keys_config", value: nil, timestamp: "2026-09-02T10:19:01Z", message: "Current keys config version", status_log_id: 105774, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:19:03], updated_at: ~N[2026-09-02 10:19:03]}} [2026-09-02 10:19:03.854] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-09-02T10:19:01Z", "value" => "3.8.7.3"} [2026-09-02 10:19:03.912] [DEBUG] QUERY OK db=58.3ms idle=84.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-09-02T10:19:01Z", "3.8.7.3", "application", 105774, ~N[2026-09-02 10:19:03], ~N[2026-09-02 10:19:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:19:03.913] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084093, itemkey: "application", value: "3.8.7.3", timestamp: "2026-09-02T10:19:01Z", message: "Current application version", status_log_id: 105774, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:19:03], updated_at: ~N[2026-09-02 10:19:03]}} [2026-09-02 10:19:03.914] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.0","requestId":"2115","status":"success","timestamp":1788344342302,"type":"tms_response"} [2026-09-02 10:19:03.914] [INFO ] Processing file download response for device 98251226730001, request_id: 2115 [2026-09-02 10:19:03.915] [DEBUG] QUERY OK source="file_download_logs" db=0.7ms queue=0.1ms idle=61.2ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["2115"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:19:03.915] [INFO ] No file download log for request_id 2115; response not attached to a push [2026-09-02 10:19:03.916] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:19:03.916008Z], response: %{"message" => "Already up to date: 1.0.0", "requestId" => "2115", "status" => "success", "timestamp" => 1788344342302, "type" => "tms_response"}, request_id: "2115", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:19:03.916] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-09-02T10:19:02Z"} [2026-09-02 10:19:03.916] [INFO ] Received device ACK from 98251226730001: oid= status=error [2026-09-02 10:19:03.916] [WARN ] Unhandled device ACK oid= from 98251226730001: %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-09-02T10:19:02Z"} [2026-09-02 10:19:03.922] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.1","requestId":"644","status":"success","timestamp":1788344342415,"type":"tms_response"} [2026-09-02 10:19:03.922] [INFO ] Processing file download response for device 98251226730001, request_id: 644 [2026-09-02 10:19:03.925] [DEBUG] QUERY OK source="file_download_logs" db=1.1ms queue=1.0ms idle=10.4ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["644"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:19:03.925] [INFO ] No file download log for request_id 644; response not attached to a push [2026-09-02 10:19:03.925] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:19:03.925695Z], response: %{"message" => "Already up to date: 1.0.1", "requestId" => "644", "status" => "success", "timestamp" => 1788344342415, "type" => "tms_response"}, request_id: "644", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:19:03.925] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-09-02T10:19:02Z"} [2026-09-02 10:19:03.925] [INFO ] Received device ACK from 98251226730001: oid= status=error [2026-09-02 10:19:03.926] [WARN ] Unhandled device ACK oid= from 98251226730001: %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-09-02T10:19:02Z"} [2026-09-02 10:19:03.926] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-09-02T10:19:02Z"} [2026-09-02 10:19:03.926] [INFO ] Received device ACK from 98251226730001: oid= status=error [2026-09-02 10:19:03.926] [WARN ] Unhandled device ACK oid= from 98251226730001: %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-09-02T10:19:02Z"} [2026-09-02 10:19:03.926] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.0","requestId":"247331","status":"success","timestamp":1788344342503,"type":"tms_response"} [2026-09-02 10:19:03.932] [INFO ] Processing file download response for device 98251226730001, request_id: 247331 [2026-09-02 10:19:03.939] [DEBUG] QUERY OK source="file_download_logs" db=0.6ms idle=23.2ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["247331"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:19:03.939] [INFO ] No file download log for request_id 247331; response not attached to a push [2026-09-02 10:19:03.943] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:19:03.940738Z], response: %{"message" => "Already up to date: 1.0.0", "requestId" => "247331", "status" => "success", "timestamp" => 1788344342503, "type" => "tms_response"}, request_id: "247331", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:19:03.943] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-09-02T10:19:02Z"} [2026-09-02 10:19:03.943] [INFO ] Received device ACK from 98251226730001: oid= status=error [2026-09-02 10:19:03.944] [WARN ] Unhandled device ACK oid= from 98251226730001: %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-09-02T10:19:02Z"} [2026-09-02 10:19:03.944] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.1","requestId":"279490","status":"success","timestamp":1788344342999,"type":"tms_response"} [2026-09-02 10:19:03.944] [INFO ] Processing file download response for device 98251226730001, request_id: 279490 [2026-09-02 10:19:03.956] [DEBUG] QUERY OK source="file_download_logs" db=5.9ms idle=25.1ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["279490"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:19:03.956] [INFO ] No file download log for request_id 279490; response not attached to a push [2026-09-02 10:19:03.956] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:19:03.956837Z], response: %{"message" => "Already up to date: 1.0.1", "requestId" => "279490", "status" => "success", "timestamp" => 1788344342999, "type" => "tms_response"}, request_id: "279490", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:19:03.956] [WARN ] Unexpected async result [2026-09-02 10:19:03.957] [WARN ] Unexpected async result [2026-09-02 10:19:12.431] [INFO ] Running offline device check... [2026-09-02 10:19:12.432] [INFO ] Starting offline device check... [2026-09-02 10:19:12.434] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms queue=1.1ms idle=1183.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1234 [2026-09-02 10:19:12.439] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.7ms idle=183.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [1] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:19:12.441] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=4.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:19:12.444] [INFO ] Starting scheduled rule validation [2026-09-02 10:19:12.444] [DEBUG] Validating missing assignments [2026-09-02 10:19:12.445] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms queue=2.6ms idle=3.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:19:12.446] [DEBUG] QUERY OK source="terminal_group_rules" db=2.5ms idle=3.2ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_all_rules/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:194 [2026-09-02 10:19:12.447] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.3ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:19:12.448] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms idle=0.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_all_rules/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:196 [2026-09-02 10:19:12.449] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:19:12.451] [DEBUG] Re-applied 0 rules during validation [2026-09-02 10:19:12.452] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=1.7ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:19:12.451] [DEBUG] Validating invalid assignments [2026-09-02 10:19:12.452] [DEBUG] Validating rule consistency [2026-09-02 10:19:12.453] [DEBUG] Updating group terminal counts [2026-09-02 10:19:12.453] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.3ms idle=3.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:19:12.455] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms queue=0.1ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:19:12.456] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:19:12.458] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:19:12.460] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:19:12.464] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.0ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:19:12.466] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms queue=1.3ms idle=4.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:19:12.469] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:19:12.470] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:19:12.471] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:19:12.474] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.8ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:19:12.475] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=3.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:19:12.476] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:19:12.477] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:19:12.480] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:19:12.480] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.2ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:19:12.482] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms queue=0.2ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:19:12.486] [DEBUG] QUERY OK source="terminal_groups" db=2.4ms queue=1.5ms idle=1.3ms SELECT count(t0.`id`) FROM `terminal_groups` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:248 [2026-09-02 10:19:12.487] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.8ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:19:12.488] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:19:12.490] [DEBUG] QUERY OK source="terminal_groups" db=0.5ms queue=2.9ms idle=0.3ms SELECT count(t0.`id`) FROM `terminal_groups` AS t0 WHERE (t0.`is_active` = TRUE) [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:249 [2026-09-02 10:19:12.490] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:19:12.494] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.5ms idle=0.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:19:12.496] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms queue=0.1ms idle=4.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:19:12.500] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.2ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:19:12.504] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms idle=5.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:19:12.506] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms queue=0.1ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:19:12.505] [DEBUG] QUERY OK source="terminal_groups" db=0.4ms queue=0.5ms idle=4.4ms SELECT t0.`group_type`, count(t0.`id`) FROM `terminal_groups` AS t0 GROUP BY t0.`group_type` [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:255 [2026-09-02 10:19:12.507] [DEBUG] QUERY OK source="terminal_group_rules" db=0.4ms queue=0.2ms idle=1.0ms SELECT count(t0.`id`) FROM `terminal_group_rules` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:258 [2026-09-02 10:19:12.507] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:19:12.508] [DEBUG] QUERY OK source="terminal_group_rules" db=0.2ms queue=0.2ms idle=0.6ms SELECT count(t0.`id`) FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:259 [2026-09-02 10:19:12.509] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.1ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:19:12.510] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.2ms queue=0.6ms idle=0.6ms SELECT count(t0.`id`) FROM `terminal_group_memberships` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:261 [2026-09-02 10:19:12.511] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:19:12.513] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=0.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:19:12.513] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.7ms queue=2.1ms idle=0.8ms SELECT count(t0.`id`) FROM `terminal_group_memberships` AS t0 WHERE (t0.`is_active` = TRUE) [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:262 [2026-09-02 10:19:12.513] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:19:12.514] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:19:12.516] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=0.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:19:12.516] [DEBUG] QUERY OK source="terminal_group_memberships" db=1.6ms queue=1.2ms idle=0.4ms SELECT t0.`assignment_type`, count(t0.`id`) FROM `terminal_group_memberships` AS t0 WHERE (t0.`is_active` = TRUE) GROUP BY t0.`assignment_type` [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:269 [2026-09-02 10:19:12.517] [DEBUG] Current group statistics: %{rules: %{active: 0, total: 0}, groups: %{active: 4, total: 4, by_type: %{"custom" => 4}}, assignments: %{active: 2, total: 2, by_type: %{"manual" => 2}}} [2026-09-02 10:19:12.517] [INFO ] Rule validation completed - applied 0 fixes [2026-09-02 10:19:12.518] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms queue=0.1ms idle=0.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:19:12.520] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:19:12.520] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:19:12.521] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:19:12.523] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:19:12.525] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:19:12.526] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.7ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:19:12.527] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.5ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:19:12.530] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms queue=0.1ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:19:12.533] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms idle=2.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:19:12.534] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms queue=0.1ms idle=2.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:19:12.538] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.9ms queue=0.6ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:19:12.539] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=4.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:19:12.540] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:19:12.541] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [82] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:19:12.541] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [83] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:19:12.542] [INFO ] Offline device check completed. Found 50 offline devices, updated 0 statuses. [2026-09-02 10:19:12.542] [INFO ] Offline device check completed successfully [2026-09-02 10:20:53.905] [ERROR] ** (Bandit.TransportError) Unrecoverable error: timeout [2026-09-02 10:20:53.905] [ERROR] ** (Bandit.TransportError) Unrecoverable error: timeout [2026-09-02 10:21:08.753] [DEBUG] HANDLE EVENT "open_approve" in PlatformWeb.SettlementLive.MisApproval Parameters: %{"id" => "328", "level" => "l1", "value" => ""} [2026-09-02 10:21:08.754] [DEBUG] Replied in 192µs [2026-09-02 10:21:10.771] [DEBUG] HANDLE EVENT "confirm_action" in PlatformWeb.SettlementLive.MisApproval Parameters: %{"value" => ""} [2026-09-02 10:21:10.774] [DEBUG] QUERY OK source="settlement_mis" db=2.1ms queue=0.1ms idle=933.3ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 WHERE (s0.`id` = ?) [328] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:395 [2026-09-02 10:21:10.819] [DEBUG] QUERY OK source="settlement_mis" db=45.2ms queue=0.3ms idle=278.2ms UPDATE `settlement_mis` SET `approval_status` = ?, `level1_reviewed_at` = ?, `level1_reviewed_by` = ?, `updated_at` = ? WHERE `id` = ? ["level1_approved", ~N[2026-09-02 10:21:10], 3, ~N[2026-09-02 10:21:10], 328] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:402 [2026-09-02 10:21:10.822] [DEBUG] QUERY OK source="settlement_mis" db=2.0ms queue=0.1ms idle=47.0ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 ORDER BY s0.`mis_date` DESC LIMIT 100 [] ↳ PlatformWeb.SettlementLive.MisApproval.load_mis_rows/1, at: lib/platform_web/live/settlement_live/mis_approval.ex:505 [2026-09-02 10:21:10.824] [DEBUG] Replied in 53ms [2026-09-02 10:21:15.906] [DEBUG] HANDLE EVENT "close_detail" in PlatformWeb.SettlementLive.MisApproval Parameters: %{"value" => ""} [2026-09-02 10:21:15.906] [DEBUG] Replied in 214µs [2026-09-02 10:21:18.628] [DEBUG] HANDLE EVENT "open_approve" in PlatformWeb.SettlementLive.MisApproval Parameters: %{"id" => "328", "level" => "l2"} [2026-09-02 10:21:18.628] [DEBUG] Replied in 208µs [2026-09-02 10:21:20.303] [DEBUG] HANDLE EVENT "confirm_action" in PlatformWeb.SettlementLive.MisApproval Parameters: %{"value" => ""} [2026-09-02 10:21:20.305] [DEBUG] QUERY OK source="settlement_mis" db=1.1ms idle=1426.8ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 WHERE (s0.`id` = ?) [328] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:395 [2026-09-02 10:21:20.396] [DEBUG] QUERY OK source="settlement_mis" db=49.4ms queue=41.3ms idle=414.9ms UPDATE `settlement_mis` SET `approval_status` = ?, `level2_approved_at` = ?, `level2_approved_by` = ?, `updated_at` = ? WHERE `id` = ? ["approved", ~N[2026-09-02 10:21:20], 3, ~N[2026-09-02 10:21:20], 328] ↳ SettlementCore.Context.l2_approve_settlement_mis/3, at: lib/settlement_core/context.ex:1046 [2026-09-02 10:21:20.536] [INFO ] [PayoutTransmissionWorker] Starting payout for mis_id=328 [2026-09-02 10:21:20.537] [DEBUG] QUERY OK source="settlement_mis" db=0.5ms idle=0.3ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 WHERE (s0.`id` = ?) [328] ↳ SettlementCore.Workers.PayoutTransmissionWorker.perform/1, at: lib/settlement_core/workers/payout_transmission_worker.ex:41 [2026-09-02 10:21:20.549] [DEBUG] QUERY OK source="payout_batches" db=1.5ms queue=2.3ms idle=8.2ms SELECT p0.`id`, p0.`settlement_mis_id`, p0.`payout_date`, p0.`batch_type`, p0.`total_merchants`, p0.`total_items`, p0.`total_amount`, p0.`currency`, p0.`file_path`, p0.`file_name`, p0.`encryption_method`, p0.`batch_reference`, p0.`encrypted_file_path`, p0.`file_hash`, p0.`encryption_key_ref`, p0.`generated_by`, p0.`generated_at`, p0.`transmission_method`, p0.`status`, p0.`transmitted_at`, p0.`transmission_reference`, p0.`bank_confirmation_ref`, p0.`failure_reason`, p0.`confirmed_at`, p0.`confirmed_item_count`, p0.`rejected_item_count`, p0.`inserted_at`, p0.`updated_at` FROM `payout_batches` AS p0 WHERE (p0.`settlement_mis_id` = ?) [328] ↳ SettlementCore.PayoutGenerator.generate_for_mis/1, at: lib/settlement_core/payout_generator.ex:43 [2026-09-02 10:21:20.549] [INFO ] [PayoutGenerator] Starting batch generation for mis_id=328 date=2026-09-01 [2026-09-02 10:21:20.552] [DEBUG] QUERY OK source="settlement_mis_items" db=1.7ms queue=0.6ms idle=0.7ms SELECT s0.`id`, s0.`settlement_mis_id`, s0.`core_transaction_id`, s0.`merchant_mid`, s0.`merchant_id`, s0.`merchant_name`, s0.`merchant_ref_number`, s0.`bank_name`, s0.`iban`, s0.`account_number`, s0.`settlement_date`, s0.`rrn`, s0.`tid`, s0.`auth_number`, s0.`transaction_date`, s0.`transaction_type`, s0.`scheme_name`, s0.`card_type_code`, s0.`gross_amount`, s0.`mdr_percentage_rate`, s0.`mdr_amount`, s0.`vat_rate`, s0.`vat_amount`, s0.`interchange_fee`, s0.`adjustment_amount`, s0.`ar_recovery`, s0.`net_payable`, s0.`transaction_count`, s0.`total_gross_amount`, s0.`total_mdr_amount`, s0.`total_vat_amount`, s0.`total_interchange_fee`, s0.`total_net_settlement_amount`, s0.`risk_status`, s0.`exception_type`, s0.`mpr_sent`, s0.`margin_contribution`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis_items` AS s0 WHERE (s0.`settlement_mis_id` = ?) [328] ↳ SettlementCore.PayoutGenerator.do_generate/1, at: lib/settlement_core/payout_generator.ex:157 [2026-09-02 10:21:20.553] [DEBUG] QUERY OK db=0.7ms idle=0.2ms begin [] ↳ SettlementCore.Workers.PayoutTransmissionWorker.perform/1, at: lib/settlement_core/workers/payout_transmission_worker.ex:47 [2026-09-02 10:21:20.555] [DEBUG] QUERY OK source="tid_masters" db=1.5ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` = ?) ["419926360000000"] ↳ anonymous fn/3 in Ecto.Adapters.SQL.checkout_or_transaction/4, at: lib/ecto/adapters/sql.ex:1473 [2026-09-02 10:21:20.557] [DEBUG] QUERY OK source="tid_masters" db=1.4ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` = ?) ["425590250000000"] ↳ anonymous fn/3 in Ecto.Adapters.SQL.checkout_or_transaction/4, at: lib/ecto/adapters/sql.ex:1473 [2026-09-02 10:21:20.558] [DEBUG] QUERY OK source="tid_masters" db=0.7ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` = ?) ["E2E_M3_TEST001"] ↳ anonymous fn/3 in Ecto.Adapters.SQL.checkout_or_transaction/4, at: lib/ecto/adapters/sql.ex:1473 [2026-09-02 10:21:20.559] [DEBUG] QUERY OK source="merchant_adjustments" db=0.8ms SELECT m0.`id`, m0.`merchant_mid`, m0.`merchant_name`, m0.`adjustment_date`, m0.`debit_credit`, m0.`amount`, m0.`currency`, m0.`adjustment_type`, m0.`description`, m0.`settlement_mis_id`, m0.`status`, m0.`applied_at`, m0.`cancelled_at`, m0.`cancel_reason`, m0.`approval_status`, m0.`level1_reviewed_by`, m0.`level1_reviewed_at`, m0.`level2_approved_by`, m0.`level2_approved_at`, m0.`rejected_by`, m0.`rejected_at`, m0.`rejection_reason`, m0.`created_by`, m0.`updated_by`, m0.`inserted_at`, m0.`updated_at` FROM `merchant_adjustments` AS m0 WHERE (m0.`adjustment_date` = ?) AND (m0.`approval_status` = 'approved') [~D[2026-09-01]] ↳ anonymous fn/3 in Ecto.Adapters.SQL.checkout_or_transaction/4, at: lib/ecto/adapters/sql.ex:1473 [2026-09-02 10:21:20.560] [DEBUG] QUERY OK source="settlement_mis" db=1.9ms idle=1.2ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 ORDER BY s0.`mis_date` DESC LIMIT 100 [] ↳ PlatformWeb.SettlementLive.MisApproval.load_mis_rows/1, at: lib/platform_web/live/settlement_live/mis_approval.ex:505 [2026-09-02 10:21:20.562] [DEBUG] QUERY OK db=0.9ms INSERT INTO `payout_batches` (`status`,`batch_reference`,`generated_at`,`settlement_mis_id`,`payout_date`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["generated", "BATCH-20260901-328", ~N[2026-09-02 10:21:20], 328, ~D[2026-09-01], ~N[2026-09-02 10:21:20], ~N[2026-09-02 10:21:20]] ↳ anonymous fn/3 in Ecto.Adapters.SQL.checkout_or_transaction/4, at: lib/ecto/adapters/sql.ex:1473 [2026-09-02 10:21:20.564] [DEBUG] Replied in 262ms [2026-09-02 10:21:20.597] [DEBUG] QUERY OK db=24.2ms INSERT INTO `payout_items` (`status`,`currency`,`total_vat_amount`,`total_gross_amount`,`merchant_name`,`settlement_date`,`merchant_mid`,`bank_name`,`iban`,`gross_amount`,`net_settlement_amount`,`final_payout_amount`,`transaction_count`,`total_mdr_amount`,`merchant_id`,`settlement_mis_id`,`merchant_ref_number`,`payout_batch_id`,`bank_code`,`account_number`,`payout_amount`,`total_adjustments_credit`,`total_adjustments_debit`,`total_deductions`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "AED", Decimal.new("0.74"), Decimal.new("800.00"), "Kalyan Mart", ~D[2026-09-01], "419926360000000", "Kalyan bnk", "78979888888888888888888", Decimal.new("800.00"), Decimal.new("784.51"), Decimal.new("784.51"), 2, Decimal.new("14.75"), 1684, 328, "419926360000000", 180, "BANK001", "412412342134", Decimal.new("784.51"), Decimal.new("0"), Decimal.new("0"), Decimal.new("15.49"), ~N[2026-09-02 10:21:20], ~N[2026-09-02 10:21:20]] ↳ anonymous fn/3 in Ecto.Adapters.SQL.checkout_or_transaction/4, at: lib/ecto/adapters/sql.ex:1473 [2026-09-02 10:21:20.598] [DEBUG] QUERY OK db=0.4ms INSERT INTO `payout_items` (`status`,`currency`,`total_vat_amount`,`total_gross_amount`,`merchant_name`,`settlement_date`,`merchant_mid`,`bank_name`,`iban`,`gross_amount`,`net_settlement_amount`,`final_payout_amount`,`transaction_count`,`total_mdr_amount`,`merchant_id`,`settlement_mis_id`,`merchant_ref_number`,`payout_batch_id`,`bank_code`,`account_number`,`payout_amount`,`total_adjustments_credit`,`total_adjustments_debit`,`total_deductions`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "AED", Decimal.new("0.49"), Decimal.new("555.00"), "Golden Sands Retail LLC", ~D[2026-09-01], "425590250000000", "Abu Dhabi Commercial Bank", "AE070331234567890123456", Decimal.new("555.00"), Decimal.new("544.80"), Decimal.new("544.80"), 1, Decimal.new("9.71"), 990002, 328, "GRP-B-2050", 180, "ADCB", "512300998877", Decimal.new("544.80"), Decimal.new("0"), Decimal.new("0"), Decimal.new("10.20"), ~N[2026-09-02 10:21:20], ~N[2026-09-02 10:21:20]] ↳ anonymous fn/3 in Ecto.Adapters.SQL.checkout_or_transaction/4, at: lib/ecto/adapters/sql.ex:1473 [2026-09-02 10:21:20.600] [DEBUG] QUERY OK db=0.3ms INSERT INTO `payout_items` (`status`,`currency`,`total_vat_amount`,`total_gross_amount`,`merchant_name`,`settlement_date`,`merchant_mid`,`bank_name`,`iban`,`gross_amount`,`net_settlement_amount`,`final_payout_amount`,`transaction_count`,`total_mdr_amount`,`merchant_id`,`settlement_mis_id`,`merchant_ref_number`,`payout_batch_id`,`bank_code`,`account_number`,`payout_amount`,`total_adjustments_credit`,`total_adjustments_debit`,`total_deductions`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "AED", Decimal.new("2.61"), Decimal.new("2350.00"), "E2E Test Merchant Three", ~D[2026-09-01], "E2E_M3_TEST001", "Test Bank", "AE000000000000000000003", Decimal.new("2350.00"), Decimal.new("2295.26"), Decimal.new("2295.26"), 3, Decimal.new("52.13"), 990200001, 328, "E2E_M3_TEST001", 180, "TESTBANK", "E2EM3ACCT001", Decimal.new("2295.26"), Decimal.new("0"), Decimal.new("0"), Decimal.new("54.74"), ~N[2026-09-02 10:21:20], ~N[2026-09-02 10:21:20]] ↳ anonymous fn/3 in Ecto.Adapters.SQL.checkout_or_transaction/4, at: lib/ecto/adapters/sql.ex:1473 [2026-09-02 10:21:20.602] [DEBUG] QUERY OK source="payout_batches" db=0.9ms UPDATE `payout_batches` SET `total_amount` = ?, `total_merchants` = ?, `total_items` = ?, `updated_at` = ? WHERE `id` = ? [Decimal.new("3624.57"), 3, 3, ~N[2026-09-02 10:21:20], 180] ↳ anonymous fn/3 in Ecto.Adapters.SQL.checkout_or_transaction/4, at: lib/ecto/adapters/sql.ex:1473 [2026-09-02 10:21:20.610] [INFO ] [PayoutGenerator] Generated batch_id=180 items=3 total=3624.57 [2026-09-02 10:21:20.612] [DEBUG] QUERY OK source="settlement_mis_items" db=0.9ms SELECT s0.`merchant_mid` FROM `settlement_mis_items` AS s0 WHERE (s0.`settlement_mis_id` = ?) [328] ↳ anonymous fn/3 in Ecto.Adapters.SQL.checkout_or_transaction/4, at: lib/ecto/adapters/sql.ex:1473 [2026-09-02 10:21:20.614] [DEBUG] QUERY OK source="merchant_adjustments" db=0.5ms UPDATE `merchant_adjustments` AS m0 SET m0.`status` = ?, m0.`applied_at` = ?, m0.`settlement_mis_id` = ? WHERE (m0.`adjustment_date` = ?) AND (m0.`approval_status` = 'approved') AND (m0.`merchant_mid` IN (?,?,?)) ["applied", ~N[2026-09-02 10:21:20], 328, ~D[2026-09-01], "419926360000000", "425590250000000", "E2E_M3_TEST001"] ↳ anonymous fn/3 in Ecto.Adapters.SQL.checkout_or_transaction/4, at: lib/ecto/adapters/sql.ex:1473 [2026-09-02 10:21:20.673] [INFO ] [MprDispatchWorker] Dispatching MPRs for mis_id=328 [2026-09-02 10:21:20.675] [DEBUG] QUERY OK source="settlement_mis" db=0.5ms queue=1.0ms idle=1.0ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 WHERE (s0.`id` = ?) [328] ↳ SettlementCore.Workers.MprDispatchWorker.perform/1, at: lib/settlement_core/workers/mpr_dispatch_worker.ex:47 [2026-09-02 10:21:20.677] [DEBUG] QUERY OK source="settlement_mis_items" db=0.9ms idle=0.2ms SELECT s0.`id`, s0.`settlement_mis_id`, s0.`core_transaction_id`, s0.`merchant_mid`, s0.`merchant_id`, s0.`merchant_name`, s0.`merchant_ref_number`, s0.`bank_name`, s0.`iban`, s0.`account_number`, s0.`settlement_date`, s0.`rrn`, s0.`tid`, s0.`auth_number`, s0.`transaction_date`, s0.`transaction_type`, s0.`scheme_name`, s0.`card_type_code`, s0.`gross_amount`, s0.`mdr_percentage_rate`, s0.`mdr_amount`, s0.`vat_rate`, s0.`vat_amount`, s0.`interchange_fee`, s0.`adjustment_amount`, s0.`ar_recovery`, s0.`net_payable`, s0.`transaction_count`, s0.`total_gross_amount`, s0.`total_mdr_amount`, s0.`total_vat_amount`, s0.`total_interchange_fee`, s0.`total_net_settlement_amount`, s0.`risk_status`, s0.`exception_type`, s0.`mpr_sent`, s0.`margin_contribution`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis_items` AS s0 WHERE (s0.`settlement_mis_id` = ?) ORDER BY s0.`merchant_mid`, s0.`card_type_code` [328] ↳ SettlementCore.Workers.MprDispatchWorker.perform/1, at: lib/settlement_core/workers/mpr_dispatch_worker.ex:48 [2026-09-02 10:21:20.679] [DEBUG] QUERY OK source="payout_batches" db=1.3ms idle=0.9ms SELECT p0.`id`, p0.`settlement_mis_id`, p0.`payout_date`, p0.`batch_type`, p0.`total_merchants`, p0.`total_items`, p0.`total_amount`, p0.`currency`, p0.`file_path`, p0.`file_name`, p0.`encryption_method`, p0.`batch_reference`, p0.`encrypted_file_path`, p0.`file_hash`, p0.`encryption_key_ref`, p0.`generated_by`, p0.`generated_at`, p0.`transmission_method`, p0.`status`, p0.`transmitted_at`, p0.`transmission_reference`, p0.`bank_confirmation_ref`, p0.`failure_reason`, p0.`confirmed_at`, p0.`confirmed_item_count`, p0.`rejected_item_count`, p0.`inserted_at`, p0.`updated_at` FROM `payout_batches` AS p0 WHERE (p0.`settlement_mis_id` = ?) [328] ↳ SettlementCore.Workers.MprDispatchWorker.do_perform/3, at: lib/settlement_core/workers/mpr_dispatch_worker.ex:61 [2026-09-02 10:21:20.681] [DEBUG] QUERY OK source="core_transactions" db=1.5ms idle=0.2ms SELECT DISTINCT c0.`merchant_mid`, coalesce(t1.`merchant_name_legal`, t1.`merchant_name_dba`) FROM `core_transactions` AS c0 INNER JOIN `tid_masters` AS t1 ON t1.`mid` = c0.`merchant_mid` WHERE (DATE(c0.`transaction_datetime`) = ?) AND ((c0.`risk_hold` = TRUE) OR (c0.`settlement_status` = 'exception_hold')) AND (NOT (c0.`merchant_mid` IN (SELECT DISTINCT ss0.`merchant_mid` FROM `settlement_mis_items` AS ss0 WHERE (ss0.`settlement_mis_id` = ?)))) [~D[2026-09-01], 328] ↳ SettlementCore.Workers.MprDispatchWorker.do_perform/3, at: lib/settlement_core/workers/mpr_dispatch_worker.ex:73 [2026-09-02 10:21:20.681] [DEBUG] QUERY OK source="tid_masters" db=0.4ms idle=0.4ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` = ?) ["419926360000000"] ↳ SettlementCore.Workers.MprDispatchWorker.dispatch_mpr_for_merchant/4, at: lib/settlement_core/workers/mpr_dispatch_worker.ex:101 [2026-09-02 10:21:20.683] [DEBUG] QUERY OK source="merchant_adjustments" db=0.3ms queue=0.6ms idle=0.3ms SELECT m0.`id`, m0.`merchant_mid`, m0.`merchant_name`, m0.`adjustment_date`, m0.`debit_credit`, m0.`amount`, m0.`currency`, m0.`adjustment_type`, m0.`description`, m0.`settlement_mis_id`, m0.`status`, m0.`applied_at`, m0.`cancelled_at`, m0.`cancel_reason`, m0.`approval_status`, m0.`level1_reviewed_by`, m0.`level1_reviewed_at`, m0.`level2_approved_by`, m0.`level2_approved_at`, m0.`rejected_by`, m0.`rejected_at`, m0.`rejection_reason`, m0.`created_by`, m0.`updated_by`, m0.`inserted_at`, m0.`updated_at` FROM `merchant_adjustments` AS m0 WHERE (m0.`merchant_mid` = ?) AND (m0.`adjustment_date` = ?) AND (m0.`approval_status` = 'approved') ["419926360000000", ~D[2026-09-01]] ↳ SettlementCore.Workers.MprDispatchWorker.fetch_merchant_adjustment_breakdown/2, at: lib/settlement_core/workers/mpr_dispatch_worker.ex:227 [2026-09-02 10:21:20.685] [DEBUG] QUERY OK db=70.8ms commit [] ↳ SettlementCore.Workers.PayoutTransmissionWorker.perform/1, at: lib/settlement_core/workers/payout_transmission_worker.ex:47 [2026-09-02 10:21:20.685] [DEBUG] QUERY OK source="core_transactions" db=1.0ms queue=0.7ms idle=0.3ms SELECT c0.`id`, c0.`source_type`, c0.`source_ref_id`, c0.`settlement_batch_id`, c0.`rrn`, c0.`tid`, c0.`auth_number`, c0.`stan`, c0.`invoice_number`, c0.`batch_number`, c0.`merchant_mid`, c0.`merchant_id`, c0.`merchant_ref_number`, c0.`transaction_amount`, c0.`transaction_currency`, c0.`transaction_type`, c0.`transaction_datetime`, c0.`masked_pan`, c0.`scheme_name`, c0.`card_holder_name`, c0.`customer_mobile`, c0.`customer_country`, c0.`mcc_code`, c0.`card_type_id`, c0.`card_type_code`, c0.`mdr_template_id`, c0.`mdr_percentage_rate`, c0.`mdr_fixed_fee`, c0.`mdr_minimum_fee`, c0.`mdr_maximum_fee`, c0.`mdr_amount`, c0.`vat_rate`, c0.`vat_amount`, c0.`interchange_fee`, c0.`interchange_template_id`, c0.`gross_amount`, c0.`net_settlement_amount`, c0.`settlement_status`, c0.`switch_settled_date`, c0.`released_for_settlement_date`, c0.`risk_hold`, c0.`risk_rule_name`, c0.`chargeback_hold`, c0.`exception_type`, c0.`refund_status`, c0.`refund_date`, c0.`reversal_status`, c0.`reversal_date`, c0.`store_id`, c0.`dr_cr`, c0.`qr_tag`, c0.`bank_transfer_reference`, c0.`bank_transfer_date`, c0.`spare_fields`, c0.`inserted_at`, c0.`updated_at` FROM `core_transactions` AS c0 WHERE ((c0.`merchant_mid` = ?) AND ((c0.`switch_settled_date` = ?) OR (c0.`released_for_settlement_date` = ?))) ORDER BY c0.`transaction_datetime` ["419926360000000", ~D[2026-09-01], ~D[2026-09-01]] ↳ SettlementCore.Workers.MprDispatchWorker.dispatch_mpr_for_merchant/4, at: lib/settlement_core/workers/mpr_dispatch_worker.ex:163 [2026-09-02 10:21:20.686] [DEBUG] QUERY OK source="settlement_mis_items" db=0.4ms queue=0.4ms idle=0.3ms SELECT count(s0.`id`) FROM `settlement_mis_items` AS s0 WHERE ((s0.`settlement_mis_id` = ?) AND (s0.`mpr_sent` != TRUE)) [328] ↳ SettlementCore.Workers.PayoutTransmissionWorker.enqueue_mpr_if_needed/1, at: lib/settlement_core/workers/payout_transmission_worker.ex:77 [2026-09-02 10:21:20.688] [INFO ] [PayoutTransmissionWorker] MPR enqueue result for mis_id=328: {:ok, %Oban.Job{__meta__: #Ecto.Schema.Metadata<:loaded, "oban_jobs">, id: 39105, state: "executing", queue: "mailers", worker: "SettlementCore.Workers.MprDispatchWorker", args: %{"mis_id" => 328}, meta: %{}, tags: [], errors: [], attempt: 1, attempted_by: ["demo", "012e8cc2-8c91-4f1b-90af-9cc7d990fb43"], max_attempts: 3, priority: 0, attempted_at: ~U[2026-09-02 10:21:20.566004Z], cancelled_at: nil, completed_at: nil, discarded_at: nil, inserted_at: ~U[2026-09-02 10:21:20.491737Z], scheduled_at: ~U[2026-09-02 10:21:20.491737Z], conf: nil, conflict?: true, replace: nil, unique: nil, unsaved_error: nil}} [2026-09-02 10:21:20.694] [DEBUG] QUERY OK source="core_transactions" db=1.6ms idle=6.2ms SELECT c0.`id`, c0.`source_type`, c0.`source_ref_id`, c0.`settlement_batch_id`, c0.`rrn`, c0.`tid`, c0.`auth_number`, c0.`stan`, c0.`invoice_number`, c0.`batch_number`, c0.`merchant_mid`, c0.`merchant_id`, c0.`merchant_ref_number`, c0.`transaction_amount`, c0.`transaction_currency`, c0.`transaction_type`, c0.`transaction_datetime`, c0.`masked_pan`, c0.`scheme_name`, c0.`card_holder_name`, c0.`customer_mobile`, c0.`customer_country`, c0.`mcc_code`, c0.`card_type_id`, c0.`card_type_code`, c0.`mdr_template_id`, c0.`mdr_percentage_rate`, c0.`mdr_fixed_fee`, c0.`mdr_minimum_fee`, c0.`mdr_maximum_fee`, c0.`mdr_amount`, c0.`vat_rate`, c0.`vat_amount`, c0.`interchange_fee`, c0.`interchange_template_id`, c0.`gross_amount`, c0.`net_settlement_amount`, c0.`settlement_status`, c0.`switch_settled_date`, c0.`released_for_settlement_date`, c0.`risk_hold`, c0.`risk_rule_name`, c0.`chargeback_hold`, c0.`exception_type`, c0.`refund_status`, c0.`refund_date`, c0.`reversal_status`, c0.`reversal_date`, c0.`store_id`, c0.`dr_cr`, c0.`qr_tag`, c0.`bank_transfer_reference`, c0.`bank_transfer_date`, c0.`spare_fields`, c0.`inserted_at`, c0.`updated_at` FROM `core_transactions` AS c0 WHERE (DATE(c0.`transaction_datetime`) = ?) AND ((c0.`risk_hold` = TRUE) OR (c0.`settlement_status` = 'exception_hold')) AND (c0.`merchant_mid` = ?) ORDER BY c0.`merchant_mid`, c0.`transaction_datetime` [~D[2026-09-01], "419926360000000"] ↳ SettlementCore.Workers.MprDispatchWorker.dispatch_mpr_for_merchant/4, at: lib/settlement_core/workers/mpr_dispatch_worker.ex:174 [2026-09-02 10:21:20.696] [INFO ] [PayoutTransmitter] Transmitting batch_id=180 method=SFTP [2026-09-02 10:21:20.729] [DEBUG] QUERY OK source="payout_items" db=0.7ms queue=31.6ms idle=9.3ms SELECT p0.`id`, p0.`payout_batch_id`, p0.`settlement_mis_id`, p0.`settlement_date`, p0.`merchant_mid`, p0.`merchant_id`, p0.`merchant_name`, p0.`merchant_ref_number`, p0.`bank_name`, p0.`iban`, p0.`account_number`, p0.`bank_code`, p0.`currency`, p0.`gross_amount`, p0.`total_deductions`, p0.`payout_amount`, p0.`transaction_count`, p0.`net_settlement_amount`, p0.`total_adjustments_credit`, p0.`total_adjustments_debit`, p0.`final_payout_amount`, p0.`total_gross_amount`, p0.`total_mdr_amount`, p0.`total_vat_amount`, p0.`status`, p0.`bank_transfer_ref`, p0.`confirmed_at`, p0.`rejection_reason`, p0.`rejected_at`, p0.`re_initiated_at`, p0.`re_initiated_batch_id`, p0.`inserted_at`, p0.`updated_at` FROM `payout_items` AS p0 WHERE (p0.`payout_batch_id` = ?) ORDER BY p0.`merchant_mid` [180] ↳ SettlementCore.PayoutGenerator.generate_payout_csv/1, at: lib/settlement_core/payout_generator.ex:85 [2026-09-02 10:21:20.744] [DEBUG] QUERY OK source="tid_masters" db=4.6ms queue=4.1ms idle=5.5ms SELECT t0.`mid`, a3.`line1`, a3.`country`, t0.`registered_email` FROM `tid_masters` AS t0 LEFT OUTER JOIN `brands` AS b1 ON b1.`merchant_reference_id` COLLATE utf8mb4_unicode_ci = t0.`merchant_ref_number` COLLATE utf8mb4_unicode_ci LEFT OUTER JOIN `stores` AS s2 ON s2.`brand_id` = b1.`id` LEFT OUTER JOIN `addresses` AS a3 ON a3.`id` = s2.`address_id` WHERE (t0.`mid` IN (?,?,?) OR t0.`merchant_ref_number` IN (?,?,?)) ["419926360000000", "425590250000000", "E2E_M3_TEST001", "419926360000000", "425590250000000", "E2E_M3_TEST001"] ↳ SettlementCore.PayoutGenerator.prefetch_merchant_details/1, at: lib/settlement_core/payout_generator.ex:375 [2026-09-02 10:21:20.743] [DEBUG] QUERY OK source="tid_masters" db=4.0ms queue=4.4ms idle=40.9ms SELECT a3.`line1`, a3.`city` FROM `tid_masters` AS t0 LEFT OUTER JOIN `brands` AS b1 ON b1.`merchant_reference_id` COLLATE utf8mb4_unicode_ci = t0.`merchant_ref_number` COLLATE utf8mb4_unicode_ci LEFT OUTER JOIN `stores` AS s2 ON s2.`brand_id` = b1.`id` LEFT OUTER JOIN `addresses` AS a3 ON a3.`id` = s2.`address_id` WHERE ((t0.`mid` = ?) OR (t0.`merchant_ref_number` = ?)) LIMIT 1 ["419926360000000", "419926360000000"] ↳ SettlementCore.Workers.MprDispatchWorker.fetch_merchant_address_details/1, at: lib/settlement_core/workers/mpr_dispatch_worker.ex:379 [2026-09-02 10:21:20.746] [INFO ] [MprDispatchWorker] Calling SettlementNotifier.send_mpr for MID=419926360000000 [2026-09-02 10:21:20.768] [INFO ] [SettlementNotifier] Sending MPR to sunny@dataaegis.com for MID=419926360000000 [2026-09-02 10:21:20.769] [INFO ] [FileEncryptor] Encrypted /tmp/payout_files_sunny/payout_2026-09-01_180.csv → /tmp/payout_files_sunny/payout_2026-09-01_180.csv.enc key_ref=default_v1 [2026-09-02 10:21:20.780] [INFO ] [Bank.SftpClient] Uploading /tmp/payout_files_sunny/payout_2026-09-01_180.csv.enc → sftp://localhost/incoming/payout_2026-09-01_180.csv.enc [2026-09-02 10:21:20.821] [INFO ] [SettlementNotifier] Email created, now attaching Excel [2026-09-02 10:21:20.914] [INFO ] [MprExcelGenerator] Generating Excel for MID=419926360000000 [2026-09-02 10:21:20.914] [INFO ] [MprExcelGenerator] Processing 2 transaction rows [2026-09-02 10:21:21.065] [DEBUG] client will use strict KEX ordering [2026-09-02 10:21:21.205] [INFO ] [MprExcelGenerator] Excel generated successfully, size: 10121 bytes [2026-09-02 10:21:21.206] [INFO ] [SettlementNotifier] Excel binary type: <<80, 75, 3, 4, 20, 0, 0, 0, 8, 0, 181, 82, 34, 93, 33, 175, 77, 49, 200, 0, 0, 0, 85, 1, 0, 0, 16, 0, 0, 0, ...>> [2026-09-02 10:21:21.206] [INFO ] [SettlementNotifier] Excel binary size: 10121 bytes [2026-09-02 10:21:21.206] [INFO ] [SettlementNotifier] Attaching MPR Excel: MPR_419926360000000_20260901.xlsx [2026-09-02 10:21:21.208] [ERROR] Erlang SSH :client version: 5.1.4.3 (OpenSSL 3.0.13 30 Jan 2024). Address: 127.0.0.1:49546 Peer server version: ~c"SSH-2.0-OpenSSH_9.6p1 Ubuntu-3ubuntu13.18" Peer address: 127.0.0.1:22 badarg [2026-09-02 10:21:21.209] [INFO ] Erlang SSH :client version: 5.1.4.3 (OpenSSL 3.0.13 30 Jan 2024). Address: 127.0.0.1:49546 Peer server version: ~c"SSH-2.0-OpenSSH_9.6p1 Ubuntu-3ubuntu13.18" Peer address: 127.0.0.1:22 Disconnects with code = 11 [RFC4253 11.1]: Internal error State = {userauth,client} Module = ssh_connection_handler, Line = 1424. Details: Reason: badarg [2026-09-02 10:21:21.218] [INFO ] [SettlementNotifier] Attachment created, data field: <<80, 75, 3, 4, 20, 0, 0, 0, 8, 0, 181, 82, 34, 93, 33, 175, 77, 49, 200, 0, 0, 0, 85, 1, 0, 0, 16, 0, 0, 0, 100, 111, 99, 80, 114, 111, 112, 115, 47, 97, 112, 112, 46, 120, 109, 108, 157, 144, 205, 110, ...>> [2026-09-02 10:21:21.218] [INFO ] [SettlementNotifier] Attachment filename: MPR_419926360000000_20260901.xlsx [2026-09-02 10:21:21.219] [INFO ] [SettlementNotifier] Calling deliver after attachment... [2026-09-02 10:21:21.219] [INFO ] [SettlementNotifier] ===== CALLING MAILER.DELIVER ===== [2026-09-02 10:21:21.219] [INFO ] [SettlementNotifier] Email TO: [{"", "sunny@dataaegis.com"}] [2026-09-02 10:21:21.219] [INFO ] [SettlementNotifier] Email FROM: {"", "donotreply@shukria.ae"} [2026-09-02 10:21:21.219] [INFO ] [SettlementNotifier] Email SUBJECT: Merchant Payment Report — Kalyan Mart — 2026-09-01 [2026-09-02 10:21:21.267] [INFO ] [AzureCommunicationServices] ===== STARTING EMAIL DELIVERY ===== [2026-09-02 10:21:21.267] [INFO ] [AzureCommunicationServices] Email recipients: [{"", "sunny@dataaegis.com"}] [2026-09-02 10:21:21.267] [INFO ] [AzureCommunicationServices] Email subject: Merchant Payment Report — Kalyan Mart — 2026-09-01 [2026-09-02 10:21:21.268] [INFO ] [AzureCommunicationServices] Config values: [2026-09-02 10:21:21.268] [INFO ] - sender: donotreply@shukria.ae [2026-09-02 10:21:21.268] [INFO ] - endpoint: https://shukria-commserv-merchants.uae.communication.azure.com [2026-09-02 10:21:21.268] [INFO ] - api_version: 2025-09-01 [2026-09-02 10:21:21.268] [INFO ] [AzureCommunicationServices] Request URL: https://shukria-commserv-merchants.uae.communication.azure.com/emails:send?api-version=2025-09-01 [2026-09-02 10:21:21.269] [INFO ] [AzureCommunicationServices] Host extracted: shukria-commserv-merchants.uae.communication.azure.com [2026-09-02 10:21:21.269] [INFO ] [AzureCommunicationServices] Path and query: /emails:send?api-version=2025-09-01 [2026-09-02 10:21:21.269] [INFO ] [AzureCommunicationServices] ===== PREPARE_BODY STARTING ===== [2026-09-02 10:21:21.269] [INFO ] [AzureCommunicationServices] email.attachments count: 1 [2026-09-02 10:21:21.269] [INFO ] [AzureCommunicationServices] First attachment is %Swoosh.Attachment{}: true [2026-09-02 10:21:21.269] [INFO ] [AzureCommunicationServices] First attachment data type: <<80, 75, 3, 4, 20, 0, 0, 0, 8, 0, 181, 82, 34, 93, 33, 175, 77, 49, 200, 0, 0, 0, 85, 1, 0, 0, 16, 0, 0, 0, 100, 111, 99, 80, 114, 111, 112, 115, 47, 97, 112, 112, 46, 120, 109, 108, 157, 144, 205, 110, ...>> [2026-09-02 10:21:21.269] [INFO ] [AzureCommunicationServices] First attachment filename: MPR_419926360000000_20260901.xlsx [2026-09-02 10:21:21.269] [INFO ] [AzureCommunicationServices] Processing attachment: MPR_419926360000000_20260901.xlsx [2026-09-02 10:21:21.269] [INFO ] [AzureCommunicationServices] Attachment data type: <<80, 75, 3, 4, 20, 0, 0, 0, 8, 0, 181, 82, 34, 93, 33, 175, 77, 49, 200, 0, 0, 0, 85, 1, 0, 0, 16, 0, 0, 0, 100, 111, 99, 80, 114, 111, 112, 115, 47, 97, 112, 112, 46, 120, 109, 108, 157, 144, 205, 110, ...>> [2026-09-02 10:21:21.269] [INFO ] [AzureCommunicationServices] Direct binary size: 10121 bytes [2026-09-02 10:21:21.269] [INFO ] [AzureCommunicationServices] Base64 encoded size: 13496 chars [2026-09-02 10:21:21.273] [INFO ] [AzureCommunicationServices] Attachment struct created: %{"contentInBase64" => "UEsDBBQAAAAIALVSIl0hr00xyAAAAFUBAAAQAAAAZG9jUHJvcHMvYXBwLnhtbJ2QzW4CIRSF9/MUhL0DdWGMYTAmtWsXo3sCd5QEuARuzfj2Ym1r112en3w5OWo7x8CuUKrHNPC3XnIGyaLz6Tzw4/ixWHNWySRnAiYY+A0q3+pOHQpmKOShskZIdeAXorwRotoLRFP7FqeWTFiioSbLWeA0eQvvaD8jJBJLKVcCZoLkwC3yL5A/iZsr/Rfq0D721dN4y42nO8bUiGTC6CNoqcRLPKJdzsFbQ+0CvQ9+DnVW4q/5XTo9b9KyX8mvwo/RKfH6Q3d3UEsDBBQAAAAIALVSIl2+OB2wLgEAAFoCAAARAAAAZG9jUHJvcHMvY29yZS54bWylksFuwyAMhu95CsQ9AVKp2lCSHjb1tEmT2mrTboi4KVogCGjTvv1I1qbd1NskLub//dkYF4ujbtEBnFedKTHLKEZgZFcr05R4s16mDxj5IEwt2s5AiU/g8aJKCmm57By8uc6CCwo8iiDjubQl3oVgOSFe7kALn0WHieK2c1qEGLqGWCG/RAMkp3RONARRiyDIAEztRMRnZC0npN27dgTUkkALGkzwhGWMXL0BnPZ3E0blxqlVOFm4a72Ik/vo1WTs+z7rZ6M19s/Ix+vLanxqqswwKgm4ShAqzr1w6UAEqFFk8J+KF+V99vS8XuIqp/k8pY8pzdeM8pzF81mQP/lnJm+FafZxeBWYdLMabNer27I6fuJW/aPuBTBS4387OKhhTSpWkNswGcPf21Al31BLAwQUAAAACAC1UiJdywfB3d4AAAA/AgAACwAAAF9yZWxzLy5yZWxzrZLPTsMwDIfve4rI99XdkBBCy3ZBSLshNB7AJG4btYmjJEB5eyIO/JnYtAPHJD9//mxls5v9pF45ZSdBw6ppQXEwYl3oNTwd7pc3sNsuNo88UamRPLiYVa0JWcNQSrxFzGZgT7mRyKG+dJI8lXpMPUYyI/WM67a9xvSTAUdQtbca0t6uQB3eI18Cl65zhu/EvHgO5Y8eR4lKptRz0TBP+CZpfBYZmwoFPCGzvlzm9KTouZClQmgk8TKmWp2K4/ztY8U81Ov8mThrdPWf6+G5cLBszztRjF9K+OsfbBcfUEsDBBQAAAAIALVSIl3uhcwjqAIAAKsPAAANAAAAeGwvc3R5bGVzLnhtbM1XTW+jMBC98yss97pbIGmzyQqoqlaR9txW2qsDhiAZG9lum/TX7xgDJQorkRCqpofY8/lm/MZxg7tdwdAblSoXPMT+tYcR5bFIcp6F+OV5/XOJkdKEJ4QJTkO8pwrfRU6g9J7Rpy2lGkEErkK81br87boq3tKCqGtRUg6aVMiCaNjKzFWlpCRRxqlg7szzFm5Bco4jB6GAvxbrQisUi1euAQmOahGyX38SEC5uMLIRH0QCaK5+XF151x6AdgGTW8eo4qWCd6LdVklqsTFuN1GgPtAbYSFeYjcK3ErmjFJtrMY3mi8za1Srk1R9wc83a1S+d5quL/xgu2oXCyYkktkmxOu1v57fr+aGE40/nHW1qqmRM9ZSY94yA6RRUBKtqeRr2KB6/bwvgWoc6G8RGbtBLpkke392e6KXEixPgP1p9tAt6nFl/mxRHd9OaLuyJW6ETGCoj4q08nYA6m2Sk0xwwl7KEKeEKYpb0aN4542wisxoqlE1/SHWWzO9h833qo/FaWyjQObZdrBLZRwFWpRDPcAUmCG0FsVQF2sdBU2RIGqXjlGbrkSOc25/Dks/qOoQ8AlYzPnWp1rliSljT6bcv2n30rTnukuRtTW3JhT9eYXCxrCkWcJM1EtSlmx/z/KMF7QbC6KRRoreJSmf6U7bGbS53F1q2ddF1ELsoluMgLdL7cLtCzHDNdSOcyupY/g3raibrpE18f/Th04PtkLmHxDUXD4xCKisf31MH5wzgM0nAGboNxLWbAJY1RyMxOV/y3Ytx6DqT+sfpZ0dpb0UqbuD3ctweCLqPB7C+WPYx92aglv2DC+LcwquTdPRvkvEPJcvMq+XhXr7FaNynHYxZYdG3Wje5RsyJO/qW16kvyY5pvG4+rp1eVzNO6p6QgXu53/ZkfMPUEsDBBQAAAAIALVSIl2eIbUDJAQAAG0VAAAUAAAAeGwvc2hhcmVkU3RyaW5ncy54bWylWG1v2kgQ/n6/YmSpUq5KwZA2CShJz4DTouMltZ1K+RQt9gJ7sb2+fYmO+/U3xiQQ9VTNUkt8wMwzbzsz+wxXn/8pcnjmSgtZXnudlu8BL1OZiXJ17d0ntx8uPdCGlRnLZcmvvQ3X3ueb3660NoDQUl97a2Oqfrut0zUvmG7Jipf4y1Kqghn8qlZtXSnOMr3m3BR5u+v75+2CidKDVNrSXHu9nge2FH9bPnx9UdsQN1dbK31dsRSNoxrN1TP3bq7aBj+1wE+EpmE0vI8e4C54mIazJIY4jL6Ph2EMk8mQrOFrMEteVEAU3s2jhIQdMcNJgn2SlN9p+z3MXfec5jlX6ZqVBgasfIIRN0zkmoT8oqStYDxyM0OU/9jp9brnZ+d+85Aw2whmrKBl80+Wb1gJi/LJLQBXA1OmDEl+PAhmJMGLy95F7/KHxy2MIMvwJe2k58ulSDl0/bNTDCfnTzCwIq9bH7qnEOTwzcp/YVxmVhslWA4BtjGg8MgumHDzK4loSdhld8ZWTJEAMTcm5wVHG7sqh/kSnc8hUazULDU42TQEacorwzOYlxCv7RPGQ1J/oATqjgYchZAIYq0cOBcbZiztXA5Dog6R2EjFqV2YuHZ3wlbO2Uo2FdH1+uLg9AYcMpXBzBYLTquQrTzZm630nZKZTQ0dNRjTynvATLp2cT4i9k1gzRqGMqO5e3hOQVHfubR6GEVwyzm8c5F2doiMkQZnEkrTuup7kJx8eve7m2o4EWWa2+1MRAU09IwbuGMbtsiJxSPyvDYwLp9lPZAdyuOrRB7mID9XYiVKjA3rygV3huzjcss+wO/1fb9PvLubUZa5MBwavwm7IU6xmkOc0RwJJiGtaoM4QdYXRERC837/dPCh2Rg+DqNwNE4e44RmBsPdUSZivEHPRbrTuvhEa+q3hdAhF8L+vD7SunUcB2TBx1E4OC6ZNGdekkmT7rZ8n5bML1EwG0EyT4IJrXvNmiv6xHOY7DU7aRgHdfriNHTXDCdj93Ea8aUtt3dyisy2hlJ9/F/kUT4M10yt+IKlT2TjbyFHWZ1bs929a1BsFzpVonq5IokU/ycajnKpuRn3hXiUkhGv2dWWl5+IJVLqDQ03kbgaRDyVz1xtiPdjngHuEqLEe3J/IkQvF6JeqP7C9acuYBLoVnC0CLR7YCfcdcj8PnW0IlQ8exOEW8Ibmz8oIa4x99NpED24GKrnVb2+7WjDmxWOZtMWBVMbkL+go/GlGZ61ImcFExw20IcDEnlEj+yUvHbaryg5qnSCLHuFHlkBDfiADrssGzNpuKb9N/a+Xvcb1RoY7sEC15qQRgZupar7AadjVUmFB67gm+VKcH0KdzlnmoPiDJc2aQ0YCRYtGOAFE3kfdANq6eYfhT8KXJit2nyo2KaVymLvQFtrc/MfUEsDBBQAAAAIALVSIl1nqEOIKgEAAOwBAAAPAAAAeGwvd29ya2Jvb2sueG1sjZFNbwIhEIbv/grCvYIemsa4mkZjYlJb01ivzSw7uEQ+NoDa/vvO7qbbHr3BvPDwzDBffjnLrhiTCb7gk7HkDL0KlfGngn8cNg9PnKUMvgIbPBb8GxNfLkbzW4jnMoQzo/s+FbzOuZkJkVSNDtI4NOgp0SE6yLSNJ5GaiFClGjE7K6ZSPgoHxvOeMIv3MILWRuE6qItDn3tIRAuZ7FNtmsRJTRuLx74jBk3zCo68V2AVF5S20keDt7QYMTa00VYYqGyueICy4LI7K/4dnnfmw4L5Drvbv39u6D0aUlvdVjTDbmCZwqtJpmyzODMUxG017bEDSpHVPjJ9sbYVfPMvAXqEyRgJsgoXn6kg6V8i6l2oiPv8lxdcg0047NdoM5D+WMpJ/9Zvh4vRD1BLAwQUAAAACAC1UiJdACI+d9kAAAAsAgAAGgAAAHhsL19yZWxz" <> ..., "contentType" => "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "name" => "MPR_419926360000000_20260901.xlsx"} [2026-09-02 10:21:21.273] [INFO ] [AzureCommunicationServices] Final JSON body size: 19265 bytes [2026-09-02 10:21:21.273] [INFO ] [AzureCommunicationServices] JSON first 500 chars: {"attachments":[{"contentInBase64":"UEsDBBQAAAAIALVSIl0hr00xyAAAAFUBAAAQAAAAZG9jUHJvcHMvYXBwLnhtbJ2QzW4CIRSF9/MUhL0DdWGMYTAmtWsXo3sCd5QEuARuzfj2Ym1r112en3w5OWo7x8CuUKrHNPC3XnIGyaLz6Tzw4/ixWHNWySRnAiYY+A0q3+pOHQpmKOShskZIdeAXorwRotoLRFP7FqeWTFiioSbLWeA0eQvvaD8jJBJLKVcCZoLkwC3yL5A/iZsr/Rfq0D721dN4y42nO8bUiGTC6CNoqcRLPKJdzsFbQ+0CvQ9+DnVW4q/5XTo9b9KyX8mvwo/RKfH6Q3d3UEsDBBQAAAAIALVSIl2+OB2wLgEAAFoCAAARAAAAZG9jUHJvcHMvY29yZS54bWylksFuwyAMhu95CsQ9AVKp2lCSHjb1tEmT2mrTboi4KVogCGjTvv1I1qbd1NskLub//dkYF4uj [2026-09-02 10:21:21.274] [INFO ] [AzureCommunicationServices] ✅ First attachment contentInBase64 present: 13496 chars (non-empty: true) [2026-09-02 10:21:21.274] [INFO ] [AzureCommunicationServices] Content SHA256: IGclhwY1SgFmclc7NH9D... [2026-09-02 10:21:21.274] [INFO ] [KeyVault] Requesting new Azure AD access token [2026-09-02 10:21:21.220] [ERROR] GenStateMachine #PID<0.2006.0> terminating ** (ArgumentError) errors were found at the given arguments: * 1st argument: not valid character data (an iodata term) (stdlib 5.2.3.2) unicode.erl:895: :unicode.characters_to_binary({:error, :enotsup}) (ssh 5.1.4.3) ssh_auth.erl:121: :ssh_auth.password_msg/1 (ssh 5.1.4.3) ssh_auth.erl:59: :ssh_auth.userauth_request_msg/1 (ssh 5.1.4.3) ssh_fsm_userauth_client.erl:92: :ssh_fsm_userauth_client.handle_event/4 (stdlib 5.2.3.2) gen_statem.erl:1397: :gen_statem.loop_state_callback/11 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 State: [data: [{~c"State", {:data, #PID<0.2001.0>, ~c"payout", {:connection, [], #Reference<0.2372382238.861011972.226025>, 0, :undefined, %{pref_public_key_algs: [:"ssh-ed25519", :"ssh-ed448", :"ecdsa-sha2-nistp521", :"ecdsa-sha2-nistp384", :"ecdsa-sha2-nistp256", :"rsa-sha2-512", :"rsa-sha2-256"], send_ext_info: true, user_interaction: true, key_cb_options: [silently_accept_hosts: true, user: ~c"payout", connect_timeout: 30000], save_accepted_host: true, user_dir_fun: :undefined, disconnectfun: #Function<45.126434157/1 in :ssh_options.default/1>, dh_gex_limits: {1024, 6144, 8192}, vsn: {2, 0}, tstflg: [], ecdsa_pass_phrase: :"***", modify_algorithms: :undefined, password: :"***", user_dir: false, dsa_pass_phrase: :"***", silently_accept_hosts: true, rekey_limit: {3600000, 1024000000}, unexpectedfun: #Function<47.126434157/2 in :ssh_options.default/1>, auth_methods: ~c"publickey,keyboard-interactive,password", id_string: ~c"Erlang/5.1.4.3", rsa_pass_phrase: :"***", key_cb: {:ssh_file, []}, max_random_length_padding: 15, transport: {:tcp, :gen_tcp, :tcp_closed}, user: ~c"payout", connect_timeout: 30000, recv_ext_info: true, ssh_msg_debug_fun: #Function<49.126434157/4 in :ssh_options.default/1>, quiet_mode: false, internal_options: %{connection_sup: #PID<0.2005.0>, negotiation_timeout: 30000, user_pid: #PID<0.2001.0>}, max_log_item_len: 500, profile: :default, preferred_algorithms: [kex: [:"curve25519-sha256", :"curve25519-sha256@libssh.org", ...], public_key: [:"ssh-ed25519", ...], cipher: [...], ...], socket_options: [], idle_time: :infinity, keyboard_interact_fun: :undefined}, 425984, 65536, :undefined, #PID<0.2005.0>}, 0, :tcp, :gen_tcp, :tcp_closed, {:ssh, :client, {~c"127.0.0.1", {{127, 0, 0, 1}, 22}}, {{127, 0, 0, 1}, 49546}, {2, 0}, {2, 0}, ~c"SSH-2.0-Erlang/5.1.4.3", ~c"SSH-2.0-OpenSSH_9.6p1 Ubuntu-3ubuntu13.18", :"****", :"****", true, true, true, {:alg, :"curve25519-sha256", :"ssh-ed25519", :AEAD_AES_256_GCM, :AEAD_AES_256_GCM, :AEAD_AES_256_GCM, :AEAD_AES_256_GCM, :none, :none, :none, :none, true, true, true}, :AEAD_AES_256_GCM, :"****", :"****", :AEAD_AES_256_GCM, :"****", :"****", :AEAD_AES_256_GCM, :aes_256_gcm, :"****", 16, :"****", :AEAD_AES_256_GCM, :aes_256_gcm, :"****", 16, :"****", :none, :"****", :none, :"****", :none, :none, true, ...}, #Port<0.37>, :"****", :"****", "", :undefined, :"****", 0, [], :"****"}}]] Callback mode: :handle_event_function Postponed events: [] Last event: {:internal, {:ssh_msg_userauth_failure, ~c"publickey,password", false}} Queued events: [] State: [data: [{~c"State", {:data, #PID<0.2001.0>, ~c"payout", {:connection, [], #Reference<0.2372382238.861011972.226025>, 0, :undefined, %{pref_public_key_algs: [:"ssh-ed25519", :"ssh-ed448", :"ecdsa-sha2-nistp521", :"ecdsa-sha2-nistp384", :"ecdsa-sha2-nistp256", :"rsa-sha2-512", :"rsa-sha2-256"], send_ext_info: true, user_interaction: true, key_cb_options: [silently_accept_hosts: true, user: ~c"payout", connect_timeout: 30000], save_accepted_host: true, user_dir_fun: :undefined, disconnectfun: #Function<45.126434157/1 in :ssh_options.default/1>, dh_gex_limits: {1024, 6144, 8192}, vsn: {2, 0}, tstflg: [], ecdsa_pass_phrase: :"***", modify_algorithms: :undefined, password: :"***", user_dir: false, dsa_pass_phrase: :"***", silently_accept_hosts: true, rekey_limit: {3600000, 1024000000}, unexpectedfun: #Function<47.126434157/2 in :ssh_options.default/1>, auth_methods: ~c"publickey,keyboard-interactive,password", id_string: ~c"Erlang/5.1.4.3", rsa_pass_phrase: :"***", key_cb: {:ssh_file, []}, max_random_length_padding: 15, transport: {:tcp, :gen_tcp, :tcp_closed}, user: ~c"payout", connect_timeout: 30000, recv_ext_info: true, ssh_msg_debug_fun: #Function<49.126434157/4 in :ssh_options.default/1>, quiet_mode: false, internal_options: %{connection_sup: #PID<0.2005.0>, negotiation_timeout: 30000, user_pid: #PID<0.2001.0>}, max_log_item_len: 500, profile: :default, preferred_algorithms: [kex: [:"curve25519-sha256", :"curve25519-sha256@libssh.org", ...], public_key: [:"ssh-ed25519", ...], cipher: [...], ...], socket_options: [], idle_time: :infinity, keyboard_interact_fun: :undefined}, 425984, 65536, :undefined, #PID<0.2005.0>}, 0, :tcp, :gen_tcp, :tcp_closed, {:ssh, :client, {~c"127.0.0.1", {{127, 0, 0, 1}, 22}}, {{127, 0, 0, 1}, 49546}, {2, 0}, {2, 0}, ~c"SSH-2.0-Erlang/5.1.4.3", ~c"SSH-2.0-OpenSSH_9.6p1 Ubuntu-3ubuntu13.18", :"****", :"****", true, true, true, {:alg, :"curve25519-sha256", :"ssh-ed25519", :AEAD_AES_256_GCM, :AEAD_AES_256_GCM, :AEAD_AES_256_GCM, :AEAD_AES_256_GCM, :none, :none, :none, :none, true, true, true}, :AEAD_AES_256_GCM, :"****", :"****", :AEAD_AES_256_GCM, :"****", :"****", :AEAD_AES_256_GCM, :aes_256_gcm, :"****", 16, :"****", :AEAD_AES_256_GCM, :aes_256_gcm, :"****", 16, :"****", :none, :"****", :none, :"****", :none, :none, true, ...}, #Port<0.37>, :"****", :"****", "", :undefined, :"****", 0, [], :"****"}}]] [2026-09-02 10:21:21.280] [ERROR] [Bank.SftpClient] Upload failed: {:badarg, [{:unicode, :characters_to_binary, [error: :enotsup], [file: ~c"unicode.erl", line: 895, error_info: %{module: :erl_stdlib_errors}]}, {:ssh_auth, :password_msg, 1, [file: ~c"ssh_auth.erl", line: 121]}, {:ssh_auth, :userauth_request_msg, 1, [file: ~c"ssh_auth.erl", line: 59]}, {:ssh_fsm_userauth_client, :handle_event, 4, [file: ~c"ssh_fsm_userauth_client.erl", line: 92]}, {:gen_statem, :loop_state_callback, 11, [file: ~c"gen_statem.erl", line: 1397]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 241]}]} [2026-09-02 10:21:21.281] [ERROR] [PayoutTransmitter] Transmission failed batch_id=180: {:badarg, [{:unicode, :characters_to_binary, [error: :enotsup], [file: ~c"unicode.erl", line: 895, error_info: %{module: :erl_stdlib_errors}]}, {:ssh_auth, :password_msg, 1, [file: ~c"ssh_auth.erl", line: 121]}, {:ssh_auth, :userauth_request_msg, 1, [file: ~c"ssh_auth.erl", line: 59]}, {:ssh_fsm_userauth_client, :handle_event, 4, [file: ~c"ssh_fsm_userauth_client.erl", line: 92]}, {:gen_statem, :loop_state_callback, 11, [file: ~c"gen_statem.erl", line: 1397]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 241]}]} [2026-09-02 10:21:21.283] [DEBUG] QUERY ERROR source="payout_batches" db=0.6ms queue=0.7ms idle=537.7ms UPDATE `payout_batches` SET `status` = ?, `failure_reason` = ?, `updated_at` = ? WHERE `id` = ? ["failed", "{:badarg, [{:unicode, :characters_to_binary, [error: :enotsup], [file: ~c\"unicode.erl\", line: 895, error_info: %{module: :erl_stdlib_errors}]}, {:ssh_auth, :password_msg, 1, [file: ~c\"ssh_auth.erl\", line: 121]}, {:ssh_auth, :userauth_request_msg, 1, [file: ~c\"ssh_auth.erl\", line: 59]}, {:ssh_fsm_userauth_client, :handle_event, 4, [file: ~c\"ssh_fsm_userauth_client.erl\", line: 92]}, {:gen_statem, :loop_state_callback, 11, [file: ~c\"gen_statem.erl\", line: 1397]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c\"proc_lib.erl\", line: 241]}]}", ~N[2026-09-02 10:21:21], 180] ↳ anonymous fn/2 in SettlementCore.Bank.PayoutTransmitter.transmit/1, at: lib/settlement_core/bank/payout_transmitter.ex:48 [2026-09-02 10:21:21.748] [INFO ] [KeyVault] Azure AD access token acquired, expires in 3599s [2026-09-02 10:21:22.799] [INFO ] [KeyVault] ACS secret cache refreshed from Key Vault (TTL 1800s) [2026-09-02 10:21:22.799] [INFO ] [AzureCommunicationServices] Signature (first 20 chars): t2FKn3qykyN3AUa49cjf... [2026-09-02 10:21:22.800] [INFO ] [AzureCommunicationServices] Auth: HMAC-SHA256 signature authentication [2026-09-02 10:21:22.800] [INFO ] [AzureCommunicationServices] Headers: Authorization, x-ms-date, host, x-ms-content-sha256 [2026-09-02 10:21:22.800] [DEBUG] [AzureCommunicationServices] Request body prepared [2026-09-02 10:21:22.800] [INFO ] [AzureCommunicationServices] Sending HTTP request to Azure... [2026-09-02 10:21:22.800] [DEBUG] [AzureCommunicationServices] Building HTTP request... [2026-09-02 10:21:22.800] [DEBUG] [AzureCommunicationServices] Executing HTTP request via Finch... [2026-09-02 10:21:24.194] [INFO ] [AzureCommunicationServices] HTTP Response: 202 (Success) [2026-09-02 10:21:24.194] [INFO ] [AzureCommunicationServices] Response body: {"id":"df9bd90e-bfaa-4b4d-b5ca-e69735f66d42","status":"Running","error":null} [2026-09-02 10:21:24.195] [INFO ] [AzureCommunicationServices] Parsed response: %{"error" => nil, "id" => "df9bd90e-bfaa-4b4d-b5ca-e69735f66d42", "status" => "Running"} [2026-09-02 10:21:24.195] [INFO ] [AzureCommunicationServices] ✅ Email sent successfully to [{"", "sunny@dataaegis.com"}] [2026-09-02 10:21:24.195] [INFO ] [SettlementNotifier] ===== MAILER.DELIVER RESULT ===== [2026-09-02 10:21:24.195] [INFO ] [SettlementNotifier] Result: {:ok, %{id: "df9bd90e-bfaa-4b4d-b5ca-e69735f66d42", status: 202}} [2026-09-02 10:21:24.195] [INFO ] [SettlementNotifier] ✅ Email delivery SUCCESS [2026-09-02 10:21:24.195] [INFO ] [MprDispatchWorker] SettlementNotifier result for MID=419926360000000: {:ok, %{id: "df9bd90e-bfaa-4b4d-b5ca-e69735f66d42", status: 202}} [2026-09-02 10:21:24.219] [DEBUG] QUERY OK source="settlement_mis_items" db=22.4ms queue=1.0ms idle=1283.0ms UPDATE `settlement_mis_items` AS s0 SET s0.`mpr_sent` = ? WHERE (s0.`id` IN (?,?)) [true, 436, 437] ↳ SettlementCore.Workers.MprDispatchWorker.dispatch_mpr_for_merchant/4, at: lib/settlement_core/workers/mpr_dispatch_worker.ex:210 [2026-09-02 10:21:24.220] [DEBUG] QUERY OK source="tid_masters" db=0.9ms idle=302.6ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` = ?) ["425590250000000"] ↳ SettlementCore.Workers.MprDispatchWorker.dispatch_mpr_for_merchant/4, at: lib/settlement_core/workers/mpr_dispatch_worker.ex:101 [2026-09-02 10:21:24.261] [DEBUG] QUERY OK source="merchant_adjustments" db=40.2ms idle=1.5ms SELECT m0.`id`, m0.`merchant_mid`, m0.`merchant_name`, m0.`adjustment_date`, m0.`debit_credit`, m0.`amount`, m0.`currency`, m0.`adjustment_type`, m0.`description`, m0.`settlement_mis_id`, m0.`status`, m0.`applied_at`, m0.`cancelled_at`, m0.`cancel_reason`, m0.`approval_status`, m0.`level1_reviewed_by`, m0.`level1_reviewed_at`, m0.`level2_approved_by`, m0.`level2_approved_at`, m0.`rejected_by`, m0.`rejected_at`, m0.`rejection_reason`, m0.`created_by`, m0.`updated_by`, m0.`inserted_at`, m0.`updated_at` FROM `merchant_adjustments` AS m0 WHERE (m0.`merchant_mid` = ?) AND (m0.`adjustment_date` = ?) AND (m0.`approval_status` = 'approved') ["425590250000000", ~D[2026-09-01]] ↳ SettlementCore.Workers.MprDispatchWorker.fetch_merchant_adjustment_breakdown/2, at: lib/settlement_core/workers/mpr_dispatch_worker.ex:227 [2026-09-02 10:21:24.263] [DEBUG] QUERY OK source="core_transactions" db=1.7ms idle=40.9ms SELECT c0.`id`, c0.`source_type`, c0.`source_ref_id`, c0.`settlement_batch_id`, c0.`rrn`, c0.`tid`, c0.`auth_number`, c0.`stan`, c0.`invoice_number`, c0.`batch_number`, c0.`merchant_mid`, c0.`merchant_id`, c0.`merchant_ref_number`, c0.`transaction_amount`, c0.`transaction_currency`, c0.`transaction_type`, c0.`transaction_datetime`, c0.`masked_pan`, c0.`scheme_name`, c0.`card_holder_name`, c0.`customer_mobile`, c0.`customer_country`, c0.`mcc_code`, c0.`card_type_id`, c0.`card_type_code`, c0.`mdr_template_id`, c0.`mdr_percentage_rate`, c0.`mdr_fixed_fee`, c0.`mdr_minimum_fee`, c0.`mdr_maximum_fee`, c0.`mdr_amount`, c0.`vat_rate`, c0.`vat_amount`, c0.`interchange_fee`, c0.`interchange_template_id`, c0.`gross_amount`, c0.`net_settlement_amount`, c0.`settlement_status`, c0.`switch_settled_date`, c0.`released_for_settlement_date`, c0.`risk_hold`, c0.`risk_rule_name`, c0.`chargeback_hold`, c0.`exception_type`, c0.`refund_status`, c0.`refund_date`, c0.`reversal_status`, c0.`reversal_date`, c0.`store_id`, c0.`dr_cr`, c0.`qr_tag`, c0.`bank_transfer_reference`, c0.`bank_transfer_date`, c0.`spare_fields`, c0.`inserted_at`, c0.`updated_at` FROM `core_transactions` AS c0 WHERE ((c0.`merchant_mid` = ?) AND ((c0.`switch_settled_date` = ?) OR (c0.`released_for_settlement_date` = ?))) ORDER BY c0.`transaction_datetime` ["425590250000000", ~D[2026-09-01], ~D[2026-09-01]] ↳ SettlementCore.Workers.MprDispatchWorker.dispatch_mpr_for_merchant/4, at: lib/settlement_core/workers/mpr_dispatch_worker.ex:163 [2026-09-02 10:21:24.264] [DEBUG] QUERY OK source="core_transactions" db=0.5ms idle=2.4ms SELECT c0.`id`, c0.`source_type`, c0.`source_ref_id`, c0.`settlement_batch_id`, c0.`rrn`, c0.`tid`, c0.`auth_number`, c0.`stan`, c0.`invoice_number`, c0.`batch_number`, c0.`merchant_mid`, c0.`merchant_id`, c0.`merchant_ref_number`, c0.`transaction_amount`, c0.`transaction_currency`, c0.`transaction_type`, c0.`transaction_datetime`, c0.`masked_pan`, c0.`scheme_name`, c0.`card_holder_name`, c0.`customer_mobile`, c0.`customer_country`, c0.`mcc_code`, c0.`card_type_id`, c0.`card_type_code`, c0.`mdr_template_id`, c0.`mdr_percentage_rate`, c0.`mdr_fixed_fee`, c0.`mdr_minimum_fee`, c0.`mdr_maximum_fee`, c0.`mdr_amount`, c0.`vat_rate`, c0.`vat_amount`, c0.`interchange_fee`, c0.`interchange_template_id`, c0.`gross_amount`, c0.`net_settlement_amount`, c0.`settlement_status`, c0.`switch_settled_date`, c0.`released_for_settlement_date`, c0.`risk_hold`, c0.`risk_rule_name`, c0.`chargeback_hold`, c0.`exception_type`, c0.`refund_status`, c0.`refund_date`, c0.`reversal_status`, c0.`reversal_date`, c0.`store_id`, c0.`dr_cr`, c0.`qr_tag`, c0.`bank_transfer_reference`, c0.`bank_transfer_date`, c0.`spare_fields`, c0.`inserted_at`, c0.`updated_at` FROM `core_transactions` AS c0 WHERE (DATE(c0.`transaction_datetime`) = ?) AND ((c0.`risk_hold` = TRUE) OR (c0.`settlement_status` = 'exception_hold')) AND (c0.`merchant_mid` = ?) ORDER BY c0.`merchant_mid`, c0.`transaction_datetime` [~D[2026-09-01], "425590250000000"] ↳ SettlementCore.Workers.MprDispatchWorker.dispatch_mpr_for_merchant/4, at: lib/settlement_core/workers/mpr_dispatch_worker.ex:174 [2026-09-02 10:21:24.265] [DEBUG] QUERY OK source="tid_masters" db=1.2ms idle=1.0ms SELECT a3.`line1`, a3.`city` FROM `tid_masters` AS t0 LEFT OUTER JOIN `brands` AS b1 ON b1.`merchant_reference_id` COLLATE utf8mb4_unicode_ci = t0.`merchant_ref_number` COLLATE utf8mb4_unicode_ci LEFT OUTER JOIN `stores` AS s2 ON s2.`brand_id` = b1.`id` LEFT OUTER JOIN `addresses` AS a3 ON a3.`id` = s2.`address_id` WHERE ((t0.`mid` = ?) OR (t0.`merchant_ref_number` = ?)) LIMIT 1 ["425590250000000", "425590250000000"] ↳ SettlementCore.Workers.MprDispatchWorker.fetch_merchant_address_details/1, at: lib/settlement_core/workers/mpr_dispatch_worker.ex:379 [2026-09-02 10:21:24.265] [INFO ] [MprDispatchWorker] Calling SettlementNotifier.send_mpr for MID=425590250000000 [2026-09-02 10:21:24.265] [INFO ] [SettlementNotifier] Sending MPR to sunny@dataaegis.com for MID=425590250000000 [2026-09-02 10:21:24.266] [INFO ] [SettlementNotifier] Email created, now attaching Excel [2026-09-02 10:21:24.266] [INFO ] [MprExcelGenerator] Generating Excel for MID=425590250000000 [2026-09-02 10:21:24.266] [INFO ] [MprExcelGenerator] Processing 1 transaction rows [2026-09-02 10:21:24.274] [INFO ] [MprExcelGenerator] Excel generated successfully, size: 9931 bytes [2026-09-02 10:21:24.275] [INFO ] [SettlementNotifier] Excel binary type: <<80, 75, 3, 4, 20, 0, 0, 0, 8, 0, 184, 82, 34, 93, 33, 175, 77, 49, 200, 0, 0, 0, 85, 1, 0, 0, 16, 0, 0, 0, ...>> [2026-09-02 10:21:24.275] [INFO ] [SettlementNotifier] Excel binary size: 9931 bytes [2026-09-02 10:21:24.275] [INFO ] [SettlementNotifier] Attaching MPR Excel: MPR_425590250000000_20260901.xlsx [2026-09-02 10:21:24.275] [INFO ] [SettlementNotifier] Attachment created, data field: <<80, 75, 3, 4, 20, 0, 0, 0, 8, 0, 184, 82, 34, 93, 33, 175, 77, 49, 200, 0, 0, 0, 85, 1, 0, 0, 16, 0, 0, 0, 100, 111, 99, 80, 114, 111, 112, 115, 47, 97, 112, 112, 46, 120, 109, 108, 157, 144, 205, 110, ...>> [2026-09-02 10:21:24.275] [INFO ] [SettlementNotifier] Attachment filename: MPR_425590250000000_20260901.xlsx [2026-09-02 10:21:24.276] [INFO ] [SettlementNotifier] Calling deliver after attachment... [2026-09-02 10:21:24.276] [INFO ] [SettlementNotifier] ===== CALLING MAILER.DELIVER ===== [2026-09-02 10:21:24.276] [INFO ] [SettlementNotifier] Email TO: [{"", "sunny@dataaegis.com"}] [2026-09-02 10:21:24.276] [INFO ] [SettlementNotifier] Email FROM: {"", "donotreply@shukria.ae"} [2026-09-02 10:21:24.276] [INFO ] [SettlementNotifier] Email SUBJECT: Merchant Payment Report — Golden Sands Retail LLC — 2026-09-01 [2026-09-02 10:21:24.276] [INFO ] [AzureCommunicationServices] ===== STARTING EMAIL DELIVERY ===== [2026-09-02 10:21:24.277] [INFO ] [AzureCommunicationServices] Email recipients: [{"", "sunny@dataaegis.com"}] [2026-09-02 10:21:24.278] [INFO ] [AzureCommunicationServices] Email subject: Merchant Payment Report — Golden Sands Retail LLC — 2026-09-01 [2026-09-02 10:21:24.278] [INFO ] [AzureCommunicationServices] Config values: [2026-09-02 10:21:24.278] [INFO ] - sender: donotreply@shukria.ae [2026-09-02 10:21:24.278] [INFO ] - endpoint: https://shukria-commserv-merchants.uae.communication.azure.com [2026-09-02 10:21:24.278] [INFO ] - api_version: 2025-09-01 [2026-09-02 10:21:24.278] [INFO ] [AzureCommunicationServices] Request URL: https://shukria-commserv-merchants.uae.communication.azure.com/emails:send?api-version=2025-09-01 [2026-09-02 10:21:24.278] [INFO ] [AzureCommunicationServices] Host extracted: shukria-commserv-merchants.uae.communication.azure.com [2026-09-02 10:21:24.279] [INFO ] [AzureCommunicationServices] Path and query: /emails:send?api-version=2025-09-01 [2026-09-02 10:21:24.279] [INFO ] [AzureCommunicationServices] ===== PREPARE_BODY STARTING ===== [2026-09-02 10:21:24.279] [INFO ] [AzureCommunicationServices] email.attachments count: 1 [2026-09-02 10:21:24.279] [INFO ] [AzureCommunicationServices] First attachment is %Swoosh.Attachment{}: true [2026-09-02 10:21:24.279] [INFO ] [AzureCommunicationServices] First attachment data type: <<80, 75, 3, 4, 20, 0, 0, 0, 8, 0, 184, 82, 34, 93, 33, 175, 77, 49, 200, 0, 0, 0, 85, 1, 0, 0, 16, 0, 0, 0, 100, 111, 99, 80, 114, 111, 112, 115, 47, 97, 112, 112, 46, 120, 109, 108, 157, 144, 205, 110, ...>> [2026-09-02 10:21:24.279] [INFO ] [AzureCommunicationServices] First attachment filename: MPR_425590250000000_20260901.xlsx [2026-09-02 10:21:24.279] [INFO ] [AzureCommunicationServices] Processing attachment: MPR_425590250000000_20260901.xlsx [2026-09-02 10:21:24.279] [INFO ] [AzureCommunicationServices] Attachment data type: <<80, 75, 3, 4, 20, 0, 0, 0, 8, 0, 184, 82, 34, 93, 33, 175, 77, 49, 200, 0, 0, 0, 85, 1, 0, 0, 16, 0, 0, 0, 100, 111, 99, 80, 114, 111, 112, 115, 47, 97, 112, 112, 46, 120, 109, 108, 157, 144, 205, 110, ...>> [2026-09-02 10:21:24.279] [INFO ] [AzureCommunicationServices] Direct binary size: 9931 bytes [2026-09-02 10:21:24.280] [INFO ] [AzureCommunicationServices] Base64 encoded size: 13244 chars [2026-09-02 10:21:24.281] [INFO ] [AzureCommunicationServices] Attachment struct created: %{"contentInBase64" => "UEsDBBQAAAAIALhSIl0hr00xyAAAAFUBAAAQAAAAZG9jUHJvcHMvYXBwLnhtbJ2QzW4CIRSF9/MUhL0DdWGMYTAmtWsXo3sCd5QEuARuzfj2Ym1r112en3w5OWo7x8CuUKrHNPC3XnIGyaLz6Tzw4/ixWHNWySRnAiYY+A0q3+pOHQpmKOShskZIdeAXorwRotoLRFP7FqeWTFiioSbLWeA0eQvvaD8jJBJLKVcCZoLkwC3yL5A/iZsr/Rfq0D721dN4y42nO8bUiGTC6CNoqcRLPKJdzsFbQ+0CvQ9+DnVW4q/5XTo9b9KyX8mvwo/RKfH6Q3d3UEsDBBQAAAAIALhSIl3faslmLwEAAFoCAAARAAAAZG9jUHJvcHMvY29yZS54bWylksFOwzAMhu99iij3NkmHJoja7gDaCSSkbQJxi1Kvi2jSKMnW7e1Jy1YG2o2j8//+7NguFkfdogM4rzpTYpZRjMDIrlamKfFmvUzvMfJBmFq0nYESn8DjRZUU0nLZOXh1nQUXFHgUQcZzaUu8C8FyQrzcgRY+iw4TxW3ntAgxdA2xQn6KBkhO6ZxoCKIWQZABmNqJiM/IWk5Iu3ftCKglgRY0mOAJyxj58QZw2t9MGJUrp1bhZOGm9SJO7qNXk7Hv+6yfjdbYPyPvL8+r8aupMsOoJOAqQag498KlAxGgRpHBvytelLfZ49N6iauc5vOUPqQ0XzPKc8bzu4+C/Mk/M3krTLOPw6vApJvVYPt5ui6r4xK36h91L4CRGvft4KCGM6lYQa7DZAx/X0OVfAFQSwMEFAAAAAgAuFIiXcsHwd3eAAAAPwIAAAsAAABfcmVscy8ucmVsc62Sz07DMAyH73uKyPfV3ZAQQst2QUi7ITQewCRuG7WJoyRAeXsiDvyZ2LQDxyQ/f/5sZbOb/aReOWUnQcOqaUFxMGJd6DU8He6XN7DbLjaPPFGpkTy4mFWtCVnDUEq8RcxmYE+5kcihvnSSPJV6TD1GMiP1jOu2vcb0kwFHULW3GtLerkAd3iNfApeuc4bvxLx4DuWPHkeJSqbUc9EwT/gmaXwWGZsKBTwhs75c5vSk6LmQpUJoJPEyplqdiuP87WPFPNTr/Jk4a3T1n+vhuXCwbM87UYxfSvjrH2wXH1BLAwQUAAAACAC4UiJd7oXMI6gCAACrDwAADQAAAHhsL3N0eWxlcy54bWzNV01vozAQvfMrLPe6WyBps8kKqKpWkfbcVtqrA4YgGRvZbpv01+8YAyUKK5EQqqaH2PP5ZvzGcYO7XcHQG5UqFzzE/rWHEeWxSHKehfjlef1ziZHShCeECU5DvKcK30VOoPSe0actpRpBBK5CvNW6/O26Kt7SgqhrUVIOmlTIgmjYysxVpaQkUcapYO7M8xZuQXKOIwehgL8W60IrFItXrgEJjmoRsl9/EhAubjCyER9EAmiuflxdedcegHYBk1vHqOKlgnei3VZJarExbjdRoD7QG2EhXmI3CtxK5oxSbazGN5ovM2tUq5NUfcHPN2tUvneari/8YLtqFwsmJJLZJsTrtb+e36/mhhONP5x1taqpkTPWUmPeMgOkUVASranka9igev28L4FqHOhvERm7QS6ZJHt/dnuilxIsT4D9afbQLepxZf5sUR3fTmi7siVuhExgqI+KtPJ2AOptkpNMcMJeyhCnhCmKW9GjeOeNsIrMaKpRNf0h1lszvYfN96qPxWlso0Dm2XawS2UcBVqUQz3AFJghtBbFUBdrHQVNkSBql45Rm65EjnNufw5LP6jqEPAJWMz51qda5YkpY0+m3L9p99K057pLkbU1tyYU/XmFwsawpFnCTNRLUpZsf8/yjBe0GwuikUaK3iUpn+lO2xm0udxdatnXRdRC7KJbjIC3S+3C7QsxwzXUjnMrqWP4N62om66RNfH/04dOD7ZC5h8Q1Fw+MQiorH99TB+cM4DNJwBm6DcS1mwCWNUcjMTlf8t2Lceg6k/rH6WdHaW9FKm7g93LcHgi6jwewvlj2MfdmoJb9gwvi3MKrk3T0b5LxDyXLzKvl4V6+xWjcpx2MWWHRt1o3uUbMiTv6ltepL8mOabxuPq6dXlczTuqekIF7ud/2ZHzD1BLAwQUAAAACAC4UiJd6Qfz3OUDAACnEwAAFAAAAHhsL3NoYXJlZFN0cmluZ3MueG1spVhhb9pIEP1+v2KEVClXXYMhJQkopOeAkyIR4GynUj5Viz2Bvdhed3cdHf++Y0wDUU/VLLUUKSHzZmbHM2/fcPXpvzyDF9RGqmLY6px6LcAiUaksVsPWQ3z74bIFxooiFZkqcNjaoGl9uv7jyhgLBC3MsLW2thy02yZZYy7MqSqxoP88KZ0LS3/qVduUGkVq1og2z9pdzztv50IWLUhUVdhhq09Rq0J+q3D0+kEdQ15fbaMMTCkSCk5uDOoXbF1ftS391Aa/MLoPwtFD+AgL//E+mMURREH4ZTIKIphOR2wPn/1Z/MMFhMFiHsYs7FhYZBkOWFZep+31qXbdc17mqJO1KCzciOIZxmiFzAwLeadVVcJk7BaGaf+x2+v1vW7Pax4WZnuCmch51fSXFYzXYilhpPKc0pMi2xbB7TzseHcqS7GAiEbEQLitM7u9Jjf+jHeowLvwzs463bOPvfOLy77X/OZ2JD9N6UNeE7yC4pCXYYTWZpgjQXbNBvMn8LMMYi0KIxJLBGPATxIsLaYwp5Ktq2ctBcv9gROoBwuo3BBL5js6SC6ywla8GhweiTvLkVUaucMQuw5ZLFbO1Yo3JTP1mr+R3/gjoVOYVfkSNd+enc3WeqFVWiWWj7qZ8Lr1Rthk7ZJ8yBwDv7JrIp6Ul+7he/Lz+urj9cM4hFtEeOdi7ZwQG6MsMSxZ86bqix+f9N796eYaTmSRZFWtSoAc8NAztLAQG7HMmM0js6wOMClelEzQpT0+K5JDDvZzLVeyoLNRX7ngzry2d7kVAdDpDLregHmFNlSWuggN3uUSdANisfoq7/MS8acBr2v9KCbx5YdMXfF+/3To4cUYfR2FwXgSf41iXhg67k65MM/r912sO6cXPd5Q34X+bAzxPPanvIaza9T8IXUgo/pCbS5JLmHQALt7hpOJOwOE+FQV22skIeFTQ7k5/i/yqBxGa6FXuBTJMzv4W8hRUeeV3W5tNSiqlibRsvzB6rwW+JWHo1JqyHzfiEc5GWMtCLZS8kQ+kQrc8HBTJQpS54miVXfDpPQsBbGiNZWoff9GmFkuZa23/62MrRuYBbqVSBGBR107465D5fel4zWhxvTNIdwK3sT8yQlTeT/c3/vho0ugmq/qjWN3073ZOngxqzwXegPqN3w0uTTkWTtydjAlsoEBHOieI2Zk5+R10n7HyVGtQ4vmK/TIDmjABwrORR/PlEXD+1blfb2hNq4NCFrdJCnxgCcGbpWu54HYsSyVpheu4Z8KtUTzFywyFAZBo6A9Q1UWrIKKIljAnJbjAZgGdGqaJfjv+puKSm8+lGJzmqh8n0DbGHv9HVBLAwQUAAAACAC4UiJdZ6hDiCoBAADsAQAADwAAAHhsL3dvcmtib29rLnhtbI2RTW8CIRCG7/4Kwr2CHprGuJpGY2JSW9NYr80sO7hEPjaA2v77zu6m2x69wbzw8MwwX345y64Ykwm+4JOx5Ay9CpXxp4J/HDYPT5ylDL4CGzwW/BsTXy5G81uI5zKEM6P7PhW8zrmZCZFUjQ7SODToKdEhOsi0jSeRmohQpRoxOyumUj4KB8bznjCL9zCC1kbhOqiLQ597SEQLmexTbZrESU0bi8e+IwZN8wqOvFdgFReUttJHg7e0GDE2tNFWGKhsrniAsuCyOyv+HZ535sOC+Q67279/bug9GlJb3VY0w25gmcKrSaZsszgzFMRtNe2xA0qR1T4yfbG2FXzzLwF6hMkYCbIKF5+pIOlfIupdqIj7/JcXXINNOOzXaDOQ/ljKSf/Wb4eL0Q9QSwMEFAAAAAgAuFIiXQAiPnfZAAAALAIAABoAAAB4bC9fcmVscy93b3JrYm9vay54bWwucmVsc62RwU7DMAyG732KyHeadpMQQkt3QUi7svEAUeo21doksg3b3p4gYHQIJA47" <> ..., "contentType" => "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "name" => "MPR_425590250000000_20260901.xlsx"} [2026-09-02 10:21:24.281] [INFO ] [AzureCommunicationServices] Final JSON body size: 18799 bytes [2026-09-02 10:21:24.282] [INFO ] [AzureCommunicationServices] JSON first 500 chars: {"attachments":[{"contentInBase64":"UEsDBBQAAAAIALhSIl0hr00xyAAAAFUBAAAQAAAAZG9jUHJvcHMvYXBwLnhtbJ2QzW4CIRSF9/MUhL0DdWGMYTAmtWsXo3sCd5QEuARuzfj2Ym1r112en3w5OWo7x8CuUKrHNPC3XnIGyaLz6Tzw4/ixWHNWySRnAiYY+A0q3+pOHQpmKOShskZIdeAXorwRotoLRFP7FqeWTFiioSbLWeA0eQvvaD8jJBJLKVcCZoLkwC3yL5A/iZsr/Rfq0D721dN4y42nO8bUiGTC6CNoqcRLPKJdzsFbQ+0CvQ9+DnVW4q/5XTo9b9KyX8mvwo/RKfH6Q3d3UEsDBBQAAAAIALhSIl3faslmLwEAAFoCAAARAAAAZG9jUHJvcHMvY29yZS54bWylksFOwzAMhu99iij3NkmHJoja7gDaCSSkbQJxi1Kvi2jSKMnW7e1Jy1YG2o2j8//+7NguFkfd [2026-09-02 10:21:24.282] [INFO ] [AzureCommunicationServices] ✅ First attachment contentInBase64 present: 13244 chars (non-empty: true) [2026-09-02 10:21:24.282] [INFO ] [AzureCommunicationServices] Content SHA256: shOfZy44N0X3PxwVZJoA... [2026-09-02 10:21:24.283] [INFO ] [AzureCommunicationServices] Signature (first 20 chars): YWTsydJfrym2rZ4U3pgc... [2026-09-02 10:21:24.283] [INFO ] [AzureCommunicationServices] Auth: HMAC-SHA256 signature authentication [2026-09-02 10:21:24.283] [INFO ] [AzureCommunicationServices] Headers: Authorization, x-ms-date, host, x-ms-content-sha256 [2026-09-02 10:21:24.283] [DEBUG] [AzureCommunicationServices] Request body prepared [2026-09-02 10:21:24.283] [INFO ] [AzureCommunicationServices] Sending HTTP request to Azure... [2026-09-02 10:21:24.283] [DEBUG] [AzureCommunicationServices] Building HTTP request... [2026-09-02 10:21:24.284] [DEBUG] [AzureCommunicationServices] Executing HTTP request via Finch... [2026-09-02 10:21:24.927] [INFO ] [AzureCommunicationServices] HTTP Response: 202 (Success) [2026-09-02 10:21:24.928] [INFO ] [AzureCommunicationServices] Response body: {"id":"b43f1cb4-7321-4371-aa2e-aeb14309db8f","status":"Running","error":null} [2026-09-02 10:21:24.928] [INFO ] [AzureCommunicationServices] Parsed response: %{"error" => nil, "id" => "b43f1cb4-7321-4371-aa2e-aeb14309db8f", "status" => "Running"} [2026-09-02 10:21:24.928] [INFO ] [AzureCommunicationServices] ✅ Email sent successfully to [{"", "sunny@dataaegis.com"}] [2026-09-02 10:21:24.928] [INFO ] [SettlementNotifier] ===== MAILER.DELIVER RESULT ===== [2026-09-02 10:21:24.928] [INFO ] [SettlementNotifier] Result: {:ok, %{id: "b43f1cb4-7321-4371-aa2e-aeb14309db8f", status: 202}} [2026-09-02 10:21:24.928] [INFO ] [SettlementNotifier] ✅ Email delivery SUCCESS [2026-09-02 10:21:24.928] [INFO ] [MprDispatchWorker] SettlementNotifier result for MID=425590250000000: {:ok, %{id: "b43f1cb4-7321-4371-aa2e-aeb14309db8f", status: 202}} [2026-09-02 10:21:24.954] [DEBUG] QUERY OK source="settlement_mis_items" db=24.2ms queue=0.9ms idle=663.8ms UPDATE `settlement_mis_items` AS s0 SET s0.`mpr_sent` = ? WHERE (s0.`id` IN (?)) [true, 438] ↳ SettlementCore.Workers.MprDispatchWorker.dispatch_mpr_for_merchant/4, at: lib/settlement_core/workers/mpr_dispatch_worker.ex:210 [2026-09-02 10:21:24.956] [DEBUG] QUERY OK source="tid_masters" db=0.8ms queue=0.1ms idle=29.6ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` = ?) ["E2E_M3_TEST001"] ↳ SettlementCore.Workers.MprDispatchWorker.dispatch_mpr_for_merchant/4, at: lib/settlement_core/workers/mpr_dispatch_worker.ex:101 [2026-09-02 10:21:24.997] [DEBUG] QUERY OK source="merchant_adjustments" db=40.5ms idle=1.6ms SELECT m0.`id`, m0.`merchant_mid`, m0.`merchant_name`, m0.`adjustment_date`, m0.`debit_credit`, m0.`amount`, m0.`currency`, m0.`adjustment_type`, m0.`description`, m0.`settlement_mis_id`, m0.`status`, m0.`applied_at`, m0.`cancelled_at`, m0.`cancel_reason`, m0.`approval_status`, m0.`level1_reviewed_by`, m0.`level1_reviewed_at`, m0.`level2_approved_by`, m0.`level2_approved_at`, m0.`rejected_by`, m0.`rejected_at`, m0.`rejection_reason`, m0.`created_by`, m0.`updated_by`, m0.`inserted_at`, m0.`updated_at` FROM `merchant_adjustments` AS m0 WHERE (m0.`merchant_mid` = ?) AND (m0.`adjustment_date` = ?) AND (m0.`approval_status` = 'approved') ["E2E_M3_TEST001", ~D[2026-09-01]] ↳ SettlementCore.Workers.MprDispatchWorker.fetch_merchant_adjustment_breakdown/2, at: lib/settlement_core/workers/mpr_dispatch_worker.ex:227 [2026-09-02 10:21:24.998] [DEBUG] QUERY OK source="core_transactions" db=0.6ms idle=41.3ms SELECT c0.`id`, c0.`source_type`, c0.`source_ref_id`, c0.`settlement_batch_id`, c0.`rrn`, c0.`tid`, c0.`auth_number`, c0.`stan`, c0.`invoice_number`, c0.`batch_number`, c0.`merchant_mid`, c0.`merchant_id`, c0.`merchant_ref_number`, c0.`transaction_amount`, c0.`transaction_currency`, c0.`transaction_type`, c0.`transaction_datetime`, c0.`masked_pan`, c0.`scheme_name`, c0.`card_holder_name`, c0.`customer_mobile`, c0.`customer_country`, c0.`mcc_code`, c0.`card_type_id`, c0.`card_type_code`, c0.`mdr_template_id`, c0.`mdr_percentage_rate`, c0.`mdr_fixed_fee`, c0.`mdr_minimum_fee`, c0.`mdr_maximum_fee`, c0.`mdr_amount`, c0.`vat_rate`, c0.`vat_amount`, c0.`interchange_fee`, c0.`interchange_template_id`, c0.`gross_amount`, c0.`net_settlement_amount`, c0.`settlement_status`, c0.`switch_settled_date`, c0.`released_for_settlement_date`, c0.`risk_hold`, c0.`risk_rule_name`, c0.`chargeback_hold`, c0.`exception_type`, c0.`refund_status`, c0.`refund_date`, c0.`reversal_status`, c0.`reversal_date`, c0.`store_id`, c0.`dr_cr`, c0.`qr_tag`, c0.`bank_transfer_reference`, c0.`bank_transfer_date`, c0.`spare_fields`, c0.`inserted_at`, c0.`updated_at` FROM `core_transactions` AS c0 WHERE ((c0.`merchant_mid` = ?) AND ((c0.`switch_settled_date` = ?) OR (c0.`released_for_settlement_date` = ?))) ORDER BY c0.`transaction_datetime` ["E2E_M3_TEST001", ~D[2026-09-01], ~D[2026-09-01]] ↳ SettlementCore.Workers.MprDispatchWorker.dispatch_mpr_for_merchant/4, at: lib/settlement_core/workers/mpr_dispatch_worker.ex:163 [2026-09-02 10:21:24.999] [DEBUG] QUERY OK source="core_transactions" db=0.7ms queue=0.1ms idle=1.3ms SELECT c0.`id`, c0.`source_type`, c0.`source_ref_id`, c0.`settlement_batch_id`, c0.`rrn`, c0.`tid`, c0.`auth_number`, c0.`stan`, c0.`invoice_number`, c0.`batch_number`, c0.`merchant_mid`, c0.`merchant_id`, c0.`merchant_ref_number`, c0.`transaction_amount`, c0.`transaction_currency`, c0.`transaction_type`, c0.`transaction_datetime`, c0.`masked_pan`, c0.`scheme_name`, c0.`card_holder_name`, c0.`customer_mobile`, c0.`customer_country`, c0.`mcc_code`, c0.`card_type_id`, c0.`card_type_code`, c0.`mdr_template_id`, c0.`mdr_percentage_rate`, c0.`mdr_fixed_fee`, c0.`mdr_minimum_fee`, c0.`mdr_maximum_fee`, c0.`mdr_amount`, c0.`vat_rate`, c0.`vat_amount`, c0.`interchange_fee`, c0.`interchange_template_id`, c0.`gross_amount`, c0.`net_settlement_amount`, c0.`settlement_status`, c0.`switch_settled_date`, c0.`released_for_settlement_date`, c0.`risk_hold`, c0.`risk_rule_name`, c0.`chargeback_hold`, c0.`exception_type`, c0.`refund_status`, c0.`refund_date`, c0.`reversal_status`, c0.`reversal_date`, c0.`store_id`, c0.`dr_cr`, c0.`qr_tag`, c0.`bank_transfer_reference`, c0.`bank_transfer_date`, c0.`spare_fields`, c0.`inserted_at`, c0.`updated_at` FROM `core_transactions` AS c0 WHERE (DATE(c0.`transaction_datetime`) = ?) AND ((c0.`risk_hold` = TRUE) OR (c0.`settlement_status` = 'exception_hold')) AND (c0.`merchant_mid` = ?) ORDER BY c0.`merchant_mid`, c0.`transaction_datetime` [~D[2026-09-01], "E2E_M3_TEST001"] ↳ SettlementCore.Workers.MprDispatchWorker.dispatch_mpr_for_merchant/4, at: lib/settlement_core/workers/mpr_dispatch_worker.ex:174 [2026-09-02 10:21:25.001] [DEBUG] QUERY OK source="tid_masters" db=1.6ms idle=1.3ms SELECT a3.`line1`, a3.`city` FROM `tid_masters` AS t0 LEFT OUTER JOIN `brands` AS b1 ON b1.`merchant_reference_id` COLLATE utf8mb4_unicode_ci = t0.`merchant_ref_number` COLLATE utf8mb4_unicode_ci LEFT OUTER JOIN `stores` AS s2 ON s2.`brand_id` = b1.`id` LEFT OUTER JOIN `addresses` AS a3 ON a3.`id` = s2.`address_id` WHERE ((t0.`mid` = ?) OR (t0.`merchant_ref_number` = ?)) LIMIT 1 ["E2E_M3_TEST001", "E2E_M3_TEST001"] ↳ SettlementCore.Workers.MprDispatchWorker.fetch_merchant_address_details/1, at: lib/settlement_core/workers/mpr_dispatch_worker.ex:379 [2026-09-02 10:21:25.001] [INFO ] [MprDispatchWorker] Calling SettlementNotifier.send_mpr for MID=E2E_M3_TEST001 [2026-09-02 10:21:25.001] [INFO ] [SettlementNotifier] Sending MPR to sunny@dataaegis.com for MID=E2E_M3_TEST001 [2026-09-02 10:21:25.001] [INFO ] [SettlementNotifier] Email created, now attaching Excel [2026-09-02 10:21:25.001] [INFO ] [MprExcelGenerator] Generating Excel for MID=E2E_M3_TEST001 [2026-09-02 10:21:25.001] [INFO ] [MprExcelGenerator] Processing 3 transaction rows [2026-09-02 10:21:25.007] [INFO ] [MprExcelGenerator] Excel generated successfully, size: 10219 bytes [2026-09-02 10:21:25.008] [INFO ] [SettlementNotifier] Excel binary type: <<80, 75, 3, 4, 20, 0, 0, 0, 8, 0, 185, 82, 34, 93, 33, 175, 77, 49, 200, 0, 0, 0, 85, 1, 0, 0, 16, 0, 0, 0, ...>> [2026-09-02 10:21:25.009] [INFO ] [SettlementNotifier] Excel binary size: 10219 bytes [2026-09-02 10:21:25.009] [INFO ] [SettlementNotifier] Attaching MPR Excel: MPR_E2E_M3_TEST001_20260901.xlsx [2026-09-02 10:21:25.010] [INFO ] [SettlementNotifier] Attachment created, data field: <<80, 75, 3, 4, 20, 0, 0, 0, 8, 0, 185, 82, 34, 93, 33, 175, 77, 49, 200, 0, 0, 0, 85, 1, 0, 0, 16, 0, 0, 0, 100, 111, 99, 80, 114, 111, 112, 115, 47, 97, 112, 112, 46, 120, 109, 108, 157, 144, 205, 110, ...>> [2026-09-02 10:21:25.010] [INFO ] [SettlementNotifier] Attachment filename: MPR_E2E_M3_TEST001_20260901.xlsx [2026-09-02 10:21:25.010] [INFO ] [SettlementNotifier] Calling deliver after attachment... [2026-09-02 10:21:25.010] [INFO ] [SettlementNotifier] ===== CALLING MAILER.DELIVER ===== [2026-09-02 10:21:25.010] [INFO ] [SettlementNotifier] Email TO: [{"", "sunny@dataaegis.com"}] [2026-09-02 10:21:25.010] [INFO ] [SettlementNotifier] Email FROM: {"", "donotreply@shukria.ae"} [2026-09-02 10:21:25.011] [INFO ] [SettlementNotifier] Email SUBJECT: Merchant Payment Report — E2E Test Merchant Three — 2026-09-01 [2026-09-02 10:21:25.011] [INFO ] [AzureCommunicationServices] ===== STARTING EMAIL DELIVERY ===== [2026-09-02 10:21:25.011] [INFO ] [AzureCommunicationServices] Email recipients: [{"", "sunny@dataaegis.com"}] [2026-09-02 10:21:25.011] [INFO ] [AzureCommunicationServices] Email subject: Merchant Payment Report — E2E Test Merchant Three — 2026-09-01 [2026-09-02 10:21:25.011] [INFO ] [AzureCommunicationServices] Config values: [2026-09-02 10:21:25.011] [INFO ] - sender: donotreply@shukria.ae [2026-09-02 10:21:25.011] [INFO ] - endpoint: https://shukria-commserv-merchants.uae.communication.azure.com [2026-09-02 10:21:25.011] [INFO ] - api_version: 2025-09-01 [2026-09-02 10:21:25.011] [INFO ] [AzureCommunicationServices] Request URL: https://shukria-commserv-merchants.uae.communication.azure.com/emails:send?api-version=2025-09-01 [2026-09-02 10:21:25.011] [INFO ] [AzureCommunicationServices] Host extracted: shukria-commserv-merchants.uae.communication.azure.com [2026-09-02 10:21:25.011] [INFO ] [AzureCommunicationServices] Path and query: /emails:send?api-version=2025-09-01 [2026-09-02 10:21:25.011] [INFO ] [AzureCommunicationServices] ===== PREPARE_BODY STARTING ===== [2026-09-02 10:21:25.011] [INFO ] [AzureCommunicationServices] email.attachments count: 1 [2026-09-02 10:21:25.011] [INFO ] [AzureCommunicationServices] First attachment is %Swoosh.Attachment{}: true [2026-09-02 10:21:25.017] [INFO ] [AzureCommunicationServices] First attachment data type: <<80, 75, 3, 4, 20, 0, 0, 0, 8, 0, 185, 82, 34, 93, 33, 175, 77, 49, 200, 0, 0, 0, 85, 1, 0, 0, 16, 0, 0, 0, 100, 111, 99, 80, 114, 111, 112, 115, 47, 97, 112, 112, 46, 120, 109, 108, 157, 144, 205, 110, ...>> [2026-09-02 10:21:25.018] [INFO ] [AzureCommunicationServices] First attachment filename: MPR_E2E_M3_TEST001_20260901.xlsx [2026-09-02 10:21:25.019] [INFO ] [AzureCommunicationServices] Processing attachment: MPR_E2E_M3_TEST001_20260901.xlsx [2026-09-02 10:21:25.020] [INFO ] [AzureCommunicationServices] Attachment data type: <<80, 75, 3, 4, 20, 0, 0, 0, 8, 0, 185, 82, 34, 93, 33, 175, 77, 49, 200, 0, 0, 0, 85, 1, 0, 0, 16, 0, 0, 0, 100, 111, 99, 80, 114, 111, 112, 115, 47, 97, 112, 112, 46, 120, 109, 108, 157, 144, 205, 110, ...>> [2026-09-02 10:21:25.020] [INFO ] [AzureCommunicationServices] Direct binary size: 10219 bytes [2026-09-02 10:21:25.020] [INFO ] [AzureCommunicationServices] Base64 encoded size: 13628 chars [2026-09-02 10:21:25.021] [INFO ] [AzureCommunicationServices] Attachment struct created: %{"contentInBase64" => "UEsDBBQAAAAIALlSIl0hr00xyAAAAFUBAAAQAAAAZG9jUHJvcHMvYXBwLnhtbJ2QzW4CIRSF9/MUhL0DdWGMYTAmtWsXo3sCd5QEuARuzfj2Ym1r112en3w5OWo7x8CuUKrHNPC3XnIGyaLz6Tzw4/ixWHNWySRnAiYY+A0q3+pOHQpmKOShskZIdeAXorwRotoLRFP7FqeWTFiioSbLWeA0eQvvaD8jJBJLKVcCZoLkwC3yL5A/iZsr/Rfq0D721dN4y42nO8bUiGTC6CNoqcRLPKJdzsFbQ+0CvQ9+DnVW4q/5XTo9b9KyX8mvwo/RKfH6Q3d3UEsDBBQAAAAIALlSIl1/hBcwLwEAAFoCAAARAAAAZG9jUHJvcHMvY29yZS54bWylksFOwzAMhu99iij3NkknJoja7gDaCSSkbQJxi1Kvi2jSKMnW7e1Jy1YG2o2j8//+7NguFkfdogM4rzpTYpZRjMDIrlamKfFmvUzvMfJBmFq0nYESn8DjRZUU0nLZOXh1nQUXFHgUQcZzaUu8C8FyQrzcgRY+iw4TxW3ntAgxdA2xQn6KBkhO6ZxoCKIWQZABmNqJiM/IWk5Iu3ftCKglgRY0mOAJyxj58QZw2t9MGJUrp1bhZOGm9SJO7qNXk7Hv+6yfjdbYPyPvL8+r8aupMsOoJOAqQag498KlAxGgRpHBvytelLfZ49N6iauc5vOUPqQ0XzPKc8bzu4+C/Mk/M3krTLOPw6vApJvVYPt5ui6r4xK36h91L4CRGvft4KCGM6lYQa7DZAx/X0OVfAFQSwMEFAAAAAgAuVIiXcsHwd3eAAAAPwIAAAsAAABfcmVscy8ucmVsc62Sz07DMAyH73uKyPfV3ZAQQst2QUi7ITQewCRuG7WJoyRAeXsiDvyZ2LQDxyQ/f/5sZbOb/aReOWUnQcOqaUFxMGJd6DU8He6XN7DbLjaPPFGpkTy4mFWtCVnDUEq8RcxmYE+5kcihvnSSPJV6TD1GMiP1jOu2vcb0kwFHULW3GtLerkAd3iNfApeuc4bvxLx4DuWPHkeJSqbUc9EwT/gmaXwWGZsKBTwhs75c5vSk6LmQpUJoJPEyplqdiuP87WPFPNTr/Jk4a3T1n+vhuXCwbM87UYxfSvjrH2wXH1BLAwQUAAAACAC5UiJd7oXMI6gCAACrDwAADQAAAHhsL3N0eWxlcy54bWzNV01vozAQvfMrLPe6WyBps8kKqKpWkfbcVtqrA4YgGRvZbpv01+8YAyUKK5EQqqaH2PP5ZvzGcYO7XcHQG5UqFzzE/rWHEeWxSHKehfjlef1ziZHShCeECU5DvKcK30VOoPSe0actpRpBBK5CvNW6/O26Kt7SgqhrUVIOmlTIgmjYysxVpaQkUcapYO7M8xZuQXKOIwehgL8W60IrFItXrgEJjmoRsl9/EhAubjCyER9EAmiuflxdedcegHYBk1vHqOKlgnei3VZJarExbjdRoD7QG2EhXmI3CtxK5oxSbazGN5ovM2tUq5NUfcHPN2tUvneari/8YLtqFwsmJJLZJsTrtb+e36/mhhONP5x1taqpkTPWUmPeMgOkUVASranka9igev28L4FqHOhvERm7QS6ZJHt/dnuilxIsT4D9afbQLepxZf5sUR3fTmi7siVuhExgqI+KtPJ2AOptkpNMcMJeyhCnhCmKW9GjeOeNsIrMaKpRNf0h1lszvYfN96qPxWlso0Dm2XawS2UcBVqUQz3AFJghtBbFUBdrHQVNkSBql45Rm65EjnNufw5LP6jqEPAJWMz51qda5YkpY0+m3L9p99K057pLkbU1tyYU/XmFwsawpFnCTNRLUpZsf8/yjBe0GwuikUaK3iUpn+lO2xm0udxdatnXRdRC7KJbjIC3S+3C7QsxwzXUjnMrqWP4N62om66RNfH/04dOD7ZC5h8Q1Fw+MQiorH99TB+cM4DNJwBm6DcS1mwCWNUcjMTlf8t2Lceg6k/rH6WdHaW9FKm7g93LcHgi6jwewvlj2MfdmoJb9gwvi3MKrk3T0b5LxDyXLzKvl4V6+xWjcpx2MWWHRt1o3uUbMiTv6ltepL8mOabxuPq6dXlczTuqekIF7ud/2ZHzD1BLAwQUAAAACAC5UiJdg8qIIgcEAAAuFgAAFAAAAHhsL3NoYXJlZFN0cmluZ3MueG1spVhtb9s2EP6+X3EQUCArVlt2kq4xknSyrbQG/DZJKZZPBi1dbC4SqZFUMP/7UZYTO1hRHFUB/mD7nrvnjsd70fXnf4scnlFpLsWN1+v4HqBIZcbF5sa7T+4+fPJAGyYylkuBN94Otff59pdrrQ1YqNA33taYctDt6nSLBdMdWaKw/zxKVTBjv6pNV5cKWaa3iKbIu33f/9gtGBcepLISxpr1LzyoBP+nwtHxl9oKv73e2xnokqXWvFWkUT2jd3vdNfZTC/xAaBZGo/voAZbBwyycJzHEYfRtMgpjmE5HZA1fg3nyogKicLmIEhJ2zAySBAckKb/X9a9s9PofacxRpVsmDAyZeIIxGsZzTUJ+UbIqYTJ2M0OUD/vhana+SsI48f0eCbJ3YM4KWjAT1I3PbvTJ+q0DsLfxCk22CmnYyTCYkwSD0P/Oc+7mUpBl9kfamR+diWgMYzQmxwIt5JBbsHiEIM8hUUxolhpbUTQEaYqlwQwWAuJt9aQ4o53iUQnU9whsCYKEE8/ohFxsmKloMTh1iXp1YyMVUnM/cb1TCds4RyvZlUTqdcFGeuKPmMpgXhVrVHR5Mpu99FLJrEoNHTWc0LJ1yEy6dSEfEa9BUJktjGRGrE0n5xQUdauj5cM4gjtEeOci7UyIjJGG5bU07VZ9C5Kzy3e/uqmGMy7SvKrHELAKaOg5GliyHVvnxOTheV4bmIhnyVN0SY+v0jYAB/mF4hsurG82r1xw57bnf9r3fPCvBuf+wPcdSlnmMlfQpgrb/WwVs72oRyQSTENamkzigCR48f749OxD1r4ah8NJsooT8qByaLtEV4MrF+l+x/dp9/ltDlyQc+B4VLQYzYI4sdNuEBGb1Kh9QGmEXgJKk+51fr9sE9DLFgHt0/jPwr/IgqtRFI4ntMXiJJJEJlcu0n1yJL9EwXwMySIJprQyaLao6K3DoUXWY14zulHbmG0r7prhbOLelyJ8rMR+uEntOF5DqRy/i2zFYbRlaoNrlj6Rjb+FtLK6qMz+5UENiqu1ThUvX2YNWgr8SEMrSs2IcUzEVkrGWI+p+wXnjD/a3WRHw00lExBhKp9R7YiDRp4B2zAu7MBxPBEiyzWvt8C/K23qBCaB7jhai0CruQdhWllpIn8MHS0JFWZvnHALeGPzf0qI++D9bBZEDy6G6npV78GH+evNLkyzWRUFUzuQP6Gj4dIUz1qRs4KpLTYwgJNpvMUdOSh5vWk/o6RV6gRZ9gptmQEN+GSvcNna5tKgpr3ae1+/N2lUa2AKgdv9MKSNVXdS1ffBVseylMoeuII/K1Qc9W+wzJFpBIXMbr+yMmAkVNaCASwYzwegG1BHN69m/ihQpZXafSjZrpPK4kigq7W5/Q9QSwMEFAAAAAgAuVIiXWeoQ4gqAQAA7AEAAA8AAAB4bC93b3JrYm9vay54bWyNkU1vAiEQhu/+CsK9gh6axriaRmNiUlvTWK/NLDu4RD42gNr++87uptsevcG88PDMMF9+OcuuGJMJvuCTseQMvQqV8aeCfxw2D0+cpQy+Ahs8FvwbE18uRvNbiOcyhDOj+z4VvM65mQmRVI0O0jg06CnRITrItI0nkZqIUKUaMTsrplI+CgfG854wi/cwgtZG4Tqoi0Ofe0hEC5nsU22axElNG4vHviMGTfMKjrxXYBUXlLbSR4O3tBgxNrTRVhiobK54gLLgsjsr/h2ed+bDgvkOu9u/f27oPRpSW91WNMNuYJnCq0mmbLM4MxTEbTXtsQNKkdU+Mn2xthV88y8BeoTJGAmyChefqSDpXyLqXaiI+/yXF1yDTTjs12gzkP5Yykn/1m+Hi9EPUEsDBBQAAAAIALlSIl0AIj532QAAACwCAAAaAAAAeGwvX3JlbHMvd29ya2Jvb2sueG1sLnJlbHOtkcFOwzAMhu99" <> ..., "contentType" => "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "name" => "MPR_E2E_M3_TEST001_20260901.xlsx"} [2026-09-02 10:21:25.022] [INFO ] [AzureCommunicationServices] Final JSON body size: 19682 bytes [2026-09-02 10:21:25.022] [INFO ] [AzureCommunicationServices] JSON first 500 chars: {"attachments":[{"contentInBase64":"UEsDBBQAAAAIALlSIl0hr00xyAAAAFUBAAAQAAAAZG9jUHJvcHMvYXBwLnhtbJ2QzW4CIRSF9/MUhL0DdWGMYTAmtWsXo3sCd5QEuARuzfj2Ym1r112en3w5OWo7x8CuUKrHNPC3XnIGyaLz6Tzw4/ixWHNWySRnAiYY+A0q3+pOHQpmKOShskZIdeAXorwRotoLRFP7FqeWTFiioSbLWeA0eQvvaD8jJBJLKVcCZoLkwC3yL5A/iZsr/Rfq0D721dN4y42nO8bUiGTC6CNoqcRLPKJdzsFbQ+0CvQ9+DnVW4q/5XTo9b9KyX8mvwo/RKfH6Q3d3UEsDBBQAAAAIALlSIl1/hBcwLwEAAFoCAAARAAAAZG9jUHJvcHMvY29yZS54bWylksFOwzAMhu99iij3NkknJoja7gDaCSSkbQJxi1Kvi2jSKMnW7e1Jy1YG2o2j8//+7NguFkfd [2026-09-02 10:21:25.022] [INFO ] [AzureCommunicationServices] ✅ First attachment contentInBase64 present: 13628 chars (non-empty: true) [2026-09-02 10:21:25.022] [INFO ] [AzureCommunicationServices] Content SHA256: z+w1CCiRt5gc22IOxOIf... [2026-09-02 10:21:25.022] [INFO ] [AzureCommunicationServices] Signature (first 20 chars): Y79D6Ntf6tFBO3ipqYwS... [2026-09-02 10:21:25.024] [INFO ] [AzureCommunicationServices] Auth: HMAC-SHA256 signature authentication [2026-09-02 10:21:25.024] [INFO ] [AzureCommunicationServices] Headers: Authorization, x-ms-date, host, x-ms-content-sha256 [2026-09-02 10:21:25.024] [DEBUG] [AzureCommunicationServices] Request body prepared [2026-09-02 10:21:25.024] [INFO ] [AzureCommunicationServices] Sending HTTP request to Azure... [2026-09-02 10:21:25.024] [DEBUG] [AzureCommunicationServices] Building HTTP request... [2026-09-02 10:21:25.024] [DEBUG] [AzureCommunicationServices] Executing HTTP request via Finch... [2026-09-02 10:21:25.650] [INFO ] [AzureCommunicationServices] HTTP Response: 202 (Success) [2026-09-02 10:21:25.650] [INFO ] [AzureCommunicationServices] Response body: {"id":"008c893f-fbe1-4ee9-8edc-8b091983c0d2","status":"Running","error":null} [2026-09-02 10:21:25.651] [INFO ] [AzureCommunicationServices] Parsed response: %{"error" => nil, "id" => "008c893f-fbe1-4ee9-8edc-8b091983c0d2", "status" => "Running"} [2026-09-02 10:21:25.651] [INFO ] [AzureCommunicationServices] ✅ Email sent successfully to [{"", "sunny@dataaegis.com"}] [2026-09-02 10:21:25.651] [INFO ] [SettlementNotifier] ===== MAILER.DELIVER RESULT ===== [2026-09-02 10:21:25.652] [INFO ] [SettlementNotifier] Result: {:ok, %{id: "008c893f-fbe1-4ee9-8edc-8b091983c0d2", status: 202}} [2026-09-02 10:21:25.652] [INFO ] [SettlementNotifier] ✅ Email delivery SUCCESS [2026-09-02 10:21:25.652] [INFO ] [MprDispatchWorker] SettlementNotifier result for MID=E2E_M3_TEST001: {:ok, %{id: "008c893f-fbe1-4ee9-8edc-8b091983c0d2", status: 202}} [2026-09-02 10:21:25.688] [DEBUG] QUERY OK source="settlement_mis_items" db=34.3ms queue=1.2ms idle=653.3ms UPDATE `settlement_mis_items` AS s0 SET s0.`mpr_sent` = ? WHERE (s0.`id` IN (?,?,?)) [true, 441, 440, 439] ↳ SettlementCore.Workers.MprDispatchWorker.dispatch_mpr_for_merchant/4, at: lib/settlement_core/workers/mpr_dispatch_worker.ex:210 [2026-09-02 10:21:25.688] [INFO ] [MprDispatchWorker] MPR dispatch complete mis_id=328 sent=3 failed=0 [2026-09-02 10:21:39.067] [INFO ] [PayoutTransmissionWorker] Starting payout for mis_id=328 [2026-09-02 10:21:39.069] [DEBUG] QUERY OK source="settlement_mis" db=0.9ms idle=90.2ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 WHERE (s0.`id` = ?) [328] ↳ SettlementCore.Workers.PayoutTransmissionWorker.perform/1, at: lib/settlement_core/workers/payout_transmission_worker.ex:41 [2026-09-02 10:21:39.070] [DEBUG] QUERY OK source="payout_batches" db=0.6ms idle=1.7ms SELECT p0.`id`, p0.`settlement_mis_id`, p0.`payout_date`, p0.`batch_type`, p0.`total_merchants`, p0.`total_items`, p0.`total_amount`, p0.`currency`, p0.`file_path`, p0.`file_name`, p0.`encryption_method`, p0.`batch_reference`, p0.`encrypted_file_path`, p0.`file_hash`, p0.`encryption_key_ref`, p0.`generated_by`, p0.`generated_at`, p0.`transmission_method`, p0.`status`, p0.`transmitted_at`, p0.`transmission_reference`, p0.`bank_confirmation_ref`, p0.`failure_reason`, p0.`confirmed_at`, p0.`confirmed_item_count`, p0.`rejected_item_count`, p0.`inserted_at`, p0.`updated_at` FROM `payout_batches` AS p0 WHERE (p0.`settlement_mis_id` = ?) [328] ↳ SettlementCore.PayoutGenerator.generate_for_mis/1, at: lib/settlement_core/payout_generator.ex:43 [2026-09-02 10:21:39.070] [INFO ] [PayoutGenerator] Batch already exists for mis_id=328 batch_id=180 [2026-09-02 10:21:39.075] [DEBUG] QUERY OK source="settlement_mis_items" db=4.9ms idle=1.2ms SELECT count(s0.`id`) FROM `settlement_mis_items` AS s0 WHERE ((s0.`settlement_mis_id` = ?) AND (s0.`mpr_sent` != TRUE)) [328] ↳ SettlementCore.Workers.PayoutTransmissionWorker.enqueue_mpr_if_needed/1, at: lib/settlement_core/workers/payout_transmission_worker.ex:77 [2026-09-02 10:21:39.075] [INFO ] [PayoutTransmissionWorker] MPR already sent for mis_id=328, skipping enqueue [2026-09-02 10:21:39.075] [INFO ] [PayoutTransmitter] Transmitting batch_id=180 method=SFTP [2026-09-02 10:21:39.079] [DEBUG] QUERY OK source="payout_items" db=1.4ms idle=7.4ms SELECT p0.`id`, p0.`payout_batch_id`, p0.`settlement_mis_id`, p0.`settlement_date`, p0.`merchant_mid`, p0.`merchant_id`, p0.`merchant_name`, p0.`merchant_ref_number`, p0.`bank_name`, p0.`iban`, p0.`account_number`, p0.`bank_code`, p0.`currency`, p0.`gross_amount`, p0.`total_deductions`, p0.`payout_amount`, p0.`transaction_count`, p0.`net_settlement_amount`, p0.`total_adjustments_credit`, p0.`total_adjustments_debit`, p0.`final_payout_amount`, p0.`total_gross_amount`, p0.`total_mdr_amount`, p0.`total_vat_amount`, p0.`status`, p0.`bank_transfer_ref`, p0.`confirmed_at`, p0.`rejection_reason`, p0.`rejected_at`, p0.`re_initiated_at`, p0.`re_initiated_batch_id`, p0.`inserted_at`, p0.`updated_at` FROM `payout_items` AS p0 WHERE (p0.`payout_batch_id` = ?) ORDER BY p0.`merchant_mid` [180] ↳ SettlementCore.PayoutGenerator.generate_payout_csv/1, at: lib/settlement_core/payout_generator.ex:85 [2026-09-02 10:21:39.080] [DEBUG] QUERY OK source="tid_masters" db=1.0ms queue=0.4ms idle=3.9ms SELECT t0.`mid`, a3.`line1`, a3.`country`, t0.`registered_email` FROM `tid_masters` AS t0 LEFT OUTER JOIN `brands` AS b1 ON b1.`merchant_reference_id` COLLATE utf8mb4_unicode_ci = t0.`merchant_ref_number` COLLATE utf8mb4_unicode_ci LEFT OUTER JOIN `stores` AS s2 ON s2.`brand_id` = b1.`id` LEFT OUTER JOIN `addresses` AS a3 ON a3.`id` = s2.`address_id` WHERE (t0.`mid` IN (?,?,?) OR t0.`merchant_ref_number` IN (?,?,?)) ["419926360000000", "425590250000000", "E2E_M3_TEST001", "419926360000000", "425590250000000", "E2E_M3_TEST001"] ↳ SettlementCore.PayoutGenerator.prefetch_merchant_details/1, at: lib/settlement_core/payout_generator.ex:375 [2026-09-02 10:21:39.084] [INFO ] [FileEncryptor] Encrypted /tmp/payout_files_sunny/payout_2026-09-01_180.csv → /tmp/payout_files_sunny/payout_2026-09-01_180.csv.enc key_ref=default_v1 [2026-09-02 10:21:39.084] [INFO ] [Bank.SftpClient] Uploading /tmp/payout_files_sunny/payout_2026-09-01_180.csv.enc → sftp://localhost/incoming/payout_2026-09-01_180.csv.enc [2026-09-02 10:21:39.102] [DEBUG] client will use strict KEX ordering [2026-09-02 10:21:39.195] [ERROR] Erlang SSH :client version: 5.1.4.3 (OpenSSL 3.0.13 30 Jan 2024). Address: 127.0.0.1:44702 Peer server version: ~c"SSH-2.0-OpenSSH_9.6p1 Ubuntu-3ubuntu13.18" Peer address: 127.0.0.1:22 badarg [2026-09-02 10:21:39.196] [INFO ] Erlang SSH :client version: 5.1.4.3 (OpenSSL 3.0.13 30 Jan 2024). Address: 127.0.0.1:44702 Peer server version: ~c"SSH-2.0-OpenSSH_9.6p1 Ubuntu-3ubuntu13.18" Peer address: 127.0.0.1:22 Disconnects with code = 11 [RFC4253 11.1]: Internal error State = {userauth,client} Module = ssh_connection_handler, Line = 1424. Details: Reason: badarg [2026-09-02 10:21:39.197] [ERROR] GenStateMachine #PID<0.2031.0> terminating ** (ArgumentError) errors were found at the given arguments: * 1st argument: not valid character data (an iodata term) (stdlib 5.2.3.2) unicode.erl:895: :unicode.characters_to_binary({:error, :enotsup}) (ssh 5.1.4.3) ssh_auth.erl:121: :ssh_auth.password_msg/1 (ssh 5.1.4.3) ssh_auth.erl:59: :ssh_auth.userauth_request_msg/1 (ssh 5.1.4.3) ssh_fsm_userauth_client.erl:92: :ssh_fsm_userauth_client.handle_event/4 (stdlib 5.2.3.2) gen_statem.erl:1397: :gen_statem.loop_state_callback/11 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 State: [data: [{~c"State", {:data, #PID<0.2027.0>, ~c"payout", {:connection, [], #Reference<0.2372382238.861011970.253393>, 0, :undefined, %{pref_public_key_algs: [:"ssh-ed25519", :"ssh-ed448", :"ecdsa-sha2-nistp521", :"ecdsa-sha2-nistp384", :"ecdsa-sha2-nistp256", :"rsa-sha2-512", :"rsa-sha2-256"], send_ext_info: true, user_interaction: true, key_cb_options: [silently_accept_hosts: true, user: ~c"payout", connect_timeout: 30000], save_accepted_host: true, user_dir_fun: :undefined, disconnectfun: #Function<45.126434157/1 in :ssh_options.default/1>, dh_gex_limits: {1024, 6144, 8192}, vsn: {2, 0}, tstflg: [], ecdsa_pass_phrase: :"***", modify_algorithms: :undefined, password: :"***", user_dir: false, dsa_pass_phrase: :"***", silently_accept_hosts: true, rekey_limit: {3600000, 1024000000}, unexpectedfun: #Function<47.126434157/2 in :ssh_options.default/1>, auth_methods: ~c"publickey,keyboard-interactive,password", id_string: ~c"Erlang/5.1.4.3", rsa_pass_phrase: :"***", key_cb: {:ssh_file, []}, max_random_length_padding: 15, transport: {:tcp, :gen_tcp, :tcp_closed}, user: ~c"payout", connect_timeout: 30000, recv_ext_info: true, ssh_msg_debug_fun: #Function<49.126434157/4 in :ssh_options.default/1>, quiet_mode: false, internal_options: %{connection_sup: #PID<0.2030.0>, negotiation_timeout: 30000, user_pid: #PID<0.2027.0>}, max_log_item_len: 500, profile: :default, preferred_algorithms: [kex: [:"curve25519-sha256", :"curve25519-sha256@libssh.org", ...], public_key: [:"ssh-ed25519", ...], cipher: [...], ...], socket_options: [], idle_time: :infinity, keyboard_interact_fun: :undefined}, 425984, 65536, :undefined, #PID<0.2030.0>}, 0, :tcp, :gen_tcp, :tcp_closed, {:ssh, :client, {~c"127.0.0.1", {{127, 0, 0, 1}, 22}}, {{127, 0, 0, 1}, 44702}, {2, 0}, {2, 0}, ~c"SSH-2.0-Erlang/5.1.4.3", ~c"SSH-2.0-OpenSSH_9.6p1 Ubuntu-3ubuntu13.18", :"****", :"****", true, true, true, {:alg, :"curve25519-sha256", :"ssh-ed25519", :AEAD_AES_256_GCM, :AEAD_AES_256_GCM, :AEAD_AES_256_GCM, :AEAD_AES_256_GCM, :none, :none, :none, :none, true, true, true}, :AEAD_AES_256_GCM, :"****", :"****", :AEAD_AES_256_GCM, :"****", :"****", :AEAD_AES_256_GCM, :aes_256_gcm, :"****", 16, :"****", :AEAD_AES_256_GCM, :aes_256_gcm, :"****", 16, :"****", :none, :"****", :none, :"****", :none, :none, true, ...}, #Port<0.41>, :"****", :"****", "", :undefined, :"****", 0, [], :"****"}}]] Callback mode: :handle_event_function Postponed events: [] Last event: {:internal, {:ssh_msg_userauth_failure, ~c"publickey,password", false}} Queued events: [] State: [data: [{~c"State", {:data, #PID<0.2027.0>, ~c"payout", {:connection, [], #Reference<0.2372382238.861011970.253393>, 0, :undefined, %{pref_public_key_algs: [:"ssh-ed25519", :"ssh-ed448", :"ecdsa-sha2-nistp521", :"ecdsa-sha2-nistp384", :"ecdsa-sha2-nistp256", :"rsa-sha2-512", :"rsa-sha2-256"], send_ext_info: true, user_interaction: true, key_cb_options: [silently_accept_hosts: true, user: ~c"payout", connect_timeout: 30000], save_accepted_host: true, user_dir_fun: :undefined, disconnectfun: #Function<45.126434157/1 in :ssh_options.default/1>, dh_gex_limits: {1024, 6144, 8192}, vsn: {2, 0}, tstflg: [], ecdsa_pass_phrase: :"***", modify_algorithms: :undefined, password: :"***", user_dir: false, dsa_pass_phrase: :"***", silently_accept_hosts: true, rekey_limit: {3600000, 1024000000}, unexpectedfun: #Function<47.126434157/2 in :ssh_options.default/1>, auth_methods: ~c"publickey,keyboard-interactive,password", id_string: ~c"Erlang/5.1.4.3", rsa_pass_phrase: :"***", key_cb: {:ssh_file, []}, max_random_length_padding: 15, transport: {:tcp, :gen_tcp, :tcp_closed}, user: ~c"payout", connect_timeout: 30000, recv_ext_info: true, ssh_msg_debug_fun: #Function<49.126434157/4 in :ssh_options.default/1>, quiet_mode: false, internal_options: %{connection_sup: #PID<0.2030.0>, negotiation_timeout: 30000, user_pid: #PID<0.2027.0>}, max_log_item_len: 500, profile: :default, preferred_algorithms: [kex: [:"curve25519-sha256", :"curve25519-sha256@libssh.org", ...], public_key: [:"ssh-ed25519", ...], cipher: [...], ...], socket_options: [], idle_time: :infinity, keyboard_interact_fun: :undefined}, 425984, 65536, :undefined, #PID<0.2030.0>}, 0, :tcp, :gen_tcp, :tcp_closed, {:ssh, :client, {~c"127.0.0.1", {{127, 0, 0, 1}, 22}}, {{127, 0, 0, 1}, 44702}, {2, 0}, {2, 0}, ~c"SSH-2.0-Erlang/5.1.4.3", ~c"SSH-2.0-OpenSSH_9.6p1 Ubuntu-3ubuntu13.18", :"****", :"****", true, true, true, {:alg, :"curve25519-sha256", :"ssh-ed25519", :AEAD_AES_256_GCM, :AEAD_AES_256_GCM, :AEAD_AES_256_GCM, :AEAD_AES_256_GCM, :none, :none, :none, :none, true, true, true}, :AEAD_AES_256_GCM, :"****", :"****", :AEAD_AES_256_GCM, :"****", :"****", :AEAD_AES_256_GCM, :aes_256_gcm, :"****", 16, :"****", :AEAD_AES_256_GCM, :aes_256_gcm, :"****", 16, :"****", :none, :"****", :none, :"****", :none, :none, true, ...}, #Port<0.41>, :"****", :"****", "", :undefined, :"****", 0, [], :"****"}}]] [2026-09-02 10:21:39.199] [ERROR] [Bank.SftpClient] Upload failed: {:badarg, [{:unicode, :characters_to_binary, [error: :enotsup], [file: ~c"unicode.erl", line: 895, error_info: %{module: :erl_stdlib_errors}]}, {:ssh_auth, :password_msg, 1, [file: ~c"ssh_auth.erl", line: 121]}, {:ssh_auth, :userauth_request_msg, 1, [file: ~c"ssh_auth.erl", line: 59]}, {:ssh_fsm_userauth_client, :handle_event, 4, [file: ~c"ssh_fsm_userauth_client.erl", line: 92]}, {:gen_statem, :loop_state_callback, 11, [file: ~c"gen_statem.erl", line: 1397]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 241]}]} [2026-09-02 10:21:39.199] [ERROR] [PayoutTransmitter] Transmission failed batch_id=180: {:badarg, [{:unicode, :characters_to_binary, [error: :enotsup], [file: ~c"unicode.erl", line: 895, error_info: %{module: :erl_stdlib_errors}]}, {:ssh_auth, :password_msg, 1, [file: ~c"ssh_auth.erl", line: 121]}, {:ssh_auth, :userauth_request_msg, 1, [file: ~c"ssh_auth.erl", line: 59]}, {:ssh_fsm_userauth_client, :handle_event, 4, [file: ~c"ssh_fsm_userauth_client.erl", line: 92]}, {:gen_statem, :loop_state_callback, 11, [file: ~c"gen_statem.erl", line: 1397]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 241]}]} [2026-09-02 10:21:39.241] [DEBUG] QUERY ERROR source="payout_batches" db=0.5ms queue=40.9ms idle=121.2ms UPDATE `payout_batches` SET `status` = ?, `failure_reason` = ?, `updated_at` = ? WHERE `id` = ? ["failed", "{:badarg, [{:unicode, :characters_to_binary, [error: :enotsup], [file: ~c\"unicode.erl\", line: 895, error_info: %{module: :erl_stdlib_errors}]}, {:ssh_auth, :password_msg, 1, [file: ~c\"ssh_auth.erl\", line: 121]}, {:ssh_auth, :userauth_request_msg, 1, [file: ~c\"ssh_auth.erl\", line: 59]}, {:ssh_fsm_userauth_client, :handle_event, 4, [file: ~c\"ssh_fsm_userauth_client.erl\", line: 92]}, {:gen_statem, :loop_state_callback, 11, [file: ~c\"gen_statem.erl\", line: 1397]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c\"proc_lib.erl\", line: 241]}]}", ~N[2026-09-02 10:21:39], 180] ↳ anonymous fn/2 in SettlementCore.Bank.PayoutTransmitter.transmit/1, at: lib/settlement_core/bank/payout_transmitter.ex:48 [2026-09-02 10:21:40.921] [INFO ] Received status update for terminal 98251226730001 [2026-09-02 10:21:40.921] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-09-02T10:21:40Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-09-02T10:21:40Z","value":"34"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-09-02T10:21:40Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-09-02T10:21:40Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-09-02T10:21:40Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-09-02T10:21:40Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-09-02T10:21:40Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-09-02T10:21:40Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-09-02T10:21:40Z","vendor":"MoreFun"} [2026-09-02 10:21:40.921] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-09-02T10:21:40Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-09-02T10:21:40Z", "value" => "34"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-09-02T10:21:40Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-09-02T10:21:40Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-09-02T10:21:40Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-09-02T10:21:40Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-09-02T10:21:40Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-09-02T10:21:40Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-09-02T10:21:40Z", "vendor" => "MoreFun"} [2026-09-02 10:21:40.922] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-09-02 10:21:40.922] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-09-02 10:21:40.922] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-09-02 10:21:40.923] [DEBUG] QUERY OK source="parameter_templates" db=1.1ms idle=939.5ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-09-02 10:21:40.927] [DEBUG] QUERY OK source="tms_terminals" db=3.9ms idle=423.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-09-02 10:21:40.938] [DEBUG] QUERY OK source="parameter_template_values" db=10.1ms idle=4.5ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-09-02 10:21:40.945] [DEBUG] QUERY OK source="parameter_definitions" db=2.2ms queue=4.5ms idle=10.8ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-09-02 10:21:40.947] [DEBUG] QUERY OK source="pos_terminal" db=1.0ms idle=7.7ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-09-02 10:21:40.986] [DEBUG] QUERY OK source="pos_merchant" db=39.1ms idle=1.8ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [350] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-09-02 10:21:40.989] [DEBUG] QUERY OK db=1.6ms queue=1.4ms idle=486.9ms SELECT COALESCE(JSON_UNQUOTE(JSON_EXTRACT(mc.settings, '$.BASE_MERCHANT_NAME')), '') as base_merchant_name, COALESCE(u.name, '') as user_name, COALESCE(um.softpos_uuid, '') as softpos_uuid, COALESCE(mc.settings, '{}') as settings FROM user_metadata um LEFT JOIN merchant_configuration mc ON mc.user_id = um.user_id LEFT JOIN users u ON u.id = um.user_id WHERE um.merchant_refrence_number = ? LIMIT 1 ["667267350000000"] [2026-09-02 10:21:40.991] [INFO ] ParamsZipBuilder: Merchant info for merchantid=667267350000000 - business_name=Shubham003, QR_USE_SSL=, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-09-02 10:21:40.994] [DEBUG] QUERY OK source="pos_terminal_data" db=2.8ms idle=5.2ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["26735914"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-09-02 10:21:40.995] [DEBUG] QUERY OK source="address" db=0.6ms idle=4.2ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [639] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-09-02 10:21:40.995] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="667267350000000" [2026-09-02 10:21:41.002] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-09-02 10:21:41.077] [DEBUG] QUERY OK db=72.5ms queue=0.5ms idle=9.5ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "71fa73bdc1a9d54d864f9991a40eda7a706db69657be3cd0f7be597a825bccf6", 1380, 912, ~U[2026-09-02 10:21:41Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-09-02 10:21:41], ~N[2026-09-02 10:21:41]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-09-02 10:21:41.077] [INFO ] AutoPushService: Created push log 60500 for MF919 params.zip [2026-09-02 10:21:41.078] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4017/ota/98251226730001/params.zip", "requestId" => 1380, "type" => "tms_command", "version" => "1.0.0"} [2026-09-02 10:21:41.078] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-09-02 10:21:41.078] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-09-02 10:21:41.079] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms queue=0.2ms idle=83.5ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-09-02 10:21:41.090] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730001 at priv/ota/98251226730001/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-09-02 10:21:41.143] [DEBUG] QUERY OK db=48.8ms idle=16.9ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "ae0b966973e90b540e6db70b3f94812058ecc7815a9aa6f963f336ededb72650", 2883, 17947, ~U[2026-09-02 10:21:41Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-09-02 10:21:41], ~N[2026-09-02 10:21:41]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-09-02 10:21:41.143] [INFO ] AutoPushService: Created push log 60501 for MF919 l3config.zip (version: 1.0.1) [2026-09-02 10:21:41.143] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4017/ota/98251226730001/l3config.zip", "requestId" => 2883, "type" => "tms_command", "version" => "1.0.1"} [2026-09-02 10:21:41.143] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-09-02 10:21:41.143] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-09-02 10:21:41.145] [DEBUG] QUERY OK source="config_file_versions" db=1.4ms queue=0.1ms idle=64.1ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-09-02 10:21:41.146] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-09-02 10:21:41.147] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=3.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-09-02 10:21:41.147] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730001 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-09-02 10:21:41.153] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-09-02 10:21:41.153] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 10:21:41.153] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 10:21:41.155] [DEBUG] QUERY OK source="config_file_versions" db=1.6ms idle=8.3ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-09-02 10:21:41.156] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-09-02 10:21:41.156] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-09-02 10:21:41.158] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=1.5ms idle=8.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:140 [2026-09-02 10:21:41.159] [INFO ] Terminal updated: 98251226730001 [2026-09-02 10:21:41.160] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=3.6ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) ORDER BY p0.`updated_at` DESC LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_parameter_version/2, at: lib/tms_core/terminal_management/version_compliance_checker.ex:105 [2026-09-02 10:21:41.160] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms idle=1.4ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-09-02 10:21:41.162] [DEBUG] QUERY OK source="config_file_versions" db=1.5ms idle=1.0ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-09-02 10:21:41.162] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-09-02 10:21:41.185] [DEBUG] QUERY OK source="parameter_push_logs" db=22.4ms idle=2.4ms SELECT TRUE FROM `parameter_push_logs` AS p0 WHERE ((((p0.`terminal_id` = ?) AND (p0.`config_type` = ?)) AND (p0.`inserted_at` >= ?)) AND p0.`status` IN ('pending','sent')) LIMIT 1 [33, "application", ~N[2026-09-02 09:51:41]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-09-02 10:21:41.186] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-09-02 10:21:41.186] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-09-02 10:21:41.187] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=23.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-09-02 10:21:41.187] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms idle=1.5ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-09-02 10:21:41.187] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-09-02 10:21:41.188] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=0.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:1184 [2026-09-02 10:21:41.230] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms queue=40.9ms idle=1.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:21:41], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:174 [2026-09-02 10:21:41.231] [DEBUG] QUERY OK source="app_upgrade_device_statuses" db=0.7ms queue=0.1ms idle=42.0ms SELECT a0.`id`, a0.`config_id`, a0.`device_id`, a0.`device_sn`, a0.`vendor`, a0.`model`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`update_result`, a0.`status`, a0.`remark`, a0.`finish_time`, a0.`pushed_time`, a0.`retry_count`, a0.`inserted_at`, a0.`updated_at` FROM `app_upgrade_device_statuses` AS a0 WHERE ((a0.`device_sn` = ?) AND a0.`status` IN ('pending','pushed')) ["98251226730001"] ↳ TmsCore.TerminalManagement.AppUpgradeService.maybe_repush_for_device/1, at: lib/tms_core/terminal_management/app_upgrade_service.ex:148 [2026-09-02 10:21:41.369] [DEBUG] QUERY OK db=137.6ms idle=1.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-09-02T10:21:40Z", ~N[2026-09-02 10:21:41], ~N[2026-09-02 10:21:41]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:179 [2026-09-02 10:21:41.369] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 105778, oid: "organization_id", upload_time: "2026-09-02T10:21:40Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:21:41], updated_at: ~N[2026-09-02 10:21:41]} [2026-09-02 10:21:41.369] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-09-02T10:21:40Z", "value" => "online"} [2026-09-02 10:21:41.473] [DEBUG] QUERY OK db=102.6ms idle=6.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-09-02T10:21:40Z", "online", "status", 105778, ~N[2026-09-02 10:21:41], ~N[2026-09-02 10:21:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:21:41.473] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084102, itemkey: "status", value: "online", timestamp: "2026-09-02T10:21:40Z", message: "Terminal status update", status_log_id: 105778, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:21:41], updated_at: ~N[2026-09-02 10:21:41]}} [2026-09-02 10:21:41.473] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-09-02 10:21:41.474] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=104.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:21:41], 33] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:203 [2026-09-02 10:21:41.474] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-09-02T10:21:40Z", "value" => "34"} [2026-09-02 10:21:41.515] [DEBUG] QUERY OK db=40.6ms idle=1.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-09-02T10:21:40Z", "34", "battery", 105778, ~N[2026-09-02 10:21:41], ~N[2026-09-02 10:21:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:21:41.515] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084105, itemkey: "battery", value: "34", timestamp: "2026-09-02T10:21:40Z", message: "Battery level", status_log_id: 105778, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:21:41], updated_at: ~N[2026-09-02 10:21:41]}} [2026-09-02 10:21:41.516] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-09-02T10:21:40Z", "value" => "online"} [2026-09-02 10:21:41.575] [DEBUG] QUERY OK db=58.5ms idle=42.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-09-02T10:21:40Z", "online", "network", 105778, ~N[2026-09-02 10:21:41], ~N[2026-09-02 10:21:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:21:41.575] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084108, itemkey: "network", value: "online", timestamp: "2026-09-02T10:21:40Z", message: "Network connectivity", status_log_id: 105778, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:21:41], updated_at: ~N[2026-09-02 10:21:41]}} [2026-09-02 10:21:41.576] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-09-02 10:21:41.577] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=61.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:21:41], 33] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:203 [2026-09-02 10:21:41.577] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-09-02T10:21:40Z", "value" => "0"} [2026-09-02 10:21:41.625] [DEBUG] QUERY OK db=46.9ms idle=3.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-09-02T10:21:40Z", "0", "cpu", 105778, ~N[2026-09-02 10:21:41], ~N[2026-09-02 10:21:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:21:41.626] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084111, itemkey: "cpu", value: "0", timestamp: "2026-09-02T10:21:40Z", message: "CPU usage percentage", status_log_id: 105778, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:21:41], updated_at: ~N[2026-09-02 10:21:41]}} [2026-09-02 10:21:41.626] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-09-02T10:21:40Z", "value" => "1.0.0"} [2026-09-02 10:21:41.669] [DEBUG] QUERY OK db=42.7ms queue=0.1ms idle=49.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-09-02T10:21:40Z", "1.0.0", "parameter_config", 105778, ~N[2026-09-02 10:21:41], ~N[2026-09-02 10:21:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:21:41.670] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084114, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-09-02T10:21:40Z", message: "Current parameters version", status_log_id: 105778, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:21:41], updated_at: ~N[2026-09-02 10:21:41]}} [2026-09-02 10:21:41.671] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-09-02T10:21:40Z", "value" => "1.0.1"} [2026-09-02 10:21:41.732] [DEBUG] QUERY OK db=60.5ms idle=45.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-09-02T10:21:40Z", "1.0.1", "emv_config", 105778, ~N[2026-09-02 10:21:41], ~N[2026-09-02 10:21:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:21:41.732] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084116, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-09-02T10:21:40Z", message: "Current EMV config version", status_log_id: 105778, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:21:41], updated_at: ~N[2026-09-02 10:21:41]}} [2026-09-02 10:21:41.733] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-09-02T10:21:40Z", "value" => ""} [2026-09-02 10:21:41.802] [DEBUG] QUERY OK db=67.5ms queue=2.0ms idle=63.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-09-02T10:21:40Z", "keys_config", 105778, ~N[2026-09-02 10:21:41], ~N[2026-09-02 10:21:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:21:41.803] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084119, itemkey: "keys_config", value: nil, timestamp: "2026-09-02T10:21:40Z", message: "Current keys config version", status_log_id: 105778, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:21:41], updated_at: ~N[2026-09-02 10:21:41]}} [2026-09-02 10:21:41.803] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-09-02T10:21:40Z", "value" => "3.8.7.3"} [2026-09-02 10:21:41.849] [DEBUG] QUERY OK db=45.9ms idle=71.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-09-02T10:21:40Z", "3.8.7.3", "application", 105778, ~N[2026-09-02 10:21:41], ~N[2026-09-02 10:21:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:21:41.849] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084122, itemkey: "application", value: "3.8.7.3", timestamp: "2026-09-02T10:21:40Z", message: "Current application version", status_log_id: 105778, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:21:41], updated_at: ~N[2026-09-02 10:21:41]}} [2026-09-02 10:21:41.850] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=47.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:21:41], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:233 [2026-09-02 10:21:41.851] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.0","requestId":"280098","status":"success","timestamp":1788344500599,"type":"tms_response"} [2026-09-02 10:21:41.851] [INFO ] Processing file download response for device 98251226730001, request_id: 280098 [2026-09-02 10:21:41.851] [DEBUG] QUERY OK source="file_download_logs" db=0.4ms idle=1.8ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["280098"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:21:41.852] [INFO ] No file download log for request_id 280098; response not attached to a push [2026-09-02 10:21:41.852] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:21:41.852097Z], response: %{"message" => "Already up to date: 1.0.0", "requestId" => "280098", "status" => "success", "timestamp" => 1788344500599, "type" => "tms_response"}, request_id: "280098", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:21:41.852] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.0","requestId":"1380","status":"success","timestamp":1788344500620,"type":"tms_response"} [2026-09-02 10:21:41.852] [INFO ] Processing file download response for device 98251226730001, request_id: 1380 [2026-09-02 10:21:41.853] [DEBUG] QUERY OK source="file_download_logs" db=0.6ms idle=1.6ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["1380"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:21:41.853] [INFO ] No file download log for request_id 1380; response not attached to a push [2026-09-02 10:21:41.853] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:21:41.853519Z], response: %{"message" => "Already up to date: 1.0.0", "requestId" => "1380", "status" => "success", "timestamp" => 1788344500620, "type" => "tms_response"}, request_id: "1380", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:21:41.853] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.1","requestId":"2883","status":"success","timestamp":1788344500642,"type":"tms_response"} [2026-09-02 10:21:41.853] [INFO ] Processing file download response for device 98251226730001, request_id: 2883 [2026-09-02 10:21:41.854] [DEBUG] QUERY OK source="file_download_logs" db=0.8ms idle=1.9ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["2883"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:21:41.854] [INFO ] No file download log for request_id 2883; response not attached to a push [2026-09-02 10:21:41.854] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:21:41.854924Z], response: %{"message" => "Already up to date: 1.0.1", "requestId" => "2883", "status" => "success", "timestamp" => 1788344500642, "type" => "tms_response"}, request_id: "2883", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:21:41.855] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.1","requestId":"280162","status":"success","timestamp":1788344500697,"type":"tms_response"} [2026-09-02 10:21:41.855] [INFO ] Processing file download response for device 98251226730001, request_id: 280162 [2026-09-02 10:21:41.855] [DEBUG] QUERY OK source="file_download_logs" db=0.3ms idle=2.0ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["280162"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:21:41.855] [INFO ] No file download log for request_id 280162; response not attached to a push [2026-09-02 10:21:41.855] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:21:41.855885Z], response: %{"message" => "Already up to date: 1.0.1", "requestId" => "280162", "status" => "success", "timestamp" => 1788344500697, "type" => "tms_response"}, request_id: "280162", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:21:41.856] [WARN ] Unexpected async result [2026-09-02 10:21:41.856] [WARN ] Unexpected async result [2026-09-02 10:21:44.522] [INFO ] Received status update for terminal 98251226730001 [2026-09-02 10:21:44.522] [INFO ] Incoming JSON payload: {"oid":"7c51faf4-d5cf-474c-bd90-1fc63f8f8518","sn":"98251226730001","uploadTime":"2026-09-02T10:21:43Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-09-02T10:21:43Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-09-02T10:21:43Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-09-02T10:21:43Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-09-02T10:21:43Z"},{"itemkey":"ram_free_mb","value":"849","timestamp":"2026-09-02T10:21:43Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-09-02T10:21:43Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-09-02T10:21:43Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-09-02T10:21:43Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-09-02T10:21:43Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-09-02T10:21:43Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-09-02T10:21:43Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-09-02T10:21:43Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-09-02T10:21:43Z"},{"itemkey":"data_usage_mb","value":"39","timestamp":"2026-09-02T10:21:43Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-09-02T10:21:43Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-09-02 10:21:44.525] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "7c51faf4-d5cf-474c-bd90-1fc63f8f8518", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-09-02T10:21:43Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-09-02T10:21:43Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-09-02T10:21:43Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-09-02T10:21:43Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-09-02T10:21:43Z", "value" => "849"}, %{"itemkey" => "network_type", "timestamp" => "2026-09-02T10:21:43Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-09-02T10:21:43Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-09-02T10:21:43Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-09-02T10:21:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-09-02T10:21:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-09-02T10:21:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-09-02T10:21:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-09-02T10:21:43Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-09-02T10:21:43Z", "value" => "39"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-09-02T10:21:43Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-09-02T10:21:43Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-09-02T10:21:43Z", "vendor" => "morefun"} [2026-09-02 10:21:44.525] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-09-02 10:21:44.526] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-09-02 10:21:44.526] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-09-02 10:21:44.529] [DEBUG] QUERY OK source="parameter_templates" db=2.2ms queue=0.1ms idle=1026.9ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-09-02 10:21:44.530] [DEBUG] QUERY OK source="parameter_templates" db=1.3ms idle=527.6ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-09-02 10:21:44.530] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-09-02 10:21:44.533] [DEBUG] QUERY OK source="tms_terminals" db=1.9ms idle=1.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:140 [2026-09-02 10:21:44.622] [DEBUG] QUERY OK source="tms_terminals" db=48.3ms queue=40.4ms idle=2.5ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-09-02 10:21:44], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-09-02 10:21:44.622] [INFO ] Terminal updated: 98251226730001 [2026-09-02 10:21:44.622] [DEBUG] Processing terminal event: terminal_updated [2026-09-02 10:21:44.622] [INFO ] Event published: terminal_updated [2026-09-02 10:21:44.622] [INFO ] Processing terminal_updated event for terminal 33 [2026-09-02 10:21:44.622] [INFO ] Changed fields: [:vendor, :model] [2026-09-02 10:21:44.625] [DEBUG] QUERY OK source="terminal_group_memberships" db=1.0ms queue=0.2ms idle=91.2ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-09-02 10:21:44], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-09-02 10:21:44.627] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=0.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-09-02 10:21:44.630] [DEBUG] QUERY OK source="terminal_group_rules" db=2.4ms idle=0.2ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-09-02 10:21:44.630] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-09-02 10:21:44.687] [DEBUG] QUERY OK source="tms_terminals" db=61.0ms queue=0.7ms idle=3.7ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "kiosk_launcher", "morefun", nil, nil, nil, nil, ~N[2026-09-02 10:21:44], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:164 [2026-09-02 10:21:44.687] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-09-02 10:21:44.691] [DEBUG] QUERY OK source="tms_terminals" db=3.0ms idle=57.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:1184 [2026-09-02 10:21:44.730] [DEBUG] QUERY OK source="tms_terminals" db=38.6ms queue=0.3ms idle=3.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:21:44], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:174 [2026-09-02 10:21:44.731] [DEBUG] QUERY OK source="app_upgrade_device_statuses" db=0.5ms queue=0.2ms idle=39.8ms SELECT a0.`id`, a0.`config_id`, a0.`device_id`, a0.`device_sn`, a0.`vendor`, a0.`model`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`update_result`, a0.`status`, a0.`remark`, a0.`finish_time`, a0.`pushed_time`, a0.`retry_count`, a0.`inserted_at`, a0.`updated_at` FROM `app_upgrade_device_statuses` AS a0 WHERE ((a0.`device_sn` = ?) AND a0.`status` IN ('pending','pushed')) ["98251226730001"] ↳ TmsCore.TerminalManagement.AppUpgradeService.maybe_repush_for_device/1, at: lib/tms_core/terminal_management/app_upgrade_service.ex:148 [2026-09-02 10:21:44.782] [DEBUG] QUERY OK db=50.6ms idle=1.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "7c51faf4-d5cf-474c-bd90-1fc63f8f8518", "2026-09-02T10:21:43Z", ~N[2026-09-02 10:21:44], ~N[2026-09-02 10:21:44]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:179 [2026-09-02 10:21:44.782] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 105780, oid: "7c51faf4-d5cf-474c-bd90-1fc63f8f8518", upload_time: "2026-09-02T10:21:43Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:21:44], updated_at: ~N[2026-09-02 10:21:44]} [2026-09-02 10:21:44.783] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-09-02T10:21:43Z", "value" => "morefun"} [2026-09-02 10:21:44.864] [DEBUG] QUERY OK db=39.1ms queue=41.5ms idle=51.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:21:43Z", "morefun", "vendor", 105780, ~N[2026-09-02 10:21:44], ~N[2026-09-02 10:21:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:21:44.864] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084126, itemkey: "vendor", value: "morefun", timestamp: "2026-09-02T10:21:43Z", message: nil, status_log_id: 105780, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:21:44], updated_at: ~N[2026-09-02 10:21:44]}} [2026-09-02 10:21:44.864] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-09-02T10:21:43Z", "value" => "kiosk_launcher"} [2026-09-02 10:21:44.934] [DEBUG] QUERY OK db=69.5ms queue=0.3ms idle=82.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:21:43Z", "kiosk_launcher", "model", 105780, ~N[2026-09-02 10:21:44], ~N[2026-09-02 10:21:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:21:44.934] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084129, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-09-02T10:21:43Z", message: nil, status_log_id: 105780, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:21:44], updated_at: ~N[2026-09-02 10:21:44]}} [2026-09-02 10:21:44.935] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-09-02T10:21:43Z", "value" => "1.0"} [2026-09-02 10:21:44.985] [DEBUG] QUERY OK db=49.8ms idle=71.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:21:43Z", "1.0", "app_version", 105780, ~N[2026-09-02 10:21:44], ~N[2026-09-02 10:21:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:21:44.985] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084131, itemkey: "app_version", value: "1.0", timestamp: "2026-09-02T10:21:43Z", message: nil, status_log_id: 105780, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:21:44], updated_at: ~N[2026-09-02 10:21:44]}} [2026-09-02 10:21:44.985] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-09-02T10:21:43Z", "value" => "13"} [2026-09-02 10:21:45.041] [DEBUG] QUERY OK db=55.4ms idle=51.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:21:43Z", "13", "android_version", 105780, ~N[2026-09-02 10:21:44], ~N[2026-09-02 10:21:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:21:45.041] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084134, itemkey: "android_version", value: "13", timestamp: "2026-09-02T10:21:43Z", message: nil, status_log_id: 105780, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:21:44], updated_at: ~N[2026-09-02 10:21:44]}} [2026-09-02 10:21:45.041] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-09-02T10:21:43Z", "value" => "849"} [2026-09-02 10:21:45.099] [DEBUG] QUERY OK db=57.2ms idle=37.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:21:43Z", "849", "ram_free_mb", 105780, ~N[2026-09-02 10:21:45], ~N[2026-09-02 10:21:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:21:45.099] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084137, itemkey: "ram_free_mb", value: "849", timestamp: "2026-09-02T10:21:43Z", message: nil, status_log_id: 105780, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:21:45], updated_at: ~N[2026-09-02 10:21:45]}} [2026-09-02 10:21:45.099] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-09-02T10:21:43Z", "value" => "WIFI"} [2026-09-02 10:21:45.171] [DEBUG] QUERY OK db=71.3ms idle=58.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:21:43Z", "WIFI", "network_type", 105780, ~N[2026-09-02 10:21:45], ~N[2026-09-02 10:21:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:21:45.172] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084140, itemkey: "network_type", value: "WIFI", timestamp: "2026-09-02T10:21:43Z", message: nil, status_log_id: 105780, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:21:45], updated_at: ~N[2026-09-02 10:21:45]}} [2026-09-02 10:21:45.172] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-09-02T10:21:43Z", "value" => "true"} [2026-09-02 10:21:45.244] [DEBUG] QUERY OK db=69.8ms queue=0.4ms idle=74.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:21:43Z", "true", "kiosk_active", 105780, ~N[2026-09-02 10:21:45], ~N[2026-09-02 10:21:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:21:45.248] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084143, itemkey: "kiosk_active", value: "true", timestamp: "2026-09-02T10:21:43Z", message: nil, status_log_id: 105780, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:21:45], updated_at: ~N[2026-09-02 10:21:45]}} [2026-09-02 10:21:45.248] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-09-02T10:21:43Z", "value" => ""} [2026-09-02 10:21:45.322] [DEBUG] QUERY OK db=73.0ms queue=1.2ms idle=76.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-09-02T10:21:43Z", "sim_operator", 105780, ~N[2026-09-02 10:21:45], ~N[2026-09-02 10:21:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:21:45.323] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084146, itemkey: "sim_operator", value: nil, timestamp: "2026-09-02T10:21:43Z", message: nil, status_log_id: 105780, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:21:45], updated_at: ~N[2026-09-02 10:21:45]}} [2026-09-02 10:21:45.323] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-09-02T10:21:43Z", "value" => "UNKNOWN"} [2026-09-02 10:21:45.377] [DEBUG] QUERY OK db=53.1ms idle=79.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:21:43Z", "UNKNOWN", "sim_number", 105780, ~N[2026-09-02 10:21:45], ~N[2026-09-02 10:21:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:21:45.377] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084149, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-09-02T10:21:43Z", message: nil, status_log_id: 105780, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:21:45], updated_at: ~N[2026-09-02 10:21:45]}} [2026-09-02 10:21:45.377] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-09-02T10:21:43Z", "value" => "UNKNOWN"} [2026-09-02 10:21:45.483] [DEBUG] QUERY OK db=106.1ms idle=54.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:21:43Z", "UNKNOWN", "sim_iccid", 105780, ~N[2026-09-02 10:21:45], ~N[2026-09-02 10:21:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:21:45.484] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084152, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-09-02T10:21:43Z", message: nil, status_log_id: 105780, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:21:45], updated_at: ~N[2026-09-02 10:21:45]}} [2026-09-02 10:21:45.484] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-09-02T10:21:43Z", "value" => "UNKNOWN"} [2026-09-02 10:21:45.654] [DEBUG] QUERY OK db=169.8ms idle=107.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:21:43Z", "UNKNOWN", "sim_imsi", 105780, ~N[2026-09-02 10:21:45], ~N[2026-09-02 10:21:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:21:45.654] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084154, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-09-02T10:21:43Z", message: nil, status_log_id: 105780, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:21:45], updated_at: ~N[2026-09-02 10:21:45]}} [2026-09-02 10:21:45.655] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-09-02T10:21:43Z", "value" => "UNKNOWN"} [2026-09-02 10:21:45.772] [DEBUG] QUERY OK db=111.1ms queue=0.1ms idle=177.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:21:43Z", "UNKNOWN", "sim_iccid2", 105780, ~N[2026-09-02 10:21:45], ~N[2026-09-02 10:21:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:21:45.773] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084159, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-09-02T10:21:43Z", message: nil, status_log_id: 105780, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:21:45], updated_at: ~N[2026-09-02 10:21:45]}} [2026-09-02 10:21:45.773] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-09-02T10:21:43Z", "value" => "UNKNOWN"} [2026-09-02 10:21:45.853] [DEBUG] QUERY OK db=80.3ms idle=118.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:21:43Z", "UNKNOWN", "sim_imsi2", 105780, ~N[2026-09-02 10:21:45], ~N[2026-09-02 10:21:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:21:45.854] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084161, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-09-02T10:21:43Z", message: nil, status_log_id: 105780, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:21:45], updated_at: ~N[2026-09-02 10:21:45]}} [2026-09-02 10:21:45.854] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-09-02T10:21:43Z", "value" => "39"} [2026-09-02 10:21:45.970] [DEBUG] QUERY OK db=116.0ms idle=81.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:21:43Z", "39", "data_usage_mb", 105780, ~N[2026-09-02 10:21:45], ~N[2026-09-02 10:21:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:21:45.970] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084165, itemkey: "data_usage_mb", value: "39", timestamp: "2026-09-02T10:21:43Z", message: nil, status_log_id: 105780, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:21:45], updated_at: ~N[2026-09-02 10:21:45]}} [2026-09-02 10:21:45.971] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-09-02T10:21:43Z", "value" => "0"} [2026-09-02 10:21:46.030] [DEBUG] QUERY OK db=56.9ms queue=1.7ms idle=117.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:21:43Z", "0", "mobile_data_mb", 105780, ~N[2026-09-02 10:21:45], ~N[2026-09-02 10:21:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:21:46.030] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084167, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-09-02T10:21:43Z", message: nil, status_log_id: 105780, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:21:45], updated_at: ~N[2026-09-02 10:21:45]}} [2026-09-02 10:21:46.032] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-09-02T10:21:43Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-09-02 10:21:46.173] [DEBUG] QUERY OK db=138.8ms idle=24.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:21:43Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 105780, ~N[2026-09-02 10:21:46], ~N[2026-09-02 10:21:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:21:46.173] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084170, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-09-02T10:21:43Z", message: nil, status_log_id: 105780, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:21:46], updated_at: ~N[2026-09-02 10:21:46]}} [2026-09-02 10:21:59.132] [INFO ] [PayoutTransmissionWorker] Starting payout for mis_id=328 [2026-09-02 10:21:59.135] [DEBUG] QUERY OK source="settlement_mis" db=2.5ms idle=76.6ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 WHERE (s0.`id` = ?) [328] ↳ SettlementCore.Workers.PayoutTransmissionWorker.perform/1, at: lib/settlement_core/workers/payout_transmission_worker.ex:41 [2026-09-02 10:21:59.138] [DEBUG] QUERY OK source="payout_batches" db=0.7ms queue=1.9ms idle=3.3ms SELECT p0.`id`, p0.`settlement_mis_id`, p0.`payout_date`, p0.`batch_type`, p0.`total_merchants`, p0.`total_items`, p0.`total_amount`, p0.`currency`, p0.`file_path`, p0.`file_name`, p0.`encryption_method`, p0.`batch_reference`, p0.`encrypted_file_path`, p0.`file_hash`, p0.`encryption_key_ref`, p0.`generated_by`, p0.`generated_at`, p0.`transmission_method`, p0.`status`, p0.`transmitted_at`, p0.`transmission_reference`, p0.`bank_confirmation_ref`, p0.`failure_reason`, p0.`confirmed_at`, p0.`confirmed_item_count`, p0.`rejected_item_count`, p0.`inserted_at`, p0.`updated_at` FROM `payout_batches` AS p0 WHERE (p0.`settlement_mis_id` = ?) [328] ↳ SettlementCore.PayoutGenerator.generate_for_mis/1, at: lib/settlement_core/payout_generator.ex:43 [2026-09-02 10:21:59.138] [INFO ] [PayoutGenerator] Batch already exists for mis_id=328 batch_id=180 [2026-09-02 10:21:59.141] [DEBUG] QUERY OK source="settlement_mis_items" db=2.7ms idle=3.4ms SELECT count(s0.`id`) FROM `settlement_mis_items` AS s0 WHERE ((s0.`settlement_mis_id` = ?) AND (s0.`mpr_sent` != TRUE)) [328] ↳ SettlementCore.Workers.PayoutTransmissionWorker.enqueue_mpr_if_needed/1, at: lib/settlement_core/workers/payout_transmission_worker.ex:77 [2026-09-02 10:21:59.142] [INFO ] [PayoutTransmissionWorker] MPR already sent for mis_id=328, skipping enqueue [2026-09-02 10:21:59.142] [INFO ] [PayoutTransmitter] Transmitting batch_id=180 method=SFTP [2026-09-02 10:21:59.143] [DEBUG] QUERY OK source="payout_items" db=1.2ms idle=3.7ms SELECT p0.`id`, p0.`payout_batch_id`, p0.`settlement_mis_id`, p0.`settlement_date`, p0.`merchant_mid`, p0.`merchant_id`, p0.`merchant_name`, p0.`merchant_ref_number`, p0.`bank_name`, p0.`iban`, p0.`account_number`, p0.`bank_code`, p0.`currency`, p0.`gross_amount`, p0.`total_deductions`, p0.`payout_amount`, p0.`transaction_count`, p0.`net_settlement_amount`, p0.`total_adjustments_credit`, p0.`total_adjustments_debit`, p0.`final_payout_amount`, p0.`total_gross_amount`, p0.`total_mdr_amount`, p0.`total_vat_amount`, p0.`status`, p0.`bank_transfer_ref`, p0.`confirmed_at`, p0.`rejection_reason`, p0.`rejected_at`, p0.`re_initiated_at`, p0.`re_initiated_batch_id`, p0.`inserted_at`, p0.`updated_at` FROM `payout_items` AS p0 WHERE (p0.`payout_batch_id` = ?) ORDER BY p0.`merchant_mid` [180] ↳ SettlementCore.PayoutGenerator.generate_payout_csv/1, at: lib/settlement_core/payout_generator.ex:85 [2026-09-02 10:21:59.148] [DEBUG] QUERY OK source="tid_masters" db=1.6ms queue=2.6ms idle=2.1ms SELECT t0.`mid`, a3.`line1`, a3.`country`, t0.`registered_email` FROM `tid_masters` AS t0 LEFT OUTER JOIN `brands` AS b1 ON b1.`merchant_reference_id` COLLATE utf8mb4_unicode_ci = t0.`merchant_ref_number` COLLATE utf8mb4_unicode_ci LEFT OUTER JOIN `stores` AS s2 ON s2.`brand_id` = b1.`id` LEFT OUTER JOIN `addresses` AS a3 ON a3.`id` = s2.`address_id` WHERE (t0.`mid` IN (?,?,?) OR t0.`merchant_ref_number` IN (?,?,?)) ["419926360000000", "425590250000000", "E2E_M3_TEST001", "419926360000000", "425590250000000", "E2E_M3_TEST001"] ↳ SettlementCore.PayoutGenerator.prefetch_merchant_details/1, at: lib/settlement_core/payout_generator.ex:375 [2026-09-02 10:21:59.150] [INFO ] [FileEncryptor] Encrypted /tmp/payout_files_sunny/payout_2026-09-01_180.csv → /tmp/payout_files_sunny/payout_2026-09-01_180.csv.enc key_ref=default_v1 [2026-09-02 10:21:59.150] [INFO ] [Bank.SftpClient] Uploading /tmp/payout_files_sunny/payout_2026-09-01_180.csv.enc → sftp://localhost/incoming/payout_2026-09-01_180.csv.enc [2026-09-02 10:21:59.177] [DEBUG] client will use strict KEX ordering [2026-09-02 10:21:59.298] [ERROR] Erlang SSH :client version: 5.1.4.3 (OpenSSL 3.0.13 30 Jan 2024). Address: 127.0.0.1:44408 Peer server version: ~c"SSH-2.0-OpenSSH_9.6p1 Ubuntu-3ubuntu13.18" Peer address: 127.0.0.1:22 badarg [2026-09-02 10:21:59.301] [INFO ] Erlang SSH :client version: 5.1.4.3 (OpenSSL 3.0.13 30 Jan 2024). Address: 127.0.0.1:44408 Peer server version: ~c"SSH-2.0-OpenSSH_9.6p1 Ubuntu-3ubuntu13.18" Peer address: 127.0.0.1:22 Disconnects with code = 11 [RFC4253 11.1]: Internal error State = {userauth,client} Module = ssh_connection_handler, Line = 1424. Details: Reason: badarg [2026-09-02 10:21:59.301] [ERROR] GenStateMachine #PID<0.2041.0> terminating ** (ArgumentError) errors were found at the given arguments: * 1st argument: not valid character data (an iodata term) (stdlib 5.2.3.2) unicode.erl:895: :unicode.characters_to_binary({:error, :enotsup}) (ssh 5.1.4.3) ssh_auth.erl:121: :ssh_auth.password_msg/1 (ssh 5.1.4.3) ssh_auth.erl:59: :ssh_auth.userauth_request_msg/1 (ssh 5.1.4.3) ssh_fsm_userauth_client.erl:92: :ssh_fsm_userauth_client.handle_event/4 (stdlib 5.2.3.2) gen_statem.erl:1397: :gen_statem.loop_state_callback/11 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 State: [data: [{~c"State", {:data, #PID<0.2037.0>, ~c"payout", {:connection, [], #Reference<0.2372382238.861011970.254424>, 0, :undefined, %{pref_public_key_algs: [:"ssh-ed25519", :"ssh-ed448", :"ecdsa-sha2-nistp521", :"ecdsa-sha2-nistp384", :"ecdsa-sha2-nistp256", :"rsa-sha2-512", :"rsa-sha2-256"], send_ext_info: true, user_interaction: true, key_cb_options: [silently_accept_hosts: true, user: ~c"payout", connect_timeout: 30000], save_accepted_host: true, user_dir_fun: :undefined, disconnectfun: #Function<45.126434157/1 in :ssh_options.default/1>, dh_gex_limits: {1024, 6144, 8192}, vsn: {2, 0}, tstflg: [], ecdsa_pass_phrase: :"***", modify_algorithms: :undefined, password: :"***", user_dir: false, dsa_pass_phrase: :"***", silently_accept_hosts: true, rekey_limit: {3600000, 1024000000}, unexpectedfun: #Function<47.126434157/2 in :ssh_options.default/1>, auth_methods: ~c"publickey,keyboard-interactive,password", id_string: ~c"Erlang/5.1.4.3", rsa_pass_phrase: :"***", key_cb: {:ssh_file, []}, max_random_length_padding: 15, transport: {:tcp, :gen_tcp, :tcp_closed}, user: ~c"payout", connect_timeout: 30000, recv_ext_info: true, ssh_msg_debug_fun: #Function<49.126434157/4 in :ssh_options.default/1>, quiet_mode: false, internal_options: %{connection_sup: #PID<0.2040.0>, negotiation_timeout: 30000, user_pid: #PID<0.2037.0>}, max_log_item_len: 500, profile: :default, preferred_algorithms: [kex: [:"curve25519-sha256", :"curve25519-sha256@libssh.org", ...], public_key: [:"ssh-ed25519", ...], cipher: [...], ...], socket_options: [], idle_time: :infinity, keyboard_interact_fun: :undefined}, 425984, 65536, :undefined, #PID<0.2040.0>}, 0, :tcp, :gen_tcp, :tcp_closed, {:ssh, :client, {~c"127.0.0.1", {{127, 0, 0, 1}, 22}}, {{127, 0, 0, 1}, 44408}, {2, 0}, {2, 0}, ~c"SSH-2.0-Erlang/5.1.4.3", ~c"SSH-2.0-OpenSSH_9.6p1 Ubuntu-3ubuntu13.18", :"****", :"****", true, true, true, {:alg, :"curve25519-sha256", :"ssh-ed25519", :AEAD_AES_256_GCM, :AEAD_AES_256_GCM, :AEAD_AES_256_GCM, :AEAD_AES_256_GCM, :none, :none, :none, :none, true, true, true}, :AEAD_AES_256_GCM, :"****", :"****", :AEAD_AES_256_GCM, :"****", :"****", :AEAD_AES_256_GCM, :aes_256_gcm, :"****", 16, :"****", :AEAD_AES_256_GCM, :aes_256_gcm, :"****", 16, :"****", :none, :"****", :none, :"****", :none, :none, true, ...}, #Port<0.43>, :"****", :"****", "", :undefined, :"****", 0, [], :"****"}}]] Callback mode: :handle_event_function Postponed events: [] Last event: {:internal, {:ssh_msg_userauth_failure, ~c"publickey,password", false}} Queued events: [] State: [data: [{~c"State", {:data, #PID<0.2037.0>, ~c"payout", {:connection, [], #Reference<0.2372382238.861011970.254424>, 0, :undefined, %{pref_public_key_algs: [:"ssh-ed25519", :"ssh-ed448", :"ecdsa-sha2-nistp521", :"ecdsa-sha2-nistp384", :"ecdsa-sha2-nistp256", :"rsa-sha2-512", :"rsa-sha2-256"], send_ext_info: true, user_interaction: true, key_cb_options: [silently_accept_hosts: true, user: ~c"payout", connect_timeout: 30000], save_accepted_host: true, user_dir_fun: :undefined, disconnectfun: #Function<45.126434157/1 in :ssh_options.default/1>, dh_gex_limits: {1024, 6144, 8192}, vsn: {2, 0}, tstflg: [], ecdsa_pass_phrase: :"***", modify_algorithms: :undefined, password: :"***", user_dir: false, dsa_pass_phrase: :"***", silently_accept_hosts: true, rekey_limit: {3600000, 1024000000}, unexpectedfun: #Function<47.126434157/2 in :ssh_options.default/1>, auth_methods: ~c"publickey,keyboard-interactive,password", id_string: ~c"Erlang/5.1.4.3", rsa_pass_phrase: :"***", key_cb: {:ssh_file, []}, max_random_length_padding: 15, transport: {:tcp, :gen_tcp, :tcp_closed}, user: ~c"payout", connect_timeout: 30000, recv_ext_info: true, ssh_msg_debug_fun: #Function<49.126434157/4 in :ssh_options.default/1>, quiet_mode: false, internal_options: %{connection_sup: #PID<0.2040.0>, negotiation_timeout: 30000, user_pid: #PID<0.2037.0>}, max_log_item_len: 500, profile: :default, preferred_algorithms: [kex: [:"curve25519-sha256", :"curve25519-sha256@libssh.org", ...], public_key: [:"ssh-ed25519", ...], cipher: [...], ...], socket_options: [], idle_time: :infinity, keyboard_interact_fun: :undefined}, 425984, 65536, :undefined, #PID<0.2040.0>}, 0, :tcp, :gen_tcp, :tcp_closed, {:ssh, :client, {~c"127.0.0.1", {{127, 0, 0, 1}, 22}}, {{127, 0, 0, 1}, 44408}, {2, 0}, {2, 0}, ~c"SSH-2.0-Erlang/5.1.4.3", ~c"SSH-2.0-OpenSSH_9.6p1 Ubuntu-3ubuntu13.18", :"****", :"****", true, true, true, {:alg, :"curve25519-sha256", :"ssh-ed25519", :AEAD_AES_256_GCM, :AEAD_AES_256_GCM, :AEAD_AES_256_GCM, :AEAD_AES_256_GCM, :none, :none, :none, :none, true, true, true}, :AEAD_AES_256_GCM, :"****", :"****", :AEAD_AES_256_GCM, :"****", :"****", :AEAD_AES_256_GCM, :aes_256_gcm, :"****", 16, :"****", :AEAD_AES_256_GCM, :aes_256_gcm, :"****", 16, :"****", :none, :"****", :none, :"****", :none, :none, true, ...}, #Port<0.43>, :"****", :"****", "", :undefined, :"****", 0, [], :"****"}}]] [2026-09-02 10:21:59.308] [ERROR] [Bank.SftpClient] Upload failed: {:badarg, [{:unicode, :characters_to_binary, [error: :enotsup], [file: ~c"unicode.erl", line: 895, error_info: %{module: :erl_stdlib_errors}]}, {:ssh_auth, :password_msg, 1, [file: ~c"ssh_auth.erl", line: 121]}, {:ssh_auth, :userauth_request_msg, 1, [file: ~c"ssh_auth.erl", line: 59]}, {:ssh_fsm_userauth_client, :handle_event, 4, [file: ~c"ssh_fsm_userauth_client.erl", line: 92]}, {:gen_statem, :loop_state_callback, 11, [file: ~c"gen_statem.erl", line: 1397]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 241]}]} [2026-09-02 10:21:59.309] [ERROR] [PayoutTransmitter] Transmission failed batch_id=180: {:badarg, [{:unicode, :characters_to_binary, [error: :enotsup], [file: ~c"unicode.erl", line: 895, error_info: %{module: :erl_stdlib_errors}]}, {:ssh_auth, :password_msg, 1, [file: ~c"ssh_auth.erl", line: 121]}, {:ssh_auth, :userauth_request_msg, 1, [file: ~c"ssh_auth.erl", line: 59]}, {:ssh_fsm_userauth_client, :handle_event, 4, [file: ~c"ssh_fsm_userauth_client.erl", line: 92]}, {:gen_statem, :loop_state_callback, 11, [file: ~c"gen_statem.erl", line: 1397]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 241]}]} [2026-09-02 10:21:59.315] [DEBUG] QUERY ERROR source="payout_batches" db=0.5ms idle=170.9ms UPDATE `payout_batches` SET `status` = ?, `failure_reason` = ?, `updated_at` = ? WHERE `id` = ? ["failed", "{:badarg, [{:unicode, :characters_to_binary, [error: :enotsup], [file: ~c\"unicode.erl\", line: 895, error_info: %{module: :erl_stdlib_errors}]}, {:ssh_auth, :password_msg, 1, [file: ~c\"ssh_auth.erl\", line: 121]}, {:ssh_auth, :userauth_request_msg, 1, [file: ~c\"ssh_auth.erl\", line: 59]}, {:ssh_fsm_userauth_client, :handle_event, 4, [file: ~c\"ssh_fsm_userauth_client.erl\", line: 92]}, {:gen_statem, :loop_state_callback, 11, [file: ~c\"gen_statem.erl\", line: 1397]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c\"proc_lib.erl\", line: 241]}]}", ~N[2026-09-02 10:21:59], 180] ↳ anonymous fn/2 in SettlementCore.Bank.PayoutTransmitter.transmit/1, at: lib/settlement_core/bank/payout_transmitter.ex:48 [2026-09-02 10:23:58.892] [INFO ] Received status update for terminal 61250415798001 [2026-09-02 10:23:58.892] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61250415798001","vendor":"MoreFun","model":"SR600","uploadTime":"1737872-10-18T10:57:01Z","org.device":[{"itemkey":"status","value":"online","timestamp":"1737872-10-18T10:57:01Z","message":"Device Connected"}]} [2026-09-02 10:23:58.894] [INFO ] Decoded JSON: %{"model" => "SR600", "oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "status", "message" => "Device Connected", "timestamp" => "1737872-10-18T10:57:01Z", "value" => "online"}], "sn" => "61250415798001", "uploadTime" => "1737872-10-18T10:57:01Z", "vendor" => "MoreFun"} [2026-09-02 10:23:58.894] [INFO ] Extracted versions for 61250415798001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-09-02 10:23:58.894] [INFO ] Detected missing versions for 61250415798001, triggering auto-push [2026-09-02 10:23:58.894] [INFO ] AutoPushService: Triggering auto-push for 61250415798001 (MoreFun SR600) - missing version [2026-09-02 10:23:58.899] [DEBUG] QUERY OK source="parameter_templates" db=4.3ms idle=331.6ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["MoreFun", "SR600"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-09-02 10:23:58.900] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.3ms idle=171.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-09-02 10:23:58.902] [DEBUG] QUERY OK source="parameter_template_values" db=1.3ms idle=1.4ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [7] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-09-02 10:23:58.943] [DEBUG] QUERY OK db=39.0ms queue=1.8ms idle=1.8ms INSERT INTO `parameter_push_logs` (`status`,`request_id`,`log_time`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", 261, ~U[2026-09-02 10:23:58Z], 1, "parameter", "SR600", "MoreFun", %{}, "full", 7, "missing_version", "1.0.0", ~N[2026-09-02 10:23:58], ~N[2026-09-02 10:23:58]] ↳ TmsCore.TerminalManagement.AutoPushService.push_generic_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:235 [2026-09-02 10:23:58.944] [INFO ] AutoPushService: Created push log 60503 for parameters (template: 7) [2026-09-02 10:23:58.944] [INFO ] SR600 MQTT Command: %{"command" => "file_download", "merchant_config" => "true", "request_id" => 261, "retry_count" => "3", "version" => "1.0.0"} [2026-09-02 10:23:58.944] [INFO ] AutoPushService: Sending parameter push to 61250415798001 on topic: /ota/pFppbioOCKlo5c8E/61250415798001/update [2026-09-02 10:23:58.945] [INFO ] AutoPushService: Parameter push sent successfully to 61250415798001 [2026-09-02 10:23:59.019] [DEBUG] QUERY OK db=71.7ms queue=0.1ms idle=45.4ms INSERT INTO `parameter_push_logs` (`status`,`request_id`,`log_time`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?) ["pending", 325, ~U[2026-09-02 10:23:58Z], 1, "emv_config", "SR600", "MoreFun", "full", "missing_version", ~N[2026-09-02 10:23:58], ~N[2026-09-02 10:23:58]] ↳ TmsCore.TerminalManagement.AutoPushService.push_regular_config/5, at: lib/tms_core/terminal_management/auto_push_service.ex:427 [2026-09-02 10:23:59.019] [INFO ] AutoPushService: Created push log for emv_config [2026-09-02 10:23:59.019] [INFO ] SR600 MQTT Command: %{"command" => "file_download", "merchant_config" => "true", "request_id" => 325, "retry_count" => "3"} [2026-09-02 10:23:59.020] [INFO ] AutoPushService: Sending emv_config push to 61250415798001 on topic: /ota/pFppbioOCKlo5c8E/61250415798001/update [2026-09-02 10:23:59.021] [INFO ] AutoPushService: emv_config push sent successfully to 61250415798001 [2026-09-02 10:23:59.022] [DEBUG] QUERY OK source="config_file_versions" db=1.0ms queue=0.2ms idle=78.1ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "SR600"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-09-02 10:23:59.022] [INFO ] KeysConfigService: Generating keys.json for 61250415798001 (SR600) [2026-09-02 10:23:59.024] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=3.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-09-02 10:23:59.024] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 61250415798001 with params: %{"kekKcv" => "112233", "model" => "SR600", "serialNumber" => "61250415798001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-09-02 10:23:59.027] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-09-02 10:23:59.027] [ERROR] KeysConfigService: Failed to generate keys for 61250415798001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 10:23:59.027] [ERROR] AutoPushService: Failed to generate keys.json for 61250415798001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 10:23:59.106] [DEBUG] QUERY OK db=77.6ms idle=5.5ms INSERT INTO `parameter_push_logs` (`status`,`request_id`,`log_time`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?) ["pending", 3043, ~U[2026-09-02 10:23:59Z], 1, "application", "SR600", "MoreFun", "full", "missing_version", ~N[2026-09-02 10:23:59], ~N[2026-09-02 10:23:59]] ↳ TmsCore.TerminalManagement.AutoPushService.push_regular_config/5, at: lib/tms_core/terminal_management/auto_push_service.ex:427 [2026-09-02 10:23:59.106] [INFO ] AutoPushService: Created push log for application [2026-09-02 10:23:59.107] [INFO ] SR600 MQTT Command: %{"command" => "file_download", "merchant_config" => "true", "request_id" => 3043, "retry_count" => "3"} [2026-09-02 10:23:59.107] [INFO ] AutoPushService: Sending application push to 61250415798001 on topic: /ota/pFppbioOCKlo5c8E/61250415798001/update [2026-09-02 10:23:59.107] [INFO ] AutoPushService: application push sent successfully to 61250415798001 [2026-09-02 10:23:59.108] [INFO ] AutoPushService: Auto-push completed for 61250415798001 [2026-09-02 10:23:59.110] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms queue=0.4ms idle=84.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:140 [2026-09-02 10:23:59.112] [INFO ] Terminal updated: 61250415798001 [2026-09-02 10:23:59.162] [DEBUG] QUERY OK source="tms_terminals" db=49.9ms idle=6.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-09-02 10:23:59], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:164 [2026-09-02 10:23:59.162] [DEBUG] VersionComplianceChecker: 61250415798001 — all versions compliant [2026-09-02 10:23:59.164] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms queue=0.2ms idle=52.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:1184 [2026-09-02 10:23:59.220] [DEBUG] QUERY OK source="tms_terminals" db=55.8ms idle=2.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:23:59], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:174 [2026-09-02 10:23:59.223] [DEBUG] QUERY OK source="app_upgrade_device_statuses" db=2.0ms idle=56.4ms SELECT a0.`id`, a0.`config_id`, a0.`device_id`, a0.`device_sn`, a0.`vendor`, a0.`model`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`update_result`, a0.`status`, a0.`remark`, a0.`finish_time`, a0.`pushed_time`, a0.`retry_count`, a0.`inserted_at`, a0.`updated_at` FROM `app_upgrade_device_statuses` AS a0 WHERE ((a0.`device_sn` = ?) AND a0.`status` IN ('pending','pushed')) ["61250415798001"] ↳ TmsCore.TerminalManagement.AppUpgradeService.maybe_repush_for_device/1, at: lib/tms_core/terminal_management/app_upgrade_service.ex:148 [2026-09-02 10:23:59.301] [DEBUG] QUERY OK db=77.9ms idle=2.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [1, "org-id-placeholder", "1737872-10-18T10:57:01Z", ~N[2026-09-02 10:23:59], ~N[2026-09-02 10:23:59]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:179 [2026-09-02 10:23:59.301] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 105785, oid: "org-id-placeholder", upload_time: "1737872-10-18T10:57:01Z", terminal_id: 1, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:23:59], updated_at: ~N[2026-09-02 10:23:59]} [2026-09-02 10:23:59.301] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Device Connected", "timestamp" => "1737872-10-18T10:57:01Z", "value" => "online"} [2026-09-02 10:23:59.358] [DEBUG] QUERY OK db=56.4ms idle=79.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Device Connected", "1737872-10-18T10:57:01Z", "online", "status", 105785, ~N[2026-09-02 10:23:59], ~N[2026-09-02 10:23:59]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:23:59.359] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084174, itemkey: "status", value: "online", timestamp: "1737872-10-18T10:57:01Z", message: "Device Connected", status_log_id: 105785, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:23:59], updated_at: ~N[2026-09-02 10:23:59]}} [2026-09-02 10:23:59.359] [INFO ] Setting terminal 61250415798001 status to 'online' from status itemkey [2026-09-02 10:23:59.359] [WARN ] Unexpected async result [2026-09-02 10:23:59.359] [WARN ] Unexpected async result [2026-09-02 10:23:59.364] [WARN ] Unexpected async result [2026-09-02 10:23:59.671] [INFO ] Received status update for terminal 98251226730001 [2026-09-02 10:23:59.671] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-09-02T10:23:58Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-09-02T10:23:58Z","value":"34"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-09-02T10:23:58Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-09-02T10:23:58Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-09-02T10:23:58Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-09-02T10:23:58Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-09-02T10:23:58Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-09-02T10:23:58Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-09-02T10:23:58Z","vendor":"MoreFun"} [2026-09-02 10:23:59.671] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-09-02T10:23:58Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-09-02T10:23:58Z", "value" => "34"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-09-02T10:23:58Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-09-02T10:23:58Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-09-02T10:23:58Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-09-02T10:23:58Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-09-02T10:23:58Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-09-02T10:23:58Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-09-02T10:23:58Z", "vendor" => "MoreFun"} [2026-09-02 10:23:59.677] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-09-02 10:23:59.677] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-09-02 10:23:59.683] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-09-02 10:23:59.687] [DEBUG] QUERY OK source="parameter_templates" db=4.2ms idle=324.7ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-09-02 10:23:59.692] [DEBUG] QUERY OK source="tms_terminals" db=3.2ms queue=0.6ms idle=121.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-09-02 10:23:59.694] [DEBUG] QUERY OK source="parameter_template_values" db=1.6ms idle=5.4ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-09-02 10:23:59.702] [DEBUG] QUERY OK source="parameter_definitions" db=3.2ms queue=4.2ms idle=4.1ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-09-02 10:23:59.709] [DEBUG] QUERY OK source="pos_terminal" db=3.6ms idle=9.6ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-09-02 10:23:59.741] [DEBUG] QUERY OK source="pos_merchant" db=31.9ms idle=7.0ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [350] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-09-02 10:23:59.744] [DEBUG] QUERY OK db=1.4ms queue=0.7ms idle=25.1ms SELECT COALESCE(JSON_UNQUOTE(JSON_EXTRACT(mc.settings, '$.BASE_MERCHANT_NAME')), '') as base_merchant_name, COALESCE(u.name, '') as user_name, COALESCE(um.softpos_uuid, '') as softpos_uuid, COALESCE(mc.settings, '{}') as settings FROM user_metadata um LEFT JOIN merchant_configuration mc ON mc.user_id = um.user_id LEFT JOIN users u ON u.id = um.user_id WHERE um.merchant_refrence_number = ? LIMIT 1 ["667267350000000"] [2026-09-02 10:23:59.744] [INFO ] ParamsZipBuilder: Merchant info for merchantid=667267350000000 - business_name=Shubham003, QR_USE_SSL=, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-09-02 10:23:59.746] [DEBUG] QUERY OK source="pos_terminal_data" db=0.6ms idle=37.7ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["26735914"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-09-02 10:23:59.747] [DEBUG] QUERY OK source="address" db=1.2ms idle=4.7ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [639] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-09-02 10:23:59.748] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="667267350000000" [2026-09-02 10:23:59.750] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-09-02 10:23:59.828] [DEBUG] QUERY OK db=76.6ms idle=4.5ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "4a683f6c3053be2168e098bef9a2fb30168758c8d49892584bcf34cf17d894c8", 453, 912, ~U[2026-09-02 10:23:59Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-09-02 10:23:59], ~N[2026-09-02 10:23:59]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-09-02 10:23:59.828] [INFO ] AutoPushService: Created push log 60513 for MF919 params.zip [2026-09-02 10:23:59.828] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4017/ota/98251226730001/params.zip", "requestId" => 453, "type" => "tms_command", "version" => "1.0.0"} [2026-09-02 10:23:59.828] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-09-02 10:23:59.828] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-09-02 10:23:59.833] [DEBUG] QUERY OK source="config_file_versions" db=4.5ms queue=0.1ms idle=80.9ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-09-02 10:23:59.840] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730001 at priv/ota/98251226730001/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-09-02 10:23:59.903] [DEBUG] QUERY OK db=60.8ms idle=14.7ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "00a77dfb6082c79d962e61f9dc1efc969f5478924482aede8c1e6e9c47900e84", 7938, 17947, ~U[2026-09-02 10:23:59Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-09-02 10:23:59], ~N[2026-09-02 10:23:59]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-09-02 10:23:59.904] [INFO ] AutoPushService: Created push log 60515 for MF919 l3config.zip (version: 1.0.1) [2026-09-02 10:23:59.904] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4017/ota/98251226730001/l3config.zip", "requestId" => 7938, "type" => "tms_command", "version" => "1.0.1"} [2026-09-02 10:23:59.904] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-09-02 10:23:59.904] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-09-02 10:23:59.908] [DEBUG] QUERY OK source="config_file_versions" db=2.8ms idle=71.6ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-09-02 10:23:59.911] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-09-02 10:23:59.914] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms queue=1.7ms idle=8.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-09-02 10:23:59.915] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730001 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-09-02 10:23:59.923] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-09-02 10:23:59.925] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 10:23:59.926] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 10:23:59.936] [DEBUG] QUERY OK source="config_file_versions" db=10.4ms queue=0.1ms idle=18.3ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-09-02 10:23:59.947] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-09-02 10:23:59.947] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-09-02 10:23:59.950] [DEBUG] QUERY OK source="tms_terminals" db=1.9ms queue=0.1ms idle=33.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:140 [2026-09-02 10:23:59.952] [INFO ] Terminal updated: 98251226730001 [2026-09-02 10:23:59.956] [DEBUG] QUERY OK source="parameter_templates" db=1.6ms idle=17.5ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) ORDER BY p0.`updated_at` DESC LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_parameter_version/2, at: lib/tms_core/terminal_management/version_compliance_checker.ex:105 [2026-09-02 10:23:59.966] [DEBUG] QUERY OK source="config_file_versions" db=10.4ms idle=6.0ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-09-02 10:23:59.978] [DEBUG] QUERY OK source="config_file_versions" db=10.7ms idle=11.1ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-09-02 10:23:59.978] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-09-02 10:24:00.025] [DEBUG] QUERY OK source="parameter_push_logs" db=46.2ms idle=12.1ms SELECT TRUE FROM `parameter_push_logs` AS p0 WHERE ((((p0.`terminal_id` = ?) AND (p0.`config_type` = ?)) AND (p0.`inserted_at` >= ?)) AND p0.`status` IN ('pending','sent')) LIMIT 1 [33, "application", ~N[2026-09-02 09:53:59]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-09-02 10:24:00.028] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-09-02 10:24:00.028] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-09-02 10:24:00.036] [DEBUG] QUERY OK source="tms_terminals" db=7.6ms idle=51.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-09-02 10:24:00.038] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms idle=11.9ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-09-02 10:24:00.039] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-09-02 10:24:00.040] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=2.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:1184 [2026-09-02 10:24:00.082] [DEBUG] QUERY OK source="tms_terminals" db=42.4ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:24:00], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:174 [2026-09-02 10:24:00.085] [DEBUG] QUERY OK source="app_upgrade_device_statuses" db=1.0ms queue=0.1ms idle=43.9ms SELECT a0.`id`, a0.`config_id`, a0.`device_id`, a0.`device_sn`, a0.`vendor`, a0.`model`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`update_result`, a0.`status`, a0.`remark`, a0.`finish_time`, a0.`pushed_time`, a0.`retry_count`, a0.`inserted_at`, a0.`updated_at` FROM `app_upgrade_device_statuses` AS a0 WHERE ((a0.`device_sn` = ?) AND a0.`status` IN ('pending','pushed')) ["98251226730001"] ↳ TmsCore.TerminalManagement.AppUpgradeService.maybe_repush_for_device/1, at: lib/tms_core/terminal_management/app_upgrade_service.ex:148 [2026-09-02 10:24:00.150] [DEBUG] QUERY OK db=63.7ms idle=4.2ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-09-02T10:23:58Z", ~N[2026-09-02 10:24:00], ~N[2026-09-02 10:24:00]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:179 [2026-09-02 10:24:00.151] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 105788, oid: "organization_id", upload_time: "2026-09-02T10:23:58Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:24:00], updated_at: ~N[2026-09-02 10:24:00]} [2026-09-02 10:24:00.151] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-09-02T10:23:58Z", "value" => "online"} [2026-09-02 10:24:00.222] [DEBUG] QUERY OK db=68.7ms queue=2.0ms idle=66.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-09-02T10:23:58Z", "online", "status", 105788, ~N[2026-09-02 10:24:00], ~N[2026-09-02 10:24:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:24:00.223] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084178, itemkey: "status", value: "online", timestamp: "2026-09-02T10:23:58Z", message: "Terminal status update", status_log_id: 105788, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:24:00], updated_at: ~N[2026-09-02 10:24:00]}} [2026-09-02 10:24:00.223] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-09-02 10:24:00.227] [DEBUG] QUERY OK source="tms_terminals" db=3.0ms idle=73.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:24:00], 33] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:203 [2026-09-02 10:24:00.228] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-09-02T10:23:58Z", "value" => "34"} [2026-09-02 10:24:00.303] [DEBUG] QUERY OK db=74.7ms idle=6.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-09-02T10:23:58Z", "34", "battery", 105788, ~N[2026-09-02 10:24:00], ~N[2026-09-02 10:24:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:24:00.304] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084181, itemkey: "battery", value: "34", timestamp: "2026-09-02T10:23:58Z", message: "Battery level", status_log_id: 105788, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:24:00], updated_at: ~N[2026-09-02 10:24:00]}} [2026-09-02 10:24:00.304] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-09-02T10:23:58Z", "value" => "online"} [2026-09-02 10:24:00.349] [DEBUG] QUERY OK db=44.4ms idle=77.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-09-02T10:23:58Z", "online", "network", 105788, ~N[2026-09-02 10:24:00], ~N[2026-09-02 10:24:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:24:00.349] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084183, itemkey: "network", value: "online", timestamp: "2026-09-02T10:23:58Z", message: "Network connectivity", status_log_id: 105788, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:24:00], updated_at: ~N[2026-09-02 10:24:00]}} [2026-09-02 10:24:00.349] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-09-02 10:24:00.350] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=45.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:24:00], 33] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:203 [2026-09-02 10:24:00.350] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-09-02T10:23:58Z", "value" => "0"} [2026-09-02 10:24:00.413] [DEBUG] QUERY OK db=62.2ms idle=1.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-09-02T10:23:58Z", "0", "cpu", 105788, ~N[2026-09-02 10:24:00], ~N[2026-09-02 10:24:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:24:00.414] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084186, itemkey: "cpu", value: "0", timestamp: "2026-09-02T10:23:58Z", message: "CPU usage percentage", status_log_id: 105788, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:24:00], updated_at: ~N[2026-09-02 10:24:00]}} [2026-09-02 10:24:00.414] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-09-02T10:23:58Z", "value" => "1.0.0"} [2026-09-02 10:24:00.479] [DEBUG] QUERY OK db=64.4ms idle=64.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-09-02T10:23:58Z", "1.0.0", "parameter_config", 105788, ~N[2026-09-02 10:24:00], ~N[2026-09-02 10:24:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:24:00.479] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084190, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-09-02T10:23:58Z", message: "Current parameters version", status_log_id: 105788, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:24:00], updated_at: ~N[2026-09-02 10:24:00]}} [2026-09-02 10:24:00.479] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-09-02T10:23:58Z", "value" => "1.0.1"} [2026-09-02 10:24:00.569] [DEBUG] QUERY OK db=89.3ms idle=66.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-09-02T10:23:58Z", "1.0.1", "emv_config", 105788, ~N[2026-09-02 10:24:00], ~N[2026-09-02 10:24:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:24:00.569] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084192, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-09-02T10:23:58Z", message: "Current EMV config version", status_log_id: 105788, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:24:00], updated_at: ~N[2026-09-02 10:24:00]}} [2026-09-02 10:24:00.569] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-09-02T10:23:58Z", "value" => ""} [2026-09-02 10:24:00.631] [DEBUG] QUERY OK db=59.3ms queue=1.6ms idle=1.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-09-02T10:23:58Z", "keys_config", 105788, ~N[2026-09-02 10:24:00], ~N[2026-09-02 10:24:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:24:00.631] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084194, itemkey: "keys_config", value: nil, timestamp: "2026-09-02T10:23:58Z", message: "Current keys config version", status_log_id: 105788, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:24:00], updated_at: ~N[2026-09-02 10:24:00]}} [2026-09-02 10:24:00.631] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-09-02T10:23:58Z", "value" => "3.8.7.3"} [2026-09-02 10:24:00.687] [DEBUG] QUERY OK db=54.6ms idle=54.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-09-02T10:23:58Z", "3.8.7.3", "application", 105788, ~N[2026-09-02 10:24:00], ~N[2026-09-02 10:24:00]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:24:00.687] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084197, itemkey: "application", value: "3.8.7.3", timestamp: "2026-09-02T10:23:58Z", message: "Current application version", status_log_id: 105788, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:24:00], updated_at: ~N[2026-09-02 10:24:00]}} [2026-09-02 10:24:00.688] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=56.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:24:00], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:233 [2026-09-02 10:24:00.689] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.0","requestId":"248291","status":"success","timestamp":1788344639352,"type":"tms_response"} [2026-09-02 10:24:00.689] [INFO ] Processing file download response for device 98251226730001, request_id: 248291 [2026-09-02 10:24:00.690] [DEBUG] QUERY OK source="file_download_logs" db=0.3ms queue=0.5ms idle=2.5ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["248291"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:24:00.690] [INFO ] No file download log for request_id 248291; response not attached to a push [2026-09-02 10:24:00.691] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:24:00.690961Z], response: %{"message" => "Already up to date: 1.0.0", "requestId" => "248291", "status" => "success", "timestamp" => 1788344639352, "type" => "tms_response"}, request_id: "248291", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:24:00.691] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.0","requestId":"453","status":"success","timestamp":1788344639374,"type":"tms_response"} [2026-09-02 10:24:00.691] [INFO ] Processing file download response for device 98251226730001, request_id: 453 [2026-09-02 10:24:00.692] [DEBUG] QUERY OK source="file_download_logs" db=0.7ms idle=2.8ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["453"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:24:00.692] [INFO ] No file download log for request_id 453; response not attached to a push [2026-09-02 10:24:00.692] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:24:00.692683Z], response: %{"message" => "Already up to date: 1.0.0", "requestId" => "453", "status" => "success", "timestamp" => 1788344639374, "type" => "tms_response"}, request_id: "453", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:24:00.693] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.1","requestId":"280706","status":"success","timestamp":1788344639395,"type":"tms_response"} [2026-09-02 10:24:00.693] [INFO ] Processing file download response for device 98251226730001, request_id: 280706 [2026-09-02 10:24:00.698] [DEBUG] QUERY OK source="file_download_logs" db=4.2ms idle=3.1ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["280706"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:24:00.698] [INFO ] No file download log for request_id 280706; response not attached to a push [2026-09-02 10:24:00.698] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:24:00.698343Z], response: %{"message" => "Already up to date: 1.0.1", "requestId" => "280706", "status" => "success", "timestamp" => 1788344639395, "type" => "tms_response"}, request_id: "280706", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:24:00.698] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.1","requestId":"7938","status":"success","timestamp":1788344639415,"type":"tms_response"} [2026-09-02 10:24:00.698] [INFO ] Processing file download response for device 98251226730001, request_id: 7938 [2026-09-02 10:24:00.703] [DEBUG] QUERY OK source="file_download_logs" db=4.2ms idle=6.6ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["7938"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:24:00.706] [INFO ] No file download log for request_id 7938; response not attached to a push [2026-09-02 10:24:00.706] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:24:00.706542Z], response: %{"message" => "Already up to date: 1.0.1", "requestId" => "7938", "status" => "success", "timestamp" => 1788344639415, "type" => "tms_response"}, request_id: "7938", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:24:00.706] [WARN ] Unexpected async result [2026-09-02 10:24:00.706] [WARN ] Unexpected async result [2026-09-02 10:24:10.795] [INFO ] GET /admin/settlements/mis [2026-09-02 10:24:10.795] [DEBUG] Processing with PlatformWeb.SettlementLive.MisApproval.index/2 Parameters: %{} Pipelines: [:browser, :require_authenticated_user] [2026-09-02 10:24:10.797] [DEBUG] QUERY OK source="users_tokens" db=0.8ms idle=1139.1ms SELECT u1.`id`, u1.`email`, u1.`hashed_password`, u1.`confirmed_at`, u1.`role`, u1.`name`, u1.`first_name`, u1.`last_name`, u1.`data`, u1.`inserted_at`, u1.`updated_at` FROM `users_tokens` AS u0 INNER JOIN `users` AS u1 ON u1.`id` = u0.`user_id` WHERE ((u0.`token` = ?) AND (u0.`context` = ?)) AND (u0.`inserted_at` > date_add(?, INTERVAL -(60) day)) [<<213, 32, 140, 146, 229, 21, 137, 113, 114, 76, 126, 65, 60, 16, 236, 111, 126, 32, 254, 167, 187, 35, 180, 237, 118, 110, 98, 232, 176, 39, 166, 51>>, "session", ~U[2026-09-02 10:24:10.796481Z]] ↳ PlatformWeb.UserAuth.fetch_current_user/2, at: lib/platform_web/user_auth.ex:97 [2026-09-02 10:24:10.802] [DEBUG] QUERY OK source="settlement_mis" db=3.5ms idle=116.4ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 ORDER BY s0.`mis_date` DESC LIMIT 100 [] ↳ PlatformWeb.SettlementLive.MisApproval.load_mis_rows/1, at: lib/platform_web/live/settlement_live/mis_approval.ex:505 [2026-09-02 10:24:10.816] [INFO ] Sent 200 in 20ms [2026-09-02 10:24:12.542] [INFO ] Running offline device check... [2026-09-02 10:24:12.542] [INFO ] Starting offline device check... [2026-09-02 10:24:12.547] [DEBUG] QUERY OK source="tms_terminals" db=2.4ms queue=0.5ms idle=857.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1234 [2026-09-02 10:24:12.553] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=850.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [1] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:24:12.555] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=7.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:24:12.557] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms queue=0.7ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:24:12.559] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=2.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:24:12.561] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:24:12.562] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:24:12.563] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:24:12.564] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.6ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:24:12.566] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms queue=0.4ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:24:12.571] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms queue=3.1ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:24:12.573] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=5.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:24:12.575] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:24:12.578] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:24:12.580] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=3.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:24:12.581] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=3.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:24:12.583] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:24:12.584] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:24:12.585] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:24:12.587] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:24:12.587] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:24:12.589] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:24:12.590] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:24:12.591] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=0.1ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:24:12.592] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:24:12.593] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:24:12.594] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:24:12.595] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:24:12.596] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.2ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:24:12.597] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:24:12.598] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:24:12.600] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms queue=0.1ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:24:12.601] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:24:12.602] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.1ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:24:12.602] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:24:12.603] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:24:12.604] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:24:12.606] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:24:12.607] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:24:12.609] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=1.3ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:24:12.614] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.1ms idle=6.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:24:12.616] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms queue=0.2ms idle=5.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:24:12.617] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:24:12.618] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:24:12.619] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:24:12.620] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.1ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:24:12.621] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms queue=0.1ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:24:12.622] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:24:12.623] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:24:12.624] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:24:12.625] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:24:12.626] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:24:12.628] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms queue=0.2ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:24:12.629] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=2.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [82] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:24:12.632] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.3ms queue=0.1ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [83] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:24:12.632] [INFO ] Offline device check completed. Found 50 offline devices, updated 0 statuses. [2026-09-02 10:24:12.632] [INFO ] Offline device check completed successfully [2026-09-02 10:24:12.645] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 24µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "GlEPSmIdJzcdPCYZE14DN38lLmJCR3B0C4V-VwFhIDvHglnE2dj26rF2", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://localhost:5329/assets/app.css", "1" => "http://localhost:5329/assets/app.js"}, "vsn" => "2.0.0"} [2026-09-02 10:24:12.851] [DEBUG] MOUNT PlatformWeb.SettlementLive.MisApproval Parameters: %{} Session: %{"_csrf_token" => "YeYg4ja_TxPQt2mrMADPt56F", "live_socket_id" => "users_sessions:1SCMkuUViXFyTH5BPBDsb34g_qe7I7Ttdm5i6LAnpjM=", "user_token" => <<213, 32, 140, 146, 229, 21, 137, 113, 114, 76, 126, 65, 60, 16, 236, 111, 126, 32, 254, 167, 187, 35, 180, 237, 118, 110, 98, 232, 176, 39, 166, 51>>} [2026-09-02 10:24:12.854] [DEBUG] QUERY OK source="users_tokens" db=2.0ms queue=0.1ms idle=194.3ms SELECT u1.`id`, u1.`email`, u1.`hashed_password`, u1.`confirmed_at`, u1.`role`, u1.`name`, u1.`first_name`, u1.`last_name`, u1.`data`, u1.`inserted_at`, u1.`updated_at` FROM `users_tokens` AS u0 INNER JOIN `users` AS u1 ON u1.`id` = u0.`user_id` WHERE ((u0.`token` = ?) AND (u0.`context` = ?)) AND (u0.`inserted_at` > date_add(?, INTERVAL -(60) day)) [<<213, 32, 140, 146, 229, 21, 137, 113, 114, 76, 126, 65, 60, 16, 236, 111, 126, 32, 254, 167, 187, 35, 180, 237, 118, 110, 98, 232, 176, 39, 166, 51>>, "session", ~U[2026-09-02 10:24:12.851845Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-09-02 10:24:12.857] [DEBUG] QUERY OK source="settlement_mis" db=2.8ms queue=0.1ms idle=221.9ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 ORDER BY s0.`mis_date` DESC LIMIT 100 [] ↳ PlatformWeb.SettlementLive.MisApproval.load_mis_rows/1, at: lib/platform_web/live/settlement_live/mis_approval.ex:505 [2026-09-02 10:24:12.858] [DEBUG] Replied in 6ms [2026-09-02 10:24:14.136] [DEBUG] MOUNT PlatformWeb.SettlementLive.PayoutDashboard Parameters: %{} Session: %{"_csrf_token" => "YeYg4ja_TxPQt2mrMADPt56F", "live_socket_id" => "users_sessions:1SCMkuUViXFyTH5BPBDsb34g_qe7I7Ttdm5i6LAnpjM=", "user_token" => <<213, 32, 140, 146, 229, 21, 137, 113, 114, 76, 126, 65, 60, 16, 236, 111, 126, 32, 254, 167, 187, 35, 180, 237, 118, 110, 98, 232, 176, 39, 166, 51>>} [2026-09-02 10:24:14.138] [DEBUG] QUERY OK source="users_tokens" db=0.8ms queue=0.6ms idle=1479.3ms SELECT u1.`id`, u1.`email`, u1.`hashed_password`, u1.`confirmed_at`, u1.`role`, u1.`name`, u1.`first_name`, u1.`last_name`, u1.`data`, u1.`inserted_at`, u1.`updated_at` FROM `users_tokens` AS u0 INNER JOIN `users` AS u1 ON u1.`id` = u0.`user_id` WHERE ((u0.`token` = ?) AND (u0.`context` = ?)) AND (u0.`inserted_at` > date_add(?, INTERVAL -(60) day)) [<<213, 32, 140, 146, 229, 21, 137, 113, 114, 76, 126, 65, 60, 16, 236, 111, 126, 32, 254, 167, 187, 35, 180, 237, 118, 110, 98, 232, 176, 39, 166, 51>>, "session", ~U[2026-09-02 10:24:14.136461Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-09-02 10:24:14.140] [DEBUG] QUERY OK source="payout_batches" db=1.5ms queue=0.4ms idle=1281.4ms SELECT p0.`id`, p0.`settlement_mis_id`, p0.`payout_date`, p0.`batch_type`, p0.`total_merchants`, p0.`total_items`, p0.`total_amount`, p0.`currency`, p0.`file_path`, p0.`file_name`, p0.`encryption_method`, p0.`batch_reference`, p0.`encrypted_file_path`, p0.`file_hash`, p0.`encryption_key_ref`, p0.`generated_by`, p0.`generated_at`, p0.`transmission_method`, p0.`status`, p0.`transmitted_at`, p0.`transmission_reference`, p0.`bank_confirmation_ref`, p0.`failure_reason`, p0.`confirmed_at`, p0.`confirmed_item_count`, p0.`rejected_item_count`, p0.`inserted_at`, p0.`updated_at` FROM `payout_batches` AS p0 ORDER BY p0.`payout_date` DESC LIMIT 100 [] ↳ PlatformWeb.SettlementLive.PayoutDashboard.mount/3, at: lib/platform_web/live/settlement_live/payout_dashboard.ex:49 [2026-09-02 10:24:14.149] [DEBUG] QUERY OK source="bank_confirmation_batches" db=0.4ms queue=2.7ms idle=452.9ms SELECT count(*) FROM `bank_confirmation_batches` AS b0 WHERE (b0.`approval_status` = 'pending') [] ↳ PlatformWeb.SettlementLive.PayoutDashboard.mount/3, at: lib/platform_web/live/settlement_live/payout_dashboard.ex:53 [2026-09-02 10:24:14.167] [DEBUG] Replied in 33ms [2026-09-02 10:24:16.087] [DEBUG] HANDLE EVENT "switch_tab" in PlatformWeb.SettlementLive.PayoutDashboard Parameters: %{"tab" => "upload", "value" => ""} [2026-09-02 10:24:16.087] [DEBUG] Replied in 202µs [2026-09-02 10:24:19.461] [DEBUG] HANDLE EVENT "switch_tab" in PlatformWeb.SettlementLive.PayoutDashboard Parameters: %{"tab" => "payouts", "value" => ""} [2026-09-02 10:24:19.461] [DEBUG] Replied in 179µs [2026-09-02 10:24:28.439] [DEBUG] HANDLE EVENT "view_items" in PlatformWeb.SettlementLive.PayoutDashboard Parameters: %{"id" => "180", "value" => ""} [2026-09-02 10:24:28.443] [DEBUG] QUERY OK source="payout_batches" db=1.1ms queue=2.5ms idle=703.9ms SELECT p0.`id`, p0.`settlement_mis_id`, p0.`payout_date`, p0.`batch_type`, p0.`total_merchants`, p0.`total_items`, p0.`total_amount`, p0.`currency`, p0.`file_path`, p0.`file_name`, p0.`encryption_method`, p0.`batch_reference`, p0.`encrypted_file_path`, p0.`file_hash`, p0.`encryption_key_ref`, p0.`generated_by`, p0.`generated_at`, p0.`transmission_method`, p0.`status`, p0.`transmitted_at`, p0.`transmission_reference`, p0.`bank_confirmation_ref`, p0.`failure_reason`, p0.`confirmed_at`, p0.`confirmed_item_count`, p0.`rejected_item_count`, p0.`inserted_at`, p0.`updated_at` FROM `payout_batches` AS p0 WHERE (p0.`id` = ?) [180] ↳ PlatformWeb.SettlementLive.PayoutDashboard.handle_event/3, at: lib/platform_web/live/settlement_live/payout_dashboard.ex:704 [2026-09-02 10:24:28.444] [DEBUG] QUERY OK source="payout_items" db=0.7ms idle=688.1ms SELECT p0.`id`, p0.`payout_batch_id`, p0.`settlement_mis_id`, p0.`settlement_date`, p0.`merchant_mid`, p0.`merchant_id`, p0.`merchant_name`, p0.`merchant_ref_number`, p0.`bank_name`, p0.`iban`, p0.`account_number`, p0.`bank_code`, p0.`currency`, p0.`gross_amount`, p0.`total_deductions`, p0.`payout_amount`, p0.`transaction_count`, p0.`net_settlement_amount`, p0.`total_adjustments_credit`, p0.`total_adjustments_debit`, p0.`final_payout_amount`, p0.`total_gross_amount`, p0.`total_mdr_amount`, p0.`total_vat_amount`, p0.`status`, p0.`bank_transfer_ref`, p0.`confirmed_at`, p0.`rejection_reason`, p0.`rejected_at`, p0.`re_initiated_at`, p0.`re_initiated_batch_id`, p0.`inserted_at`, p0.`updated_at` FROM `payout_items` AS p0 WHERE (p0.`payout_batch_id` = ?) ORDER BY p0.`merchant_mid` [180] ↳ PlatformWeb.SettlementLive.PayoutDashboard.handle_event/3, at: lib/platform_web/live/settlement_live/payout_dashboard.ex:705 [2026-09-02 10:24:28.444] [DEBUG] Replied in 5ms [2026-09-02 10:24:54.621] [DEBUG] HANDLE EVENT "close_items" in PlatformWeb.SettlementLive.PayoutDashboard Parameters: %{"value" => ""} [2026-09-02 10:24:54.621] [DEBUG] Replied in 189µs [2026-09-02 10:25:00.526] [DEBUG] MOUNT PlatformWeb.SettlementLive.MisApproval Parameters: %{} Session: %{"_csrf_token" => "YeYg4ja_TxPQt2mrMADPt56F", "live_socket_id" => "users_sessions:1SCMkuUViXFyTH5BPBDsb34g_qe7I7Ttdm5i6LAnpjM=", "user_token" => <<213, 32, 140, 146, 229, 21, 137, 113, 114, 76, 126, 65, 60, 16, 236, 111, 126, 32, 254, 167, 187, 35, 180, 237, 118, 110, 98, 232, 176, 39, 166, 51>>} [2026-09-02 10:25:00.528] [DEBUG] QUERY OK source="users_tokens" db=1.3ms queue=0.3ms idle=1864.1ms SELECT u1.`id`, u1.`email`, u1.`hashed_password`, u1.`confirmed_at`, u1.`role`, u1.`name`, u1.`first_name`, u1.`last_name`, u1.`data`, u1.`inserted_at`, u1.`updated_at` FROM `users_tokens` AS u0 INNER JOIN `users` AS u1 ON u1.`id` = u0.`user_id` WHERE ((u0.`token` = ?) AND (u0.`context` = ?)) AND (u0.`inserted_at` > date_add(?, INTERVAL -(60) day)) [<<213, 32, 140, 146, 229, 21, 137, 113, 114, 76, 126, 65, 60, 16, 236, 111, 126, 32, 254, 167, 187, 35, 180, 237, 118, 110, 98, 232, 176, 39, 166, 51>>, "session", ~U[2026-09-02 10:25:00.526577Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-09-02 10:25:00.531] [DEBUG] QUERY OK source="settlement_mis" db=2.3ms idle=1400.7ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 ORDER BY s0.`mis_date` DESC LIMIT 100 [] ↳ PlatformWeb.SettlementLive.MisApproval.load_mis_rows/1, at: lib/platform_web/live/settlement_live/mis_approval.ex:505 [2026-09-02 10:25:00.533] [DEBUG] Replied in 7ms [2026-09-02 10:25:05.244] [INFO ] Received status update for terminal 61250415798001 [2026-09-02 10:25:05.244] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61250415798001","vendor":"MoreFun","model":"SR600","uploadTime":"-3696548-03-23T09:58:23Z","org.device":[{"itemkey":"status","value":"offline","timestamp":"-3696548-03-23T09:58:23Z","message":"Connection reset - reconnecting"}]} [2026-09-02 10:25:05.244] [INFO ] Decoded JSON: %{"model" => "SR600", "oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "status", "message" => "Connection reset - reconnecting", "timestamp" => "-3696548-03-23T09:58:23Z", "value" => "offline"}], "sn" => "61250415798001", "uploadTime" => "-3696548-03-23T09:58:23Z", "vendor" => "MoreFun"} [2026-09-02 10:25:05.244] [INFO ] Extracted versions for 61250415798001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-09-02 10:25:05.244] [INFO ] Detected missing versions for 61250415798001, triggering auto-push [2026-09-02 10:25:05.244] [INFO ] AutoPushService: Triggering auto-push for 61250415798001 (MoreFun SR600) - missing version [2026-09-02 10:25:05.245] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=1267.0ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["MoreFun", "SR600"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-09-02 10:25:05.247] [DEBUG] QUERY OK source="tms_terminals" db=2.2ms idle=258.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-09-02 10:25:05.253] [DEBUG] QUERY OK source="parameter_template_values" db=0.4ms queue=4.5ms idle=2.7ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [7] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-09-02 10:25:05.308] [DEBUG] QUERY OK db=54.8ms idle=5.5ms INSERT INTO `parameter_push_logs` (`status`,`request_id`,`log_time`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", 645, ~U[2026-09-02 10:25:05Z], 1, "parameter", "SR600", "MoreFun", %{}, "full", 7, "missing_version", "1.0.0", ~N[2026-09-02 10:25:05], ~N[2026-09-02 10:25:05]] ↳ TmsCore.TerminalManagement.AutoPushService.push_generic_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:235 [2026-09-02 10:25:05.308] [INFO ] AutoPushService: Created push log 60517 for parameters (template: 7) [2026-09-02 10:25:05.308] [INFO ] SR600 MQTT Command: %{"command" => "file_download", "merchant_config" => "true", "request_id" => 645, "retry_count" => "3", "version" => "1.0.0"} [2026-09-02 10:25:05.308] [INFO ] AutoPushService: Sending parameter push to 61250415798001 on topic: /ota/pFppbioOCKlo5c8E/61250415798001/update [2026-09-02 10:25:05.314] [INFO ] AutoPushService: Parameter push sent successfully to 61250415798001 [2026-09-02 10:25:05.370] [DEBUG] QUERY OK db=54.9ms idle=62.0ms INSERT INTO `parameter_push_logs` (`status`,`request_id`,`log_time`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?) ["pending", 709, ~U[2026-09-02 10:25:05Z], 1, "emv_config", "SR600", "MoreFun", "full", "missing_version", ~N[2026-09-02 10:25:05], ~N[2026-09-02 10:25:05]] ↳ TmsCore.TerminalManagement.AutoPushService.push_regular_config/5, at: lib/tms_core/terminal_management/auto_push_service.ex:427 [2026-09-02 10:25:05.370] [INFO ] AutoPushService: Created push log for emv_config [2026-09-02 10:25:05.370] [INFO ] SR600 MQTT Command: %{"command" => "file_download", "merchant_config" => "true", "request_id" => 709, "retry_count" => "3"} [2026-09-02 10:25:05.370] [INFO ] AutoPushService: Sending emv_config push to 61250415798001 on topic: /ota/pFppbioOCKlo5c8E/61250415798001/update [2026-09-02 10:25:05.370] [INFO ] AutoPushService: emv_config push sent successfully to 61250415798001 [2026-09-02 10:25:05.376] [DEBUG] QUERY OK source="config_file_versions" db=5.4ms idle=62.7ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "SR600"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-09-02 10:25:05.376] [INFO ] KeysConfigService: Generating keys.json for 61250415798001 (SR600) [2026-09-02 10:25:05.386] [DEBUG] QUERY OK source="tms_terminals" db=6.6ms idle=8.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-09-02 10:25:05.387] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 61250415798001 with params: %{"kekKcv" => "112233", "model" => "SR600", "serialNumber" => "61250415798001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-09-02 10:25:05.389] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-09-02 10:25:05.390] [ERROR] KeysConfigService: Failed to generate keys for 61250415798001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 10:25:05.390] [ERROR] AutoPushService: Failed to generate keys.json for 61250415798001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 10:25:05.447] [DEBUG] QUERY OK db=51.3ms queue=0.6ms idle=18.8ms INSERT INTO `parameter_push_logs` (`status`,`request_id`,`log_time`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?) ["pending", 3235, ~U[2026-09-02 10:25:05Z], 1, "application", "SR600", "MoreFun", "full", "missing_version", ~N[2026-09-02 10:25:05], ~N[2026-09-02 10:25:05]] ↳ TmsCore.TerminalManagement.AutoPushService.push_regular_config/5, at: lib/tms_core/terminal_management/auto_push_service.ex:427 [2026-09-02 10:25:05.447] [INFO ] AutoPushService: Created push log for application [2026-09-02 10:25:05.447] [INFO ] SR600 MQTT Command: %{"command" => "file_download", "merchant_config" => "true", "request_id" => 3235, "retry_count" => "3"} [2026-09-02 10:25:05.447] [INFO ] AutoPushService: Sending application push to 61250415798001 on topic: /ota/pFppbioOCKlo5c8E/61250415798001/update [2026-09-02 10:25:05.448] [INFO ] AutoPushService: application push sent successfully to 61250415798001 [2026-09-02 10:25:05.448] [INFO ] AutoPushService: Auto-push completed for 61250415798001 [2026-09-02 10:25:05.451] [DEBUG] QUERY OK source="tms_terminals" db=2.0ms idle=63.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:140 [2026-09-02 10:25:05.451] [INFO ] Terminal updated: 61250415798001 [2026-09-02 10:25:05.460] [DEBUG] QUERY OK source="tms_terminals" db=8.2ms idle=4.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-09-02 10:25:05], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:164 [2026-09-02 10:25:05.460] [DEBUG] VersionComplianceChecker: 61250415798001 — all versions compliant [2026-09-02 10:25:05.461] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=9.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:1184 [2026-09-02 10:25:05.508] [DEBUG] QUERY OK source="tms_terminals" db=46.4ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:25:05], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:174 [2026-09-02 10:25:05.513] [DEBUG] QUERY OK source="app_upgrade_device_statuses" db=3.3ms queue=1.6ms idle=47.2ms SELECT a0.`id`, a0.`config_id`, a0.`device_id`, a0.`device_sn`, a0.`vendor`, a0.`model`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`update_result`, a0.`status`, a0.`remark`, a0.`finish_time`, a0.`pushed_time`, a0.`retry_count`, a0.`inserted_at`, a0.`updated_at` FROM `app_upgrade_device_statuses` AS a0 WHERE ((a0.`device_sn` = ?) AND a0.`status` IN ('pending','pushed')) ["61250415798001"] ↳ TmsCore.TerminalManagement.AppUpgradeService.maybe_repush_for_device/1, at: lib/tms_core/terminal_management/app_upgrade_service.ex:148 [2026-09-02 10:25:05.566] [DEBUG] QUERY OK db=52.9ms idle=5.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [1, "org-id-placeholder", "-3696548-03-23T09:58:23Z", ~N[2026-09-02 10:25:05], ~N[2026-09-02 10:25:05]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:179 [2026-09-02 10:25:05.567] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 105790, oid: "org-id-placeholder", upload_time: "-3696548-03-23T09:58:23Z", terminal_id: 1, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:25:05], updated_at: ~N[2026-09-02 10:25:05]} [2026-09-02 10:25:05.567] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Connection reset - reconnecting", "timestamp" => "-3696548-03-23T09:58:23Z", "value" => "offline"} [2026-09-02 10:25:05.665] [DEBUG] QUERY OK db=97.9ms idle=53.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Connection reset - reconnecting", "-3696548-03-23T09:58:23Z", "offline", "status", 105790, ~N[2026-09-02 10:25:05], ~N[2026-09-02 10:25:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:25:05.665] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084200, itemkey: "status", value: "offline", timestamp: "-3696548-03-23T09:58:23Z", message: "Connection reset - reconnecting", status_log_id: 105790, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:25:05], updated_at: ~N[2026-09-02 10:25:05]}} [2026-09-02 10:25:05.666] [INFO ] Setting terminal 61250415798001 status to 'offline' from status itemkey [2026-09-02 10:25:05.761] [DEBUG] QUERY OK source="tms_terminals" db=95.2ms idle=99.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["offline", ~N[2026-09-02 10:25:05], 1] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:206 [2026-09-02 10:25:05.764] [DEBUG] QUERY OK source="tms_terminals" db=2.2ms idle=96.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["offline", ~N[2026-09-02 10:25:05], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:233 [2026-09-02 10:25:05.764] [WARN ] Unexpected async result [2026-09-02 10:25:05.764] [WARN ] Unexpected async result [2026-09-02 10:25:05.764] [WARN ] Unexpected async result [2026-09-02 10:25:12.596] [INFO ] Received status update for terminal 61250415798001 [2026-09-02 10:25:12.596] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61250415798001","vendor":"MoreFun","model":"SR600","uploadTime":"-4460489-03-01T23:37:42Z","org.device":[{"itemkey":"status","value":"online","timestamp":"-4460489-03-01T23:37:42Z","message":"Device Connected"}]} [2026-09-02 10:25:12.596] [INFO ] Decoded JSON: %{"model" => "SR600", "oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "status", "message" => "Device Connected", "timestamp" => "-4460489-03-01T23:37:42Z", "value" => "online"}], "sn" => "61250415798001", "uploadTime" => "-4460489-03-01T23:37:42Z", "vendor" => "MoreFun"} [2026-09-02 10:25:12.596] [INFO ] Extracted versions for 61250415798001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-09-02 10:25:12.596] [INFO ] Detected missing versions for 61250415798001, triggering auto-push [2026-09-02 10:25:12.596] [INFO ] AutoPushService: Triggering auto-push for 61250415798001 (MoreFun SR600) - missing version [2026-09-02 10:25:12.604] [DEBUG] QUERY OK source="parameter_templates" db=7.4ms idle=786.9ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["MoreFun", "SR600"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-09-02 10:25:12.611] [DEBUG] QUERY OK source="tms_terminals" db=6.9ms idle=575.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-09-02 10:25:12.613] [DEBUG] QUERY OK source="parameter_template_values" db=0.6ms queue=0.4ms idle=7.6ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [7] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-09-02 10:25:12.676] [DEBUG] QUERY OK db=62.6ms idle=2.1ms INSERT INTO `parameter_push_logs` (`status`,`request_id`,`log_time`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", 773, ~U[2026-09-02 10:25:12Z], 1, "parameter", "SR600", "MoreFun", %{}, "full", 7, "missing_version", "1.0.0", ~N[2026-09-02 10:25:12], ~N[2026-09-02 10:25:12]] ↳ TmsCore.TerminalManagement.AutoPushService.push_generic_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:235 [2026-09-02 10:25:12.676] [INFO ] AutoPushService: Created push log 60525 for parameters (template: 7) [2026-09-02 10:25:12.677] [INFO ] SR600 MQTT Command: %{"command" => "file_download", "merchant_config" => "true", "request_id" => 773, "retry_count" => "3", "version" => "1.0.0"} [2026-09-02 10:25:12.677] [INFO ] AutoPushService: Sending parameter push to 61250415798001 on topic: /ota/pFppbioOCKlo5c8E/61250415798001/update [2026-09-02 10:25:12.677] [INFO ] AutoPushService: Parameter push sent successfully to 61250415798001 [2026-09-02 10:25:12.765] [DEBUG] QUERY OK db=85.6ms idle=66.3ms INSERT INTO `parameter_push_logs` (`status`,`request_id`,`log_time`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?) ["pending", 837, ~U[2026-09-02 10:25:12Z], 1, "emv_config", "SR600", "MoreFun", "full", "missing_version", ~N[2026-09-02 10:25:12], ~N[2026-09-02 10:25:12]] ↳ TmsCore.TerminalManagement.AutoPushService.push_regular_config/5, at: lib/tms_core/terminal_management/auto_push_service.ex:427 [2026-09-02 10:25:12.765] [INFO ] AutoPushService: Created push log for emv_config [2026-09-02 10:25:12.765] [INFO ] SR600 MQTT Command: %{"command" => "file_download", "merchant_config" => "true", "request_id" => 837, "retry_count" => "3"} [2026-09-02 10:25:12.765] [INFO ] AutoPushService: Sending emv_config push to 61250415798001 on topic: /ota/pFppbioOCKlo5c8E/61250415798001/update [2026-09-02 10:25:12.765] [INFO ] AutoPushService: emv_config push sent successfully to 61250415798001 [2026-09-02 10:25:12.770] [DEBUG] QUERY OK source="config_file_versions" db=3.9ms idle=89.9ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "SR600"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-09-02 10:25:12.770] [INFO ] KeysConfigService: Generating keys.json for 61250415798001 (SR600) [2026-09-02 10:25:12.774] [DEBUG] QUERY OK source="tms_terminals" db=2.8ms idle=6.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-09-02 10:25:12.776] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 61250415798001 with params: %{"kekKcv" => "112233", "model" => "SR600", "serialNumber" => "61250415798001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-09-02 10:25:12.783] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-09-02 10:25:12.783] [ERROR] KeysConfigService: Failed to generate keys for 61250415798001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 10:25:12.783] [ERROR] AutoPushService: Failed to generate keys.json for 61250415798001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 10:25:12.881] [DEBUG] QUERY OK db=92.6ms idle=18.8ms INSERT INTO `parameter_push_logs` (`status`,`request_id`,`log_time`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?) ["pending", 3363, ~U[2026-09-02 10:25:12Z], 1, "application", "SR600", "MoreFun", "full", "missing_version", ~N[2026-09-02 10:25:12], ~N[2026-09-02 10:25:12]] ↳ TmsCore.TerminalManagement.AutoPushService.push_regular_config/5, at: lib/tms_core/terminal_management/auto_push_service.ex:427 [2026-09-02 10:25:12.883] [INFO ] AutoPushService: Created push log for application [2026-09-02 10:25:12.883] [INFO ] SR600 MQTT Command: %{"command" => "file_download", "merchant_config" => "true", "request_id" => 3363, "retry_count" => "3"} [2026-09-02 10:25:12.883] [INFO ] AutoPushService: Sending application push to 61250415798001 on topic: /ota/pFppbioOCKlo5c8E/61250415798001/update [2026-09-02 10:25:12.883] [INFO ] AutoPushService: application push sent successfully to 61250415798001 [2026-09-02 10:25:12.883] [INFO ] AutoPushService: Auto-push completed for 61250415798001 [2026-09-02 10:25:12.897] [DEBUG] MOUNT PlatformWeb.SettlementLive.PayoutDashboard Parameters: %{} Session: %{"_csrf_token" => "YeYg4ja_TxPQt2mrMADPt56F", "live_socket_id" => "users_sessions:1SCMkuUViXFyTH5BPBDsb34g_qe7I7Ttdm5i6LAnpjM=", "user_token" => <<213, 32, 140, 146, 229, 21, 137, 113, 114, 76, 126, 65, 60, 16, 236, 111, 126, 32, 254, 167, 187, 35, 180, 237, 118, 110, 98, 232, 176, 39, 166, 51>>} [2026-09-02 10:25:12.896] [DEBUG] QUERY OK source="tms_terminals" db=12.2ms queue=0.1ms idle=108.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:140 [2026-09-02 10:25:12.899] [INFO ] Terminal updated: 61250415798001 [2026-09-02 10:25:12.915] [DEBUG] QUERY OK source="users_tokens" db=16.8ms idle=1230.2ms SELECT u1.`id`, u1.`email`, u1.`hashed_password`, u1.`confirmed_at`, u1.`role`, u1.`name`, u1.`first_name`, u1.`last_name`, u1.`data`, u1.`inserted_at`, u1.`updated_at` FROM `users_tokens` AS u0 INNER JOIN `users` AS u1 ON u1.`id` = u0.`user_id` WHERE ((u0.`token` = ?) AND (u0.`context` = ?)) AND (u0.`inserted_at` > date_add(?, INTERVAL -(60) day)) [<<213, 32, 140, 146, 229, 21, 137, 113, 114, 76, 126, 65, 60, 16, 236, 111, 126, 32, 254, 167, 187, 35, 180, 237, 118, 110, 98, 232, 176, 39, 166, 51>>, "session", ~U[2026-09-02 10:25:12.897909Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-09-02 10:25:12.985] [DEBUG] QUERY OK source="payout_batches" db=66.8ms idle=21.8ms SELECT p0.`id`, p0.`settlement_mis_id`, p0.`payout_date`, p0.`batch_type`, p0.`total_merchants`, p0.`total_items`, p0.`total_amount`, p0.`currency`, p0.`file_path`, p0.`file_name`, p0.`encryption_method`, p0.`batch_reference`, p0.`encrypted_file_path`, p0.`file_hash`, p0.`encryption_key_ref`, p0.`generated_by`, p0.`generated_at`, p0.`transmission_method`, p0.`status`, p0.`transmitted_at`, p0.`transmission_reference`, p0.`bank_confirmation_ref`, p0.`failure_reason`, p0.`confirmed_at`, p0.`confirmed_item_count`, p0.`rejected_item_count`, p0.`inserted_at`, p0.`updated_at` FROM `payout_batches` AS p0 ORDER BY p0.`payout_date` DESC LIMIT 100 [] ↳ PlatformWeb.SettlementLive.PayoutDashboard.mount/3, at: lib/platform_web/live/settlement_live/payout_dashboard.ex:49 [2026-09-02 10:25:13.064] [DEBUG] QUERY OK source="bank_confirmation_batches" db=76.8ms queue=0.4ms idle=1.7ms SELECT count(*) FROM `bank_confirmation_batches` AS b0 WHERE (b0.`approval_status` = 'pending') [] ↳ PlatformWeb.SettlementLive.PayoutDashboard.mount/3, at: lib/platform_web/live/settlement_live/payout_dashboard.ex:53 [2026-09-02 10:25:13.065] [DEBUG] Replied in 167ms [2026-09-02 10:25:13.148] [DEBUG] QUERY OK source="tms_terminals" db=248.1ms idle=18.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-09-02 10:25:12], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:164 [2026-09-02 10:25:13.151] [DEBUG] VersionComplianceChecker: 61250415798001 — all versions compliant [2026-09-02 10:25:13.193] [DEBUG] QUERY OK source="tms_terminals" db=36.7ms idle=83.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:1184 [2026-09-02 10:25:13.244] [DEBUG] QUERY OK source="tms_terminals" db=49.6ms idle=46.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:25:13], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:174 [2026-09-02 10:25:13.255] [DEBUG] QUERY OK source="app_upgrade_device_statuses" db=8.9ms idle=53.1ms SELECT a0.`id`, a0.`config_id`, a0.`device_id`, a0.`device_sn`, a0.`vendor`, a0.`model`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`update_result`, a0.`status`, a0.`remark`, a0.`finish_time`, a0.`pushed_time`, a0.`retry_count`, a0.`inserted_at`, a0.`updated_at` FROM `app_upgrade_device_statuses` AS a0 WHERE ((a0.`device_sn` = ?) AND a0.`status` IN ('pending','pushed')) ["61250415798001"] ↳ TmsCore.TerminalManagement.AppUpgradeService.maybe_repush_for_device/1, at: lib/tms_core/terminal_management/app_upgrade_service.ex:148 [2026-09-02 10:25:13.370] [DEBUG] QUERY OK db=114.5ms idle=11.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [1, "org-id-placeholder", "-4460489-03-01T23:37:42Z", ~N[2026-09-02 10:25:13], ~N[2026-09-02 10:25:13]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:179 [2026-09-02 10:25:13.370] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 105794, oid: "org-id-placeholder", upload_time: "-4460489-03-01T23:37:42Z", terminal_id: 1, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:25:13], updated_at: ~N[2026-09-02 10:25:13]} [2026-09-02 10:25:13.370] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Device Connected", "timestamp" => "-4460489-03-01T23:37:42Z", "value" => "online"} [2026-09-02 10:25:13.496] [DEBUG] QUERY OK db=125.6ms idle=0.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Device Connected", "-4460489-03-01T23:37:42Z", "online", "status", 105794, ~N[2026-09-02 10:25:13], ~N[2026-09-02 10:25:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:25:13.496] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084204, itemkey: "status", value: "online", timestamp: "-4460489-03-01T23:37:42Z", message: "Device Connected", status_log_id: 105794, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:25:13], updated_at: ~N[2026-09-02 10:25:13]}} [2026-09-02 10:25:13.496] [INFO ] Setting terminal 61250415798001 status to 'online' from status itemkey [2026-09-02 10:25:13.500] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=3.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:25:13], 1] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:203 [2026-09-02 10:25:13.501] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=4.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:25:13], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:233 [2026-09-02 10:25:13.501] [WARN ] Unexpected async result [2026-09-02 10:25:13.501] [WARN ] Unexpected async result [2026-09-02 10:25:13.502] [WARN ] Unexpected async result [2026-09-02 10:25:14.695] [DEBUG] HANDLE EVENT "switch_tab" in PlatformWeb.SettlementLive.PayoutDashboard Parameters: %{"tab" => "upload", "value" => ""} [2026-09-02 10:25:14.695] [DEBUG] Replied in 186µs [2026-09-02 10:25:23.201] [DEBUG] HANDLE EVENT "validate_upload" in PlatformWeb.SettlementLive.PayoutDashboard Parameters: %{"_target" => ["csv_file"]} [2026-09-02 10:25:23.201] [DEBUG] Replied in 181µs [2026-09-02 10:25:25.559] [INFO ] JOINED lvu:0 in 5ms Parameters: %{"token" => "SFMyNTY.g2gDaAJhBnQAAAADdwNwaWRYdw1ub25vZGVAbm9ob3N0AAAIRwAAAAAAAAAAdwNyZWZoAm0AAAAUcGh4LUdORjZDcDQzUGY0cl93MkNtAAAAATB3A2NpZHcDbmlsbgYAf--mYaABYgABUYA.ps8Nm2A5CBLzuDcuw5pfZrLeLSr-TerlzCaCNkyx118"} [2026-09-02 10:25:26.034] [DEBUG] HANDLE EVENT "process_upload" in PlatformWeb.SettlementLive.PayoutDashboard Parameters: %{} [2026-09-02 10:25:26.066] [DEBUG] QUERY OK db=0.2ms idle=1380.6ms begin [] ↳ PlatformWeb.SettlementLive.PayoutDashboard.handle_event/3, at: lib/platform_web/live/settlement_live/payout_dashboard.ex:877 [2026-09-02 10:25:26.076] [DEBUG] QUERY OK db=1.5ms INSERT INTO `bank_confirmation_batches` (`filename`,`total_records`,`approval_status`,`user_id`,`failed_records`,`successful_records`,`uploaded_at`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?) ["bank_confirmation_2026-09-02T10:25:26.049888Z.csv", 3, "pending", 3, 0, 0, ~N[2026-09-02 10:25:26], ~N[2026-09-02 10:25:26], ~N[2026-09-02 10:25:26]] ↳ anonymous fn/3 in Ecto.Adapters.SQL.checkout_or_transaction/4, at: lib/ecto/adapters/sql.ex:1473 [2026-09-02 10:25:26.080] [DEBUG] QUERY OK db=0.6ms INSERT INTO `bank_confirmation_records` (`status`,`merchant_mid`,`confirmed_at`,`already_confirmed`,`amount_from_csv`,`transfer_reference_number`,`batch_id`,`amount_match`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?) ["credited", "419926360000000", ~N[2026-09-02 10:30:00], false, Decimal.new("784.51"), "BNK20260902M1", 72, false, ~N[2026-09-02 10:25:26], ~N[2026-09-02 10:25:26]] ↳ anonymous fn/3 in Ecto.Adapters.SQL.checkout_or_transaction/4, at: lib/ecto/adapters/sql.ex:1473 [2026-09-02 10:25:26.083] [DEBUG] QUERY OK source="payout_items" db=1.9ms SELECT p0.`id`, p0.`payout_batch_id`, p0.`settlement_mis_id`, p0.`settlement_date`, p0.`merchant_mid`, p0.`merchant_id`, p0.`merchant_name`, p0.`merchant_ref_number`, p0.`bank_name`, p0.`iban`, p0.`account_number`, p0.`bank_code`, p0.`currency`, p0.`gross_amount`, p0.`total_deductions`, p0.`payout_amount`, p0.`transaction_count`, p0.`net_settlement_amount`, p0.`total_adjustments_credit`, p0.`total_adjustments_debit`, p0.`final_payout_amount`, p0.`total_gross_amount`, p0.`total_mdr_amount`, p0.`total_vat_amount`, p0.`status`, p0.`bank_transfer_ref`, p0.`confirmed_at`, p0.`rejection_reason`, p0.`rejected_at`, p0.`re_initiated_at`, p0.`re_initiated_batch_id`, p0.`inserted_at`, p0.`updated_at` FROM `payout_items` AS p0 WHERE (p0.`merchant_mid` = ?) AND (p0.`status` IN ('pending','transmitted')) ORDER BY p0.`inserted_at` DESC LIMIT 1 ["419926360000000"] ↳ anonymous fn/3 in Ecto.Adapters.SQL.checkout_or_transaction/4, at: lib/ecto/adapters/sql.ex:1473 [2026-09-02 10:25:26.086] [DEBUG] QUERY OK source="bank_confirmation_records" db=0.9ms UPDATE `bank_confirmation_records` SET `validation_status` = ?, `payout_item_id` = ?, `amount_match` = ?, `expected_amount` = ?, `updated_at` = ? WHERE `id` = ? ["valid", 270, true, Decimal.new("784.51"), ~N[2026-09-02 10:25:26], 98] ↳ anonymous fn/3 in Ecto.Adapters.SQL.checkout_or_transaction/4, at: lib/ecto/adapters/sql.ex:1473 [2026-09-02 10:25:26.088] [DEBUG] QUERY OK db=0.9ms INSERT INTO `bank_confirmation_records` (`status`,`merchant_mid`,`confirmed_at`,`already_confirmed`,`amount_from_csv`,`transfer_reference_number`,`batch_id`,`amount_match`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?) ["credited", "425590250000000", ~N[2026-09-02 10:30:00], false, Decimal.new("544.80"), "BNK20260902M2", 72, false, ~N[2026-09-02 10:25:26], ~N[2026-09-02 10:25:26]] ↳ anonymous fn/3 in Ecto.Adapters.SQL.checkout_or_transaction/4, at: lib/ecto/adapters/sql.ex:1473 [2026-09-02 10:25:26.091] [DEBUG] QUERY OK source="payout_items" db=2.0ms SELECT p0.`id`, p0.`payout_batch_id`, p0.`settlement_mis_id`, p0.`settlement_date`, p0.`merchant_mid`, p0.`merchant_id`, p0.`merchant_name`, p0.`merchant_ref_number`, p0.`bank_name`, p0.`iban`, p0.`account_number`, p0.`bank_code`, p0.`currency`, p0.`gross_amount`, p0.`total_deductions`, p0.`payout_amount`, p0.`transaction_count`, p0.`net_settlement_amount`, p0.`total_adjustments_credit`, p0.`total_adjustments_debit`, p0.`final_payout_amount`, p0.`total_gross_amount`, p0.`total_mdr_amount`, p0.`total_vat_amount`, p0.`status`, p0.`bank_transfer_ref`, p0.`confirmed_at`, p0.`rejection_reason`, p0.`rejected_at`, p0.`re_initiated_at`, p0.`re_initiated_batch_id`, p0.`inserted_at`, p0.`updated_at` FROM `payout_items` AS p0 WHERE (p0.`merchant_mid` = ?) AND (p0.`status` IN ('pending','transmitted')) ORDER BY p0.`inserted_at` DESC LIMIT 1 ["425590250000000"] ↳ anonymous fn/3 in Ecto.Adapters.SQL.checkout_or_transaction/4, at: lib/ecto/adapters/sql.ex:1473 [2026-09-02 10:25:26.094] [DEBUG] QUERY OK source="bank_confirmation_records" db=2.1ms UPDATE `bank_confirmation_records` SET `validation_status` = ?, `payout_item_id` = ?, `amount_match` = ?, `expected_amount` = ?, `updated_at` = ? WHERE `id` = ? ["valid", 271, true, Decimal.new("544.80"), ~N[2026-09-02 10:25:26], 99] ↳ anonymous fn/3 in Ecto.Adapters.SQL.checkout_or_transaction/4, at: lib/ecto/adapters/sql.ex:1473 [2026-09-02 10:25:26.096] [DEBUG] QUERY OK db=1.0ms INSERT INTO `bank_confirmation_records` (`status`,`merchant_mid`,`confirmed_at`,`already_confirmed`,`amount_from_csv`,`transfer_reference_number`,`batch_id`,`amount_match`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?) ["credited", "E2E_M3_TEST001", ~N[2026-09-02 10:30:00], false, Decimal.new("2295.26"), "BNK20260902M3", 72, false, ~N[2026-09-02 10:25:26], ~N[2026-09-02 10:25:26]] ↳ anonymous fn/3 in Ecto.Adapters.SQL.checkout_or_transaction/4, at: lib/ecto/adapters/sql.ex:1473 [2026-09-02 10:25:26.097] [DEBUG] QUERY OK source="payout_items" db=0.7ms SELECT p0.`id`, p0.`payout_batch_id`, p0.`settlement_mis_id`, p0.`settlement_date`, p0.`merchant_mid`, p0.`merchant_id`, p0.`merchant_name`, p0.`merchant_ref_number`, p0.`bank_name`, p0.`iban`, p0.`account_number`, p0.`bank_code`, p0.`currency`, p0.`gross_amount`, p0.`total_deductions`, p0.`payout_amount`, p0.`transaction_count`, p0.`net_settlement_amount`, p0.`total_adjustments_credit`, p0.`total_adjustments_debit`, p0.`final_payout_amount`, p0.`total_gross_amount`, p0.`total_mdr_amount`, p0.`total_vat_amount`, p0.`status`, p0.`bank_transfer_ref`, p0.`confirmed_at`, p0.`rejection_reason`, p0.`rejected_at`, p0.`re_initiated_at`, p0.`re_initiated_batch_id`, p0.`inserted_at`, p0.`updated_at` FROM `payout_items` AS p0 WHERE (p0.`merchant_mid` = ?) AND (p0.`status` IN ('pending','transmitted')) ORDER BY p0.`inserted_at` DESC LIMIT 1 ["E2E_M3_TEST001"] ↳ anonymous fn/3 in Ecto.Adapters.SQL.checkout_or_transaction/4, at: lib/ecto/adapters/sql.ex:1473 [2026-09-02 10:25:26.098] [DEBUG] QUERY OK source="bank_confirmation_records" db=0.9ms UPDATE `bank_confirmation_records` SET `validation_status` = ?, `payout_item_id` = ?, `amount_match` = ?, `expected_amount` = ?, `updated_at` = ? WHERE `id` = ? ["valid", 272, true, Decimal.new("2295.26"), ~N[2026-09-02 10:25:26], 100] ↳ anonymous fn/3 in Ecto.Adapters.SQL.checkout_or_transaction/4, at: lib/ecto/adapters/sql.ex:1473 [2026-09-02 10:25:26.111] [DEBUG] QUERY OK source="bank_confirmation_records" db=1.5ms SELECT b0.`id`, b0.`merchant_mid`, b0.`status`, b0.`transfer_reference_number`, b0.`confirmed_at`, b0.`failure_reason`, b0.`amount_from_csv`, b0.`validation_status`, b0.`validation_error`, b0.`expected_amount`, b0.`amount_match`, b0.`already_confirmed`, b0.`already_confirmed_at`, b0.`processed_at`, b0.`processed_status`, b0.`processed_error`, b0.`batch_id`, b0.`payout_item_id`, b0.`inserted_at`, b0.`updated_at`, b0.`batch_id` FROM `bank_confirmation_records` AS b0 WHERE (b0.`batch_id` = ?) ORDER BY b0.`batch_id` [72] ↳ anonymous fn/3 in Ecto.Adapters.SQL.checkout_or_transaction/4, at: lib/ecto/adapters/sql.ex:1473 [2026-09-02 10:25:26.190] [DEBUG] QUERY OK db=78.4ms commit [] ↳ PlatformWeb.SettlementLive.PayoutDashboard.handle_event/3, at: lib/platform_web/live/settlement_live/payout_dashboard.ex:877 [2026-09-02 10:25:26.190] [DEBUG] Replied in 155ms [2026-09-02 10:25:28.389] [DEBUG] HANDLE EVENT "switch_tab" in PlatformWeb.SettlementLive.PayoutDashboard Parameters: %{"tab" => "approval", "value" => ""} [2026-09-02 10:25:28.393] [DEBUG] QUERY OK source="bank_confirmation_batches" db=0.7ms queue=2.2ms idle=250.2ms SELECT b0.`id`, b0.`filename`, b0.`uploaded_at`, b0.`total_records`, b0.`successful_records`, b0.`failed_records`, b0.`approval_status`, b0.`approved_at`, b0.`rejection_reason`, b0.`rejected_at`, b0.`committed_at`, b0.`commit_status`, b0.`commit_error`, b0.`user_id`, b0.`approved_by_user_id`, b0.`inserted_at`, b0.`updated_at` FROM `bank_confirmation_batches` AS b0 WHERE (b0.`approval_status` = 'pending') ORDER BY b0.`inserted_at` DESC [] ↳ PlatformWeb.SettlementLive.PayoutDashboard.handle_event/3, at: lib/platform_web/live/settlement_live/payout_dashboard.ex:791 [2026-09-02 10:25:28.395] [DEBUG] QUERY OK source="users" db=0.5ms queue=0.8ms idle=0.9ms SELECT u0.`id`, u0.`email`, u0.`hashed_password`, u0.`confirmed_at`, u0.`role`, u0.`name`, u0.`first_name`, u0.`last_name`, u0.`data`, u0.`inserted_at`, u0.`updated_at`, u0.`id` FROM `users` AS u0 WHERE (u0.`id` = ?) [3] ↳ PlatformWeb.SettlementLive.PayoutDashboard.handle_event/3, at: lib/platform_web/live/settlement_live/payout_dashboard.ex:791 [2026-09-02 10:25:28.396] [DEBUG] QUERY OK source="bank_confirmation_records" db=0.7ms queue=1.7ms idle=0.0ms SELECT b0.`id`, b0.`merchant_mid`, b0.`status`, b0.`transfer_reference_number`, b0.`confirmed_at`, b0.`failure_reason`, b0.`amount_from_csv`, b0.`validation_status`, b0.`validation_error`, b0.`expected_amount`, b0.`amount_match`, b0.`already_confirmed`, b0.`already_confirmed_at`, b0.`processed_at`, b0.`processed_status`, b0.`processed_error`, b0.`batch_id`, b0.`payout_item_id`, b0.`inserted_at`, b0.`updated_at`, b0.`batch_id` FROM `bank_confirmation_records` AS b0 WHERE (b0.`batch_id` IN (?,?,?,?,?,?,?)) ORDER BY b0.`batch_id` [49, 51, 53, 54, 65, 66, 72] ↳ PlatformWeb.SettlementLive.PayoutDashboard.handle_event/3, at: lib/platform_web/live/settlement_live/payout_dashboard.ex:791 [2026-09-02 10:25:28.440] [DEBUG] QUERY OK source="payout_items" db=2.7ms queue=40.8ms idle=0.3ms SELECT p0.`id`, p0.`payout_batch_id`, p0.`settlement_mis_id`, p0.`settlement_date`, p0.`merchant_mid`, p0.`merchant_id`, p0.`merchant_name`, p0.`merchant_ref_number`, p0.`bank_name`, p0.`iban`, p0.`account_number`, p0.`bank_code`, p0.`currency`, p0.`gross_amount`, p0.`total_deductions`, p0.`payout_amount`, p0.`transaction_count`, p0.`net_settlement_amount`, p0.`total_adjustments_credit`, p0.`total_adjustments_debit`, p0.`final_payout_amount`, p0.`total_gross_amount`, p0.`total_mdr_amount`, p0.`total_vat_amount`, p0.`status`, p0.`bank_transfer_ref`, p0.`confirmed_at`, p0.`rejection_reason`, p0.`rejected_at`, p0.`re_initiated_at`, p0.`re_initiated_batch_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `payout_items` AS p0 WHERE (p0.`id` IN (?,?,?)) [270, 271, 272] ↳ PlatformWeb.SettlementLive.PayoutDashboard.handle_event/3, at: lib/platform_web/live/settlement_live/payout_dashboard.ex:791 [2026-09-02 10:25:28.440] [DEBUG] Replied in 52ms [2026-09-02 10:25:30.444] [DEBUG] HANDLE EVENT "select_confirmation_batch" in PlatformWeb.SettlementLive.PayoutDashboard Parameters: %{"batch_id" => "72", "value" => ""} [2026-09-02 10:25:30.447] [DEBUG] QUERY OK source="bank_confirmation_batches" db=0.7ms queue=1.3ms idle=662.0ms SELECT b0.`id`, b0.`filename`, b0.`uploaded_at`, b0.`total_records`, b0.`successful_records`, b0.`failed_records`, b0.`approval_status`, b0.`approved_at`, b0.`rejection_reason`, b0.`rejected_at`, b0.`committed_at`, b0.`commit_status`, b0.`commit_error`, b0.`user_id`, b0.`approved_by_user_id`, b0.`inserted_at`, b0.`updated_at` FROM `bank_confirmation_batches` AS b0 WHERE (b0.`id` = ?) [72] ↳ PlatformWeb.SettlementLive.PayoutDashboard.handle_event/3, at: lib/platform_web/live/settlement_live/payout_dashboard.ex:922 [2026-09-02 10:25:30.449] [DEBUG] QUERY OK source="bank_confirmation_records" db=0.6ms queue=0.4ms idle=298.1ms SELECT b0.`id`, b0.`merchant_mid`, b0.`status`, b0.`transfer_reference_number`, b0.`confirmed_at`, b0.`failure_reason`, b0.`amount_from_csv`, b0.`validation_status`, b0.`validation_error`, b0.`expected_amount`, b0.`amount_match`, b0.`already_confirmed`, b0.`already_confirmed_at`, b0.`processed_at`, b0.`processed_status`, b0.`processed_error`, b0.`batch_id`, b0.`payout_item_id`, b0.`inserted_at`, b0.`updated_at`, b0.`batch_id` FROM `bank_confirmation_records` AS b0 WHERE (b0.`batch_id` = ?) ORDER BY b0.`batch_id` [72] ↳ PlatformWeb.SettlementLive.PayoutDashboard.handle_event/3, at: lib/platform_web/live/settlement_live/payout_dashboard.ex:922 [2026-09-02 10:25:30.452] [DEBUG] QUERY OK source="payout_items" db=1.4ms queue=0.5ms idle=3.0ms SELECT p0.`id`, p0.`payout_batch_id`, p0.`settlement_mis_id`, p0.`settlement_date`, p0.`merchant_mid`, p0.`merchant_id`, p0.`merchant_name`, p0.`merchant_ref_number`, p0.`bank_name`, p0.`iban`, p0.`account_number`, p0.`bank_code`, p0.`currency`, p0.`gross_amount`, p0.`total_deductions`, p0.`payout_amount`, p0.`transaction_count`, p0.`net_settlement_amount`, p0.`total_adjustments_credit`, p0.`total_adjustments_debit`, p0.`final_payout_amount`, p0.`total_gross_amount`, p0.`total_mdr_amount`, p0.`total_vat_amount`, p0.`status`, p0.`bank_transfer_ref`, p0.`confirmed_at`, p0.`rejection_reason`, p0.`rejected_at`, p0.`re_initiated_at`, p0.`re_initiated_batch_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `payout_items` AS p0 WHERE (p0.`id` IN (?,?,?)) [270, 271, 272] ↳ PlatformWeb.SettlementLive.PayoutDashboard.handle_event/3, at: lib/platform_web/live/settlement_live/payout_dashboard.ex:922 [2026-09-02 10:25:30.452] [DEBUG] Replied in 8ms [2026-09-02 10:25:32.386] [DEBUG] HANDLE EVENT "confirm_approval" in PlatformWeb.SettlementLive.PayoutDashboard Parameters: %{"value" => ""} [2026-09-02 10:25:32.388] [DEBUG] QUERY OK db=0.4ms idle=700.5ms begin [] ↳ PlatformWeb.SettlementLive.PayoutDashboard.handle_event/3, at: lib/platform_web/live/settlement_live/payout_dashboard.ex:944 [2026-09-02 10:25:32.390] [DEBUG] QUERY OK source="bank_confirmation_records" db=0.8ms SELECT b0.`id`, b0.`merchant_mid`, b0.`status`, b0.`transfer_reference_number`, b0.`confirmed_at`, b0.`failure_reason`, b0.`amount_from_csv`, b0.`validation_status`, b0.`validation_error`, b0.`expected_amount`, b0.`amount_match`, b0.`already_confirmed`, b0.`already_confirmed_at`, b0.`processed_at`, b0.`processed_status`, b0.`processed_error`, b0.`batch_id`, b0.`payout_item_id`, b0.`inserted_at`, b0.`updated_at` FROM `bank_confirmation_records` AS b0 WHERE ((b0.`batch_id` = ?) AND (b0.`validation_status` = 'error')) [72] ↳ anonymous fn/3 in Ecto.Adapters.SQL.checkout_or_transaction/4, at: lib/ecto/adapters/sql.ex:1473 [2026-09-02 10:25:32.394] [DEBUG] QUERY OK source="bank_confirmation_batches" db=1.5ms UPDATE `bank_confirmation_batches` SET `approval_status` = ?, `approved_at` = ?, `approved_by_user_id` = ?, `committed_at` = ?, `updated_at` = ? WHERE `id` = ? ["approved", ~N[2026-09-02 10:25:32], 3, ~N[2026-09-02 10:25:32], ~N[2026-09-02 10:25:32], 72] ↳ anonymous fn/3 in Ecto.Adapters.SQL.checkout_or_transaction/4, at: lib/ecto/adapters/sql.ex:1473 [2026-09-02 10:25:32.398] [DEBUG] QUERY OK source="bank_confirmation_records" db=1.2ms SELECT b0.`id`, b0.`merchant_mid`, b0.`status`, b0.`transfer_reference_number`, b0.`confirmed_at`, b0.`failure_reason`, b0.`amount_from_csv`, b0.`validation_status`, b0.`validation_error`, b0.`expected_amount`, b0.`amount_match`, b0.`already_confirmed`, b0.`already_confirmed_at`, b0.`processed_at`, b0.`processed_status`, b0.`processed_error`, b0.`batch_id`, b0.`payout_item_id`, b0.`inserted_at`, b0.`updated_at` FROM `bank_confirmation_records` AS b0 WHERE (b0.`batch_id` = ?) [72] ↳ anonymous fn/3 in Ecto.Adapters.SQL.checkout_or_transaction/4, at: lib/ecto/adapters/sql.ex:1473 [2026-09-02 10:25:32.400] [DEBUG] QUERY OK source="payout_items" db=1.3ms SELECT p0.`id`, p0.`payout_batch_id`, p0.`settlement_mis_id`, p0.`settlement_date`, p0.`merchant_mid`, p0.`merchant_id`, p0.`merchant_name`, p0.`merchant_ref_number`, p0.`bank_name`, p0.`iban`, p0.`account_number`, p0.`bank_code`, p0.`currency`, p0.`gross_amount`, p0.`total_deductions`, p0.`payout_amount`, p0.`transaction_count`, p0.`net_settlement_amount`, p0.`total_adjustments_credit`, p0.`total_adjustments_debit`, p0.`final_payout_amount`, p0.`total_gross_amount`, p0.`total_mdr_amount`, p0.`total_vat_amount`, p0.`status`, p0.`bank_transfer_ref`, p0.`confirmed_at`, p0.`rejection_reason`, p0.`rejected_at`, p0.`re_initiated_at`, p0.`re_initiated_batch_id`, p0.`inserted_at`, p0.`updated_at` FROM `payout_items` AS p0 WHERE (p0.`id` = ?) [270] ↳ anonymous fn/3 in Ecto.Adapters.SQL.checkout_or_transaction/4, at: lib/ecto/adapters/sql.ex:1473 [2026-09-02 10:25:32.403] [DEBUG] QUERY OK source="payout_items" db=0.7ms UPDATE `payout_items` SET `status` = ?, `confirmed_at` = ?, `bank_transfer_ref` = ?, `updated_at` = ? WHERE `id` = ? ["paid", ~N[2026-09-02 10:25:32], "BNK20260902M1", ~N[2026-09-02 10:25:32], 270] ↳ anonymous fn/3 in Ecto.Adapters.SQL.checkout_or_transaction/4, at: lib/ecto/adapters/sql.ex:1473 [2026-09-02 10:25:32.404] [DEBUG] QUERY OK source="payout_batches" db=0.5ms SELECT p0.`id`, p0.`settlement_mis_id`, p0.`payout_date`, p0.`batch_type`, p0.`total_merchants`, p0.`total_items`, p0.`total_amount`, p0.`currency`, p0.`file_path`, p0.`file_name`, p0.`encryption_method`, p0.`batch_reference`, p0.`encrypted_file_path`, p0.`file_hash`, p0.`encryption_key_ref`, p0.`generated_by`, p0.`generated_at`, p0.`transmission_method`, p0.`status`, p0.`transmitted_at`, p0.`transmission_reference`, p0.`bank_confirmation_ref`, p0.`failure_reason`, p0.`confirmed_at`, p0.`confirmed_item_count`, p0.`rejected_item_count`, p0.`inserted_at`, p0.`updated_at` FROM `payout_batches` AS p0 WHERE (p0.`id` = ?) [180] ↳ anonymous fn/3 in Ecto.Adapters.SQL.checkout_or_transaction/4, at: lib/ecto/adapters/sql.ex:1473 [2026-09-02 10:25:32.406] [DEBUG] QUERY OK source="payout_batches" db=0.4ms UPDATE `payout_batches` SET `status` = ?, `transmission_reference` = ?, `transmitted_at` = ?, `updated_at` = ? WHERE `id` = ? ["confirmed", "BNK20260902M1", ~N[2026-09-02 10:30:00], ~N[2026-09-02 10:25:32], 180] ↳ anonymous fn/3 in Ecto.Adapters.SQL.checkout_or_transaction/4, at: lib/ecto/adapters/sql.ex:1473 [2026-09-02 10:25:32.406] [INFO ] Updated PayoutBatch 180 with bank ref and transmitted_at [2026-09-02 10:25:32.409] [DEBUG] QUERY OK source="core_transactions" db=0.9ms UPDATE `core_transactions` AS c0 SET c0.`bank_transfer_date` = ?, c0.`settlement_status` = ?, c0.`bank_transfer_reference` = ?, c0.`updated_at` = ? WHERE (c0.`merchant_mid` = ?) AND (c0.`switch_settled_date` = ?) AND (c0.`settlement_status` IN ('pending','processing','unmatched','matched')) [~D[2026-09-02], "paid", "BNK20260902M1", ~N[2026-09-02 10:25:32], "419926360000000", ~D[2026-09-01]] ↳ anonymous fn/3 in Ecto.Adapters.SQL.checkout_or_transaction/4, at: lib/ecto/adapters/sql.ex:1473 [2026-09-02 10:25:32.489] [INFO ] SettlementAdviceWorker enqueued for PayoutItem: 270 [2026-09-02 10:25:32.588] [INFO ] [SettlementAdviceWorker] Starting for payout_item_id=270 [2026-09-02 10:25:32.588] [INFO ] [SettlementAdviceWorker] Fetching PayoutItem 270 [2026-09-02 10:25:32.591] [DEBUG] QUERY OK source="payout_items" db=1.3ms queue=0.7ms idle=1.1ms SELECT p0.`id`, p0.`payout_batch_id`, p0.`settlement_mis_id`, p0.`settlement_date`, p0.`merchant_mid`, p0.`merchant_id`, p0.`merchant_name`, p0.`merchant_ref_number`, p0.`bank_name`, p0.`iban`, p0.`account_number`, p0.`bank_code`, p0.`currency`, p0.`gross_amount`, p0.`total_deductions`, p0.`payout_amount`, p0.`transaction_count`, p0.`net_settlement_amount`, p0.`total_adjustments_credit`, p0.`total_adjustments_debit`, p0.`final_payout_amount`, p0.`total_gross_amount`, p0.`total_mdr_amount`, p0.`total_vat_amount`, p0.`status`, p0.`bank_transfer_ref`, p0.`confirmed_at`, p0.`rejection_reason`, p0.`rejected_at`, p0.`re_initiated_at`, p0.`re_initiated_batch_id`, p0.`inserted_at`, p0.`updated_at` FROM `payout_items` AS p0 WHERE (p0.`id` = ?) [270] ↳ SettlementCore.Workers.SettlementAdviceWorker.perform/1, at: lib/settlement_core/workers/settlement_advice_worker.ex:40 [2026-09-02 10:25:32.591] [INFO ] [SettlementAdviceWorker] ✓ Got PayoutItem, MID=419926360000000, payout_batch_id=180 [2026-09-02 10:25:32.592] [INFO ] [SettlementAdviceWorker] Fetching PayoutBatch 180 [2026-09-02 10:25:32.594] [DEBUG] QUERY OK source="payout_batches" db=1.9ms idle=0.4ms SELECT p0.`id`, p0.`settlement_mis_id`, p0.`payout_date`, p0.`batch_type`, p0.`total_merchants`, p0.`total_items`, p0.`total_amount`, p0.`currency`, p0.`file_path`, p0.`file_name`, p0.`encryption_method`, p0.`batch_reference`, p0.`encrypted_file_path`, p0.`file_hash`, p0.`encryption_key_ref`, p0.`generated_by`, p0.`generated_at`, p0.`transmission_method`, p0.`status`, p0.`transmitted_at`, p0.`transmission_reference`, p0.`bank_confirmation_ref`, p0.`failure_reason`, p0.`confirmed_at`, p0.`confirmed_item_count`, p0.`rejected_item_count`, p0.`inserted_at`, p0.`updated_at` FROM `payout_batches` AS p0 WHERE (p0.`id` = ?) [180] ↳ SettlementCore.Workers.SettlementAdviceWorker.perform/1, at: lib/settlement_core/workers/settlement_advice_worker.ex:44 [2026-09-02 10:25:32.594] [INFO ] [SettlementAdviceWorker] ✓ Got PayoutBatch, ref=BATCH-20260901-328 [2026-09-02 10:25:32.594] [INFO ] [SettlementAdviceWorker] Fetching TidMaster for MID=419926360000000 [2026-09-02 10:25:32.596] [DEBUG] QUERY OK source="tid_masters" db=1.3ms idle=0.7ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` = ?) ["419926360000000"] ↳ SettlementCore.Workers.SettlementAdviceWorker.perform/1, at: lib/settlement_core/workers/settlement_advice_worker.ex:48 [2026-09-02 10:25:32.597] [INFO ] [SettlementAdviceWorker] ✓ Got TidMaster: %SettlementCore.TidMaster{__meta__: #Ecto.Schema.Metadata<:loaded, "tid_masters">, id: 5, mms_user_id: 1684, mid: "419926360000000", store_id: 5, merchant_ref_number: "419926360000000", tid: ["92636601", "22226532"], qr_id: nil, merchant_name_legal: "Kalyan Mart", merchant_name_dba: "ABC Electronics", registered_mobile: "1234567890", registered_email: "sunny@dataaegis.com", mcc_code: "5411", mcc_description: "GROCERY STORES", bank_code: "BANK001", bank_name: "Kalyan bnk", bank_account_number: "412412342134", iban: "78979888888888888888888", virtual_iban: "AE984124715281260099511", enabled_schemes: ["mpos", "pos_terminal", "qr_soundbox"], mdr_rates: %{"INTERNATIONAL_CARDS" => %{"fixed_fee" => "0.00", "maximum_fee" => "0.00", "minimum_fee" => "0.00", "percentage_rate" => "2.7500"}}, onboarding_date: ~D[2026-06-12], contract_approved_at: ~N[2026-06-12 07:39:42], onboarding_source: nil, onboarding_id: nil, last_transaction_date: nil, last_transaction_amount: nil, mms_synced_at: ~N[2026-06-18 11:08:57], status: "active", spare_fields: %{}, inserted_at: ~N[2026-06-12 10:04:19], updated_at: ~N[2026-06-18 11:08:57]} [2026-09-02 10:25:32.597] [INFO ] [SettlementAdviceWorker] Email address: "sunny@dataaegis.com" [2026-09-02 10:25:32.597] [INFO ] [SettlementAdviceWorker] Building PayoutItemBreakdown [2026-09-02 10:25:32.607] [DEBUG] QUERY OK source="settlement_mis_items" db=1.3ms queue=2.5ms idle=7.5ms SELECT s0.`id`, s0.`settlement_mis_id`, s0.`core_transaction_id`, s0.`merchant_mid`, s0.`merchant_id`, s0.`merchant_name`, s0.`merchant_ref_number`, s0.`bank_name`, s0.`iban`, s0.`account_number`, s0.`settlement_date`, s0.`rrn`, s0.`tid`, s0.`auth_number`, s0.`transaction_date`, s0.`transaction_type`, s0.`scheme_name`, s0.`card_type_code`, s0.`gross_amount`, s0.`mdr_percentage_rate`, s0.`mdr_amount`, s0.`vat_rate`, s0.`vat_amount`, s0.`interchange_fee`, s0.`adjustment_amount`, s0.`ar_recovery`, s0.`net_payable`, s0.`transaction_count`, s0.`total_gross_amount`, s0.`total_mdr_amount`, s0.`total_vat_amount`, s0.`total_interchange_fee`, s0.`total_net_settlement_amount`, s0.`risk_status`, s0.`exception_type`, s0.`mpr_sent`, s0.`margin_contribution`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis_items` AS s0 WHERE (s0.`settlement_mis_id` = ?) AND (s0.`merchant_mid` = ?) [328, "419926360000000"] ↳ SettlementCore.PayoutItemBreakdown.build/1, at: lib/settlement_core/payout_item_breakdown.ex:10 [2026-09-02 10:25:32.614] [DEBUG] QUERY OK source="merchant_adjustments" db=1.9ms queue=3.0ms idle=0.3ms SELECT m0.`id`, m0.`merchant_mid`, m0.`merchant_name`, m0.`adjustment_date`, m0.`debit_credit`, m0.`amount`, m0.`currency`, m0.`adjustment_type`, m0.`description`, m0.`settlement_mis_id`, m0.`status`, m0.`applied_at`, m0.`cancelled_at`, m0.`cancel_reason`, m0.`approval_status`, m0.`level1_reviewed_by`, m0.`level1_reviewed_at`, m0.`level2_approved_by`, m0.`level2_approved_at`, m0.`rejected_by`, m0.`rejected_at`, m0.`rejection_reason`, m0.`created_by`, m0.`updated_by`, m0.`inserted_at`, m0.`updated_at` FROM `merchant_adjustments` AS m0 WHERE (m0.`settlement_mis_id` = ?) AND (m0.`merchant_mid` = ?) AND (m0.`approval_status` = 'approved') [328, "419926360000000"] ↳ SettlementCore.PayoutItemBreakdown.build/1, at: lib/settlement_core/payout_item_breakdown.ex:11 [2026-09-02 10:25:32.615] [INFO ] [SettlementAdviceWorker] ✓ Breakdown built, scheme_rows count: 2 [2026-09-02 10:25:32.615] [INFO ] [SettlementAdviceWorker] merchant_name=Kalyan Mart [2026-09-02 10:25:32.616] [INFO ] [SettlementAdviceWorker] group_id=419926360000000 [2026-09-02 10:25:32.617] [INFO ] [SettlementAdviceWorker] merchant_trn= [2026-09-02 10:25:32.617] [INFO ] [SettlementAdviceWorker] Building section_rows from 2 scheme_rows [2026-09-02 10:25:32.618] [INFO ] [SettlementAdviceWorker] ✓ section_rows count: 8 [2026-09-02 10:25:32.618] [INFO ] [SettlementAdviceWorker] Getting logo_src [2026-09-02 10:25:32.620] [INFO ] [SettlementAdviceWorker] ✓ logo_src=file:///var/www/internaltesting/sunny/tmsapp/tmsuat_apps/_build/dev/lib/platform_web/priv/static/images/logo.png [2026-09-02 10:25:32.622] [DEBUG] QUERY OK source="bank_confirmation_records" db=0.5ms queue=0.8ms idle=8.3ms SELECT b0.`id`, b0.`merchant_mid`, b0.`status`, b0.`transfer_reference_number`, b0.`confirmed_at`, b0.`failure_reason`, b0.`amount_from_csv`, b0.`validation_status`, b0.`validation_error`, b0.`expected_amount`, b0.`amount_match`, b0.`already_confirmed`, b0.`already_confirmed_at`, b0.`processed_at`, b0.`processed_status`, b0.`processed_error`, b0.`batch_id`, b0.`payout_item_id`, b0.`inserted_at`, b0.`updated_at` FROM `bank_confirmation_records` AS b0 WHERE (b0.`payout_item_id` = ?) [270] ↳ SettlementCore.Workers.SettlementAdviceWorker.confirmation_transfer_reference/1, at: lib/settlement_core/workers/settlement_advice_worker.ex:306 [2026-09-02 10:25:32.622] [INFO ] [SettlementAdviceWorker] transfer_reference=BNK20260902M1 [2026-09-02 10:25:32.622] [INFO ] [SettlementAdviceWorker] Building assigns map [2026-09-02 10:25:32.624] [INFO ] [SettlementAdviceWorker] ✓ Assigns built with 23 fields [2026-09-02 10:25:32.624] [INFO ] [SettlementAdviceWorker] Calling SettlementNotifier.send_settlement_advice to sunny@dataaegis.com [2026-09-02 10:25:32.625] [INFO ] [SettlementNotifier] Sending Settlement Advice to sunny@dataaegis.com ref=BNK20260902M1 [2026-09-02 10:25:32.631] [INFO ] [EmailPdfGenerator] Rendering settlement_advice_pdf to PDF: Settlement_Advice_419926360000000_2026-09-01.pdf [2026-09-02 10:25:32.631] [INFO ] [EmailPdfGenerator] ✓ HTML rendered, size: 9405 bytes [2026-09-02 10:25:32.633] [INFO ] [EmailPdfGenerator] ✓ HTML written to /tmp/platform_web_pdf_1125/document.html [2026-09-02 10:25:32.635] [INFO ] [EmailPdfGenerator] Using wkhtmltopdf [2026-09-02 10:25:32.675] [INFO ] VatInvoiceWorker enqueued for PayoutItem: 270 [2026-09-02 10:25:32.805] [INFO ] [VatInvoiceWorker] Generating VAT invoice for payout_item_id=270 [2026-09-02 10:25:32.809] [INFO ] VatMisDistributionWorker enqueued for PayoutItem: 270 [2026-09-02 10:25:32.814] [DEBUG] QUERY OK source="payout_items" db=8.4ms idle=0.3ms SELECT p0.`id`, p0.`payout_batch_id`, p0.`settlement_mis_id`, p0.`settlement_date`, p0.`merchant_mid`, p0.`merchant_id`, p0.`merchant_name`, p0.`merchant_ref_number`, p0.`bank_name`, p0.`iban`, p0.`account_number`, p0.`bank_code`, p0.`currency`, p0.`gross_amount`, p0.`total_deductions`, p0.`payout_amount`, p0.`transaction_count`, p0.`net_settlement_amount`, p0.`total_adjustments_credit`, p0.`total_adjustments_debit`, p0.`final_payout_amount`, p0.`total_gross_amount`, p0.`total_mdr_amount`, p0.`total_vat_amount`, p0.`status`, p0.`bank_transfer_ref`, p0.`confirmed_at`, p0.`rejection_reason`, p0.`rejected_at`, p0.`re_initiated_at`, p0.`re_initiated_batch_id`, p0.`inserted_at`, p0.`updated_at` FROM `payout_items` AS p0 WHERE (p0.`id` = ?) [270] ↳ SettlementCore.Workers.VatInvoiceWorker.perform/1, at: lib/settlement_core/workers/vat_invoice_worker.ex:47 [2026-09-02 10:25:32.818] [DEBUG] QUERY OK source="tid_masters" db=0.6ms queue=0.1ms idle=7.6ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` = ?) ["419926360000000"] ↳ SettlementCore.Workers.VatInvoiceWorker.perform/1, at: lib/settlement_core/workers/vat_invoice_worker.ex:48 [2026-09-02 10:25:32.832] [DEBUG] QUERY OK source="vat_invoices" db=0.8ms queue=3.0ms idle=11.6ms SELECT v0.`id`, v0.`merchant_mid`, v0.`merchant_id`, v0.`settlement_date`, v0.`invoice_number`, v0.`invoice_date`, v0.`payout_item_id`, v0.`gross_amount`, v0.`mdr_amount`, v0.`vat_amount`, v0.`sent_at`, v0.`sent_to_email`, v0.`inserted_at`, v0.`updated_at` FROM `vat_invoices` AS v0 WHERE (v0.`payout_item_id` = ?) [270] ↳ SettlementCore.Workers.VatInvoiceWorker.create_invoice/1, at: lib/settlement_core/workers/vat_invoice_worker.ex:79 [2026-09-02 10:25:32.835] [DEBUG] QUERY OK source="settlement_mis_items" db=1.2ms queue=0.2ms idle=1.3ms SELECT s0.`id`, s0.`settlement_mis_id`, s0.`core_transaction_id`, s0.`merchant_mid`, s0.`merchant_id`, s0.`merchant_name`, s0.`merchant_ref_number`, s0.`bank_name`, s0.`iban`, s0.`account_number`, s0.`settlement_date`, s0.`rrn`, s0.`tid`, s0.`auth_number`, s0.`transaction_date`, s0.`transaction_type`, s0.`scheme_name`, s0.`card_type_code`, s0.`gross_amount`, s0.`mdr_percentage_rate`, s0.`mdr_amount`, s0.`vat_rate`, s0.`vat_amount`, s0.`interchange_fee`, s0.`adjustment_amount`, s0.`ar_recovery`, s0.`net_payable`, s0.`transaction_count`, s0.`total_gross_amount`, s0.`total_mdr_amount`, s0.`total_vat_amount`, s0.`total_interchange_fee`, s0.`total_net_settlement_amount`, s0.`risk_status`, s0.`exception_type`, s0.`mpr_sent`, s0.`margin_contribution`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis_items` AS s0 WHERE (s0.`settlement_mis_id` = ?) AND (s0.`merchant_mid` = ?) [328, "419926360000000"] ↳ SettlementCore.PayoutItemBreakdown.build/1, at: lib/settlement_core/payout_item_breakdown.ex:10 [2026-09-02 10:25:32.837] [DEBUG] QUERY OK source="merchant_adjustments" db=1.1ms idle=0.2ms SELECT m0.`id`, m0.`merchant_mid`, m0.`merchant_name`, m0.`adjustment_date`, m0.`debit_credit`, m0.`amount`, m0.`currency`, m0.`adjustment_type`, m0.`description`, m0.`settlement_mis_id`, m0.`status`, m0.`applied_at`, m0.`cancelled_at`, m0.`cancel_reason`, m0.`approval_status`, m0.`level1_reviewed_by`, m0.`level1_reviewed_at`, m0.`level2_approved_by`, m0.`level2_approved_at`, m0.`rejected_by`, m0.`rejected_at`, m0.`rejection_reason`, m0.`created_by`, m0.`updated_by`, m0.`inserted_at`, m0.`updated_at` FROM `merchant_adjustments` AS m0 WHERE (m0.`settlement_mis_id` = ?) AND (m0.`merchant_mid` = ?) AND (m0.`approval_status` = 'approved') [328, "419926360000000"] ↳ SettlementCore.PayoutItemBreakdown.build/1, at: lib/settlement_core/payout_item_breakdown.ex:11 [2026-09-02 10:25:32.840] [DEBUG] QUERY OK db=1.1ms queue=1.7ms idle=0.1ms SELECT GET_LOCK(?, 10) ["vat_invoice_2026"] [2026-09-02 10:25:32.857] [DEBUG] QUERY OK source="bank_confirmation_records" db=3.2ms UPDATE `bank_confirmation_records` SET `processed_at` = ?, `processed_status` = ?, `updated_at` = ? WHERE `id` = ? [~N[2026-09-02 10:25:32], "success", ~N[2026-09-02 10:25:32], 98] ↳ anonymous fn/3 in Ecto.Adapters.SQL.checkout_or_transaction/4, at: lib/ecto/adapters/sql.ex:1473 [2026-09-02 10:25:32.859] [DEBUG] QUERY OK source="payout_items" db=1.8ms SELECT p0.`id`, p0.`payout_batch_id`, p0.`settlement_mis_id`, p0.`settlement_date`, p0.`merchant_mid`, p0.`merchant_id`, p0.`merchant_name`, p0.`merchant_ref_number`, p0.`bank_name`, p0.`iban`, p0.`account_number`, p0.`bank_code`, p0.`currency`, p0.`gross_amount`, p0.`total_deductions`, p0.`payout_amount`, p0.`transaction_count`, p0.`net_settlement_amount`, p0.`total_adjustments_credit`, p0.`total_adjustments_debit`, p0.`final_payout_amount`, p0.`total_gross_amount`, p0.`total_mdr_amount`, p0.`total_vat_amount`, p0.`status`, p0.`bank_transfer_ref`, p0.`confirmed_at`, p0.`rejection_reason`, p0.`rejected_at`, p0.`re_initiated_at`, p0.`re_initiated_batch_id`, p0.`inserted_at`, p0.`updated_at` FROM `payout_items` AS p0 WHERE (p0.`id` = ?) [271] ↳ anonymous fn/3 in Ecto.Adapters.SQL.checkout_or_transaction/4, at: lib/ecto/adapters/sql.ex:1473 [2026-09-02 10:25:32.867] [DEBUG] QUERY OK source="payout_items" db=7.5ms UPDATE `payout_items` SET `status` = ?, `confirmed_at` = ?, `bank_transfer_ref` = ?, `updated_at` = ? WHERE `id` = ? ["paid", ~N[2026-09-02 10:25:32], "BNK20260902M2", ~N[2026-09-02 10:25:32], 271] ↳ anonymous fn/3 in Ecto.Adapters.SQL.checkout_or_transaction/4, at: lib/ecto/adapters/sql.ex:1473 [2026-09-02 10:25:32.871] [DEBUG] QUERY OK source="payout_batches" db=2.8ms SELECT p0.`id`, p0.`settlement_mis_id`, p0.`payout_date`, p0.`batch_type`, p0.`total_merchants`, p0.`total_items`, p0.`total_amount`, p0.`currency`, p0.`file_path`, p0.`file_name`, p0.`encryption_method`, p0.`batch_reference`, p0.`encrypted_file_path`, p0.`file_hash`, p0.`encryption_key_ref`, p0.`generated_by`, p0.`generated_at`, p0.`transmission_method`, p0.`status`, p0.`transmitted_at`, p0.`transmission_reference`, p0.`bank_confirmation_ref`, p0.`failure_reason`, p0.`confirmed_at`, p0.`confirmed_item_count`, p0.`rejected_item_count`, p0.`inserted_at`, p0.`updated_at` FROM `payout_batches` AS p0 WHERE (p0.`id` = ?) [180] ↳ anonymous fn/3 in Ecto.Adapters.SQL.checkout_or_transaction/4, at: lib/ecto/adapters/sql.ex:1473 [2026-09-02 10:25:32.885] [DEBUG] QUERY OK source="vat_invoices" db=1.4ms queue=43.5ms idle=0.3ms SELECT count(v0.`id`) FROM `vat_invoices` AS v0 WHERE (YEAR(v0.`invoice_date`) = ?) [2026] ↳ SettlementCore.Workers.VatInvoiceWorker.generate_invoice_number/0, at: lib/settlement_core/workers/vat_invoice_worker.ex:200 [2026-09-02 10:25:32.887] [DEBUG] QUERY OK db=0.3ms queue=1.2ms idle=0.3ms SELECT RELEASE_LOCK(?) ["vat_invoice_2026"] [2026-09-02 10:25:32.916] [DEBUG] QUERY OK source="payout_batches" db=1.7ms UPDATE `payout_batches` SET `transmission_reference` = ?, `updated_at` = ? WHERE `id` = ? ["BNK20260902M2", ~N[2026-09-02 10:25:32], 180] ↳ anonymous fn/3 in Ecto.Adapters.SQL.checkout_or_transaction/4, at: lib/ecto/adapters/sql.ex:1473 [2026-09-02 10:25:32.916] [INFO ] Updated PayoutBatch 180 with bank ref and transmitted_at [2026-09-02 10:25:32.920] [DEBUG] QUERY OK source="core_transactions" db=3.1ms UPDATE `core_transactions` AS c0 SET c0.`bank_transfer_date` = ?, c0.`settlement_status` = ?, c0.`bank_transfer_reference` = ?, c0.`updated_at` = ? WHERE (c0.`merchant_mid` = ?) AND (c0.`switch_settled_date` = ?) AND (c0.`settlement_status` IN ('pending','processing','unmatched','matched')) [~D[2026-09-02], "paid", "BNK20260902M2", ~N[2026-09-02 10:25:32], "425590250000000", ~D[2026-09-01]] ↳ anonymous fn/3 in Ecto.Adapters.SQL.checkout_or_transaction/4, at: lib/ecto/adapters/sql.ex:1473 [2026-09-02 10:25:32.924] [DEBUG] QUERY OK source="payout_items" db=1.5ms queue=1.1ms idle=2.7ms SELECT p0.`id`, p0.`payout_batch_id`, p0.`settlement_mis_id`, p0.`settlement_date`, p0.`merchant_mid`, p0.`merchant_id`, p0.`merchant_name`, p0.`merchant_ref_number`, p0.`bank_name`, p0.`iban`, p0.`account_number`, p0.`bank_code`, p0.`currency`, p0.`gross_amount`, p0.`total_deductions`, p0.`payout_amount`, p0.`transaction_count`, p0.`net_settlement_amount`, p0.`total_adjustments_credit`, p0.`total_adjustments_debit`, p0.`final_payout_amount`, p0.`total_gross_amount`, p0.`total_mdr_amount`, p0.`total_vat_amount`, p0.`status`, p0.`bank_transfer_ref`, p0.`confirmed_at`, p0.`rejection_reason`, p0.`rejected_at`, p0.`re_initiated_at`, p0.`re_initiated_batch_id`, p0.`inserted_at`, p0.`updated_at` FROM `payout_items` AS p0 WHERE (p0.`id` = ?) [270] ↳ SettlementCore.Workers.VatMisDistributionWorker.send_merchant_vat_mis/1, at: lib/settlement_core/workers/vat_mis_distribution_worker.ex:122 [2026-09-02 10:25:32.928] [DEBUG] QUERY OK source="tid_masters" db=0.7ms queue=2.8ms idle=0.3ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` = ?) ["419926360000000"] ↳ SettlementCore.Workers.VatMisDistributionWorker.send_merchant_vat_mis/1, at: lib/settlement_core/workers/vat_mis_distribution_worker.ex:123 [2026-09-02 10:25:32.952] [INFO ] [VatMisGenerator] Generating VAT MIS Excel for 2026-09-01 merchant="419926360000000" [2026-09-02 10:25:32.987] [DEBUG] QUERY OK db=59.9ms queue=37.9ms idle=2.3ms INSERT INTO `vat_invoices` (`mdr_amount`,`vat_amount`,`invoice_number`,`invoice_date`,`settlement_date`,`merchant_mid`,`gross_amount`,`merchant_id`,`payout_item_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?) [Decimal.new("14.75"), Decimal.new("0.74"), "INV-2026-00037", ~D[2026-09-02], ~D[2026-09-01], "419926360000000", Decimal.new("800.00"), 1684, 270, ~N[2026-09-02 10:25:32], ~N[2026-09-02 10:25:32]] ↳ SettlementCore.Workers.VatInvoiceWorker.insert_invoice/1, at: lib/settlement_core/workers/vat_invoice_worker.ex:108 [2026-09-02 10:25:32.992] [DEBUG] QUERY OK source="vat_invoices" db=2.9ms queue=36.4ms idle=0.0ms SELECT v0.`invoice_number`, coalesce(t1.`merchant_name_legal`, t1.`merchant_name_dba`), v0.`merchant_mid`, v0.`merchant_id`, v0.`settlement_date`, v0.`invoice_date`, v0.`gross_amount`, v0.`mdr_amount`, v0.`vat_amount`, a4.`line1`, a4.`city`, a4.`country`, t1.`spare_fields` FROM `vat_invoices` AS v0 LEFT OUTER JOIN `tid_masters` AS t1 ON t1.`mid` = v0.`merchant_mid` LEFT OUTER JOIN `brands` AS b2 ON b2.`merchant_reference_id` COLLATE utf8mb4_unicode_ci = t1.`merchant_ref_number` COLLATE utf8mb4_unicode_ci LEFT OUTER JOIN `stores` AS s3 ON s3.`brand_id` = b2.`id` LEFT OUTER JOIN `addresses` AS a4 ON a4.`id` = s3.`address_id` WHERE (v0.`settlement_date` = ?) AND (v0.`merchant_mid` = ?) ORDER BY v0.`merchant_mid`, v0.`invoice_number` [~D[2026-09-01], "419926360000000"] ↳ SettlementCore.VatMisGenerator.generate_excel/2, at: lib/settlement_core/vat_mis_generator.ex:80 [2026-09-02 10:25:32.995] [INFO ] [SettlementNotifier] Sending VAT MIS to ["sunny@dataaegis.com"] for date 2026-09-01 [2026-09-02 10:25:33.000] [INFO ] [SettlementNotifier] ===== CALLING MAILER.DELIVER ===== [2026-09-02 10:25:33.002] [INFO ] [SettlementNotifier] Email TO: [{"", "sunny@dataaegis.com"}] [2026-09-02 10:25:33.002] [DEBUG] QUERY OK source="tid_masters" db=2.4ms queue=12.1ms idle=0.0ms SELECT a3.`line1`, a3.`country` FROM `tid_masters` AS t0 LEFT OUTER JOIN `brands` AS b1 ON b1.`merchant_reference_id` COLLATE utf8mb4_unicode_ci = t0.`merchant_ref_number` COLLATE utf8mb4_unicode_ci LEFT OUTER JOIN `stores` AS s2 ON s2.`brand_id` = b1.`id` LEFT OUTER JOIN `addresses` AS a3 ON a3.`id` = s2.`address_id` WHERE (t0.`mid` = ?) LIMIT 1 ["419926360000000"] ↳ SettlementCore.Workers.VatInvoiceWorker.fetch_address_details/1, at: lib/settlement_core/workers/vat_invoice_worker.ex:180 [2026-09-02 10:25:33.003] [INFO ] [SettlementNotifier] Sending VAT Invoice INV-2026-00037 to sunny@dataaegis.com [2026-09-02 10:25:33.002] [INFO ] [SettlementNotifier] Email FROM: {"", "donotreply@shukria.ae"} [2026-09-02 10:25:33.003] [INFO ] [SettlementNotifier] Email SUBJECT: VAT MIS Report — 2026-09-01 [2026-09-02 10:25:33.003] [INFO ] [EmailPdfGenerator] Rendering vat_invoice_pdf to PDF: VAT_Invoice_INV-2026-00037.pdf [2026-09-02 10:25:33.003] [INFO ] [AzureCommunicationServices] ===== STARTING EMAIL DELIVERY ===== [2026-09-02 10:25:33.003] [INFO ] [AzureCommunicationServices] Email recipients: [{"", "sunny@dataaegis.com"}] [2026-09-02 10:25:33.003] [INFO ] [EmailPdfGenerator] ✓ HTML rendered, size: 7096 bytes [2026-09-02 10:25:33.003] [INFO ] [AzureCommunicationServices] Email subject: VAT MIS Report — 2026-09-01 [2026-09-02 10:25:33.004] [INFO ] [AzureCommunicationServices] Config values: [2026-09-02 10:25:33.004] [INFO ] - sender: donotreply@shukria.ae [2026-09-02 10:25:33.005] [INFO ] [EmailPdfGenerator] ✓ HTML written to /tmp/platform_web_pdf_3811/document.html [2026-09-02 10:25:33.007] [INFO ] - endpoint: https://shukria-commserv-merchants.uae.communication.azure.com [2026-09-02 10:25:33.007] [INFO ] - api_version: 2025-09-01 [2026-09-02 10:25:33.008] [INFO ] [AzureCommunicationServices] Request URL: https://shukria-commserv-merchants.uae.communication.azure.com/emails:send?api-version=2025-09-01 [2026-09-02 10:25:33.008] [INFO ] [AzureCommunicationServices] Host extracted: shukria-commserv-merchants.uae.communication.azure.com [2026-09-02 10:25:33.008] [INFO ] [AzureCommunicationServices] Path and query: /emails:send?api-version=2025-09-01 [2026-09-02 10:25:33.008] [INFO ] [AzureCommunicationServices] ===== PREPARE_BODY STARTING ===== [2026-09-02 10:25:33.008] [INFO ] [AzureCommunicationServices] email.attachments count: 1 [2026-09-02 10:25:33.009] [INFO ] [EmailPdfGenerator] Using wkhtmltopdf [2026-09-02 10:25:33.009] [INFO ] [AzureCommunicationServices] First attachment is %Swoosh.Attachment{}: true [2026-09-02 10:25:33.009] [INFO ] [AzureCommunicationServices] First attachment data type: <<80, 75, 3, 4, 20, 0, 0, 0, 8, 0, 32, 83, 34, 93, 33, 175, 77, 49, 200, 0, 0, 0, 85, 1, 0, 0, 16, 0, 0, 0, 100, 111, 99, 80, 114, 111, 112, 115, 47, 97, 112, 112, 46, 120, 109, 108, 157, 144, 205, 110, ...>> [2026-09-02 10:25:33.009] [INFO ] [AzureCommunicationServices] First attachment filename: VAT_MIS_419926360000000_2026-09-01.xlsx [2026-09-02 10:25:33.009] [INFO ] [AzureCommunicationServices] Processing attachment: VAT_MIS_419926360000000_2026-09-01.xlsx [2026-09-02 10:25:33.009] [INFO ] [AzureCommunicationServices] Attachment data type: <<80, 75, 3, 4, 20, 0, 0, 0, 8, 0, 32, 83, 34, 93, 33, 175, 77, 49, 200, 0, 0, 0, 85, 1, 0, 0, 16, 0, 0, 0, 100, 111, 99, 80, 114, 111, 112, 115, 47, 97, 112, 112, 46, 120, 109, 108, 157, 144, 205, 110, ...>> [2026-09-02 10:25:33.010] [INFO ] [AzureCommunicationServices] Direct binary size: 4214 bytes [2026-09-02 10:25:33.010] [INFO ] [AzureCommunicationServices] Base64 encoded size: 5620 chars [2026-09-02 10:25:33.012] [INFO ] [AzureCommunicationServices] Attachment struct created: %{"contentInBase64" => "UEsDBBQAAAAIACBTIl0hr00xyAAAAFUBAAAQAAAAZG9jUHJvcHMvYXBwLnhtbJ2QzW4CIRSF9/MUhL0DdWGMYTAmtWsXo3sCd5QEuARuzfj2Ym1r112en3w5OWo7x8CuUKrHNPC3XnIGyaLz6Tzw4/ixWHNWySRnAiYY+A0q3+pOHQpmKOShskZIdeAXorwRotoLRFP7FqeWTFiioSbLWeA0eQvvaD8jJBJLKVcCZoLkwC3yL5A/iZsr/Rfq0D721dN4y42nO8bUiGTC6CNoqcRLPKJdzsFbQ+0CvQ9+DnVW4q/5XTo9b9KyX8mvwo/RKfH6Q3d3UEsDBBQAAAAIACBTIl0FgjalLwEAAFoCAAARAAAAZG9jUHJvcHMvY29yZS54bWylksFuwjAMhu99iij3NmmroS1qy2ETp02aBGjTblFqSrQmjZJA4e2XdlBg4raj8//+7Ngu5gfVoj1YJztd4jShGIEWXS11U+L1ahE/YuQ81zVvOw0lPoLD8yoqhGGis/BuOwPWS3AogLRjwpR4671hhDixBcVdEhw6iJvOKu5DaBtiuPjmDZCM0hlR4HnNPScDMDYTEZ+QtZiQZmfbEVALAi0o0N6RNEnJxevBKnc3YVSunEr6o4G71rM4uQ9OTsa+75M+H62h/5R8vr0ux6/GUg+jEoCrCKHi1AsTFriHGgUG+614Vj7y55fVAlcZzWYxfYpptkopyx5Ynn0V5E/+iclarptdGF4FOl4vB9vl6bqsCkvcyH/UPQNGati3hb0czqRKC3IdRmN4ew1V9ANQSwMEFAAAAAgAIFMiXcsHwd3eAAAAPwIAAAsAAABfcmVscy8ucmVsc62Sz07DMAyH73uKyPfV3ZAQQst2QUi7ITQewCRuG7WJoyRAeXsiDvyZ2LQDxyQ/f/5sZbOb/aReOWUnQcOqaUFxMGJd6DU8He6XN7DbLjaPPFGpkTy4mFWtCVnDUEq8RcxmYE+5kcihvnSSPJV6TD1GMiP1jOu2vcb0kwFHULW3GtLerkAd3iNfApeuc4bvxLx4DuWPHkeJSqbUc9EwT/gmaXwWGZsKBTwhs75c5vSk6LmQpUJoJPEyplqdiuP87WPFPNTr/Jk4a3T1n+vhuXCwbM87UYxfSvjrH2wXH1BLAwQUAAAACAAgUyJdZjdOSCwBAACbAgAADQAAAHhsL3N0eWxlcy54bWytUstOwzAQvOcrLN+p00gghJJUXCpxbpG4mmTzkOy1ZbuQ/D0bxy2FXjgg5bA7nhnPblzuJq3YBzg/Gqz4dpNzBtiYdsS+4q/H/d0jZz5IbKUyCBWfwfNdnZU+zAoOA0Bg5IC+4kMI9kkI3wygpd8YC0gnnXFaBmpdL7x1IFu/iLQSRZ4/CC1H5HXGGH1lZzB41pgTBooS4YQysTYLS0RaHQWjUhdBcREQWpdWhgAO99SwVB9nSxMgzcFFTT4L70+S3sl5W9z/Uq1hlggxzLtxLe3xJv+K/5ggUaOsAaUOyzLfulvt1LGV+9JWnH4NnvReh9QsV59LWkkqpbVqflZjjxquvchNnlH26aQ9whSPU7BSTF0MJK4TXSL+U7qpW4vrbSR7elTi+1XV2RdQSwMEFAAAAAgAIFMiXXHpa6/nAQAAjgcAABQAAAB4bC9zaGFyZWRTdHJpbmdzLnhtbJ2VTW/bMAyG7/sVhE8b0ESuA3RrkaTIknUIhqZt4vbO2EwsVJY8fQRJf/3kbO0+sAOdo+T30UtSIj283tcKdmSdNHqUnPfTBEgXppR6O0oe85vepwScR12iMppGyYFccj1+N3TOQ0S1GyWV982VEK6oqEbXNw3p+GVjbI0+Lu1WuMYSlq4i8rUSWZpeiBqlTqAwQftRMhgkELT8Hmj6ttF6yPHw6HLlGiyieTzGkd1RMr4lW1SoPSywpqHw46Fo1RxiUpZx07GgL7W06MmJqfQHFnFMwPK0byHlywUbCPYAudUsfY57mOudkQXBwvRZzKv+nqw0ZSdkFkvVLfH5jJeH8agg32uY1G19eSazJdwQL6DconZY+NgEfOZnUH+TvGf1NMm7ZPJ/J3g/14UKbadCPPAD66gVea+oplh7drRL2gRdwr01Reyb1o5bommFdktrLJ7ZyCqsXWFlc8JV3PmKLD+tf6GT6vnranCPa0Xd7/Skh/DVGue6YN9QHVDDLVqe/m6zads5SwdnEVL0DJ+DVMfCZGcwUfAQzEscLGVw3soY0SSOd4jiWVij7BLSArdoWcCjlp7K6IRreJ3KLJA3wRZPvSzNLnppmg4+spD0XKSXooUgN/B7xYIzWFEDf4pF/KGOfwBQSwMEFAAAAAgAIFMiXTjvSxorAQAA6wEAAA8AAAB4bC93b3JrYm9vay54bWyNkU1PAjEQhu/8iqZ3t4WDMYSFEIgJiaiJyNUM3Snb0I9NWxb9987uxtWjt3be9ukz08Xq01nWYkwm+JJPC8kZehUq488lfz883j1wljL4CmzwWPIvTHy1nCxuIV5OIVwY3fep5HXOzVyIpGp0kIrQoKdEh+gg0zaeRWoiQpVqxOysmEl5LxwYzwfCPP6HEbQ2CrdBXR36PEAiWshkn2rTJE5q2lg8Dh0xaJpncOS9Aau4oLSTPhq8peWEsbGNrsJAZdPiAU4ll/1Z8efwojcfF8z32OP68LHfvdGMuuKuohH288qUtSaZk0XO4txQEHfVbKCOJEVSr5Hpq7Wd34t/CjAgTMZIkE24+kwFSd8SUe9DRdz1b15yDTbhuN+izUD2hZTT4a2fBpeTb1BLAwQUAAAACAAgUyJdACI+d9kAAAAsAgAAGgAAAHhsL19yZWxzL3dvcmtib29rLnhtbC5yZWxzrZHBTsMwDIbvfYrId5p2kxBCS3dBSLuy8QBR6jbV2iSyDdveniBgdAgkDjtFtpPv//N7tT5Oo3pF4iEGA3VZgcLgYjuE3sDz7vHmDtZNsXrC0Uq+wn5IrPKbwAa8SLrXmp3HyXIZE4Y86SJNVnJJvU7W7W2PelFVt5rmDGgKpS6watMaoE1bg9qdEv4HH7tucPgQ3cuEQX5R0SynETkTLfUoBj7qMnNA//jWl/7imvqHSHv2iPJt4dzK7t6P+tPNH3EsrxqHt4TtViivd57KvH0OR18svSneAFBLAwQUAAAACAAgUyJdR4lXAVYDAACEDwAAGAAAAHhsL3dvcmtzaGVldHMvc2hlZXQxLnhtbI2XW3eiMBDH3/0UObyvkHijPWrPtva+9qq9vVEMyikQl6Ta/fabIEFL5tS8qJHffybOfxhJ/+grTdCK5jxm2cDBTc9BNAvZLM7mA2c6OfvlO4iLIJsFCcvowPlHuXM0bPTXLP/gC0oFkgEyPnAWQiwPXZeHC5oGvMmWNJNXIpangZDLfO7yZU6DWSFKE5d4XtdNgzhzNhEOc5sYLIrikI5Y+JnSTGyC5DQJhNw+X8RL7si9FSnuchTFiaD5mM3kvqMg4VReRKi/DOb0kYrpskDEhN3JLzThSr1bBpAfZ7HMo2qDchoNnN+4AIrrTzFd890FUjV5Z+xDLS5nA8dzGuo6TWio9odQIN9X9IQmSREK8b86KnKHZVolrvbwLcdZUQe56RmNgs9EPLD1BY3nCyF9I03faaithSzhQ/WK0lgZ6qA0+Cre1/FMLAYO6Too/OSCpc+bLzbJKwUpFaRStNo/K1qlolUpsP+zol0q2lsF+VnRKRUd6xzdUtG1VvRKRc9a4ZcKf1vdPb/joFQcbHPs8QN72kJvq9njCK5sx/Z5tPGY2OfR1uOWfR5tPm5b1xlr+3HHfm+6AfC2A8i+PLoFcM/+9+gmwPZdgHUbYPs+ILoPiGddN6L7gNj3AakGgH0fEN0HZNsHZJ9G9wGx7wOi+4B07H+P7gOydxK4m+FZDNtRIAI5TnO2RnlxvfjrCNVCjusGV9Mdyclb/OGshl7fXampHaoRrKBjAMJ16ASASB0aAVCrDp0CULsOnQFQpw6dA1C3Dl0AUK8OXQKQX4euAOigDl1DxTRK/geijJqPIcoo+g1EGVW/hSij7HcQZdT9HqKMwj9AlFH5R4gySj+BKKP2U6hHjdo/WVXiGYplOPQCUYZD" <> ..., "contentType" => "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "name" => "VAT_MIS_419926360000000_2026-09-01.xlsx"} [2026-09-02 10:25:33.013] [INFO ] [AzureCommunicationServices] Final JSON body size: 7374 bytes [2026-09-02 10:25:33.013] [INFO ] [AzureCommunicationServices] JSON first 500 chars: {"attachments":[{"contentInBase64":"UEsDBBQAAAAIACBTIl0hr00xyAAAAFUBAAAQAAAAZG9jUHJvcHMvYXBwLnhtbJ2QzW4CIRSF9/MUhL0DdWGMYTAmtWsXo3sCd5QEuARuzfj2Ym1r112en3w5OWo7x8CuUKrHNPC3XnIGyaLz6Tzw4/ixWHNWySRnAiYY+A0q3+pOHQpmKOShskZIdeAXorwRotoLRFP7FqeWTFiioSbLWeA0eQvvaD8jJBJLKVcCZoLkwC3yL5A/iZsr/Rfq0D721dN4y42nO8bUiGTC6CNoqcRLPKJdzsFbQ+0CvQ9+DnVW4q/5XTo9b9KyX8mvwo/RKfH6Q3d3UEsDBBQAAAAIACBTIl0FgjalLwEAAFoCAAARAAAAZG9jUHJvcHMvY29yZS54bWylksFuwjAMhu99iij3NmmroS1qy2ETp02aBGjTblFqSrQmjZJA4e2XdlBg4raj8//+7Ngu5gfV [2026-09-02 10:25:33.014] [INFO ] [AzureCommunicationServices] ✅ First attachment contentInBase64 present: 5620 chars (non-empty: true) [2026-09-02 10:25:33.014] [INFO ] [AzureCommunicationServices] Content SHA256: MUg7WzzhGMx/6bSuVbTb... [2026-09-02 10:25:33.015] [INFO ] [AzureCommunicationServices] Signature (first 20 chars): dMoAWJ8V7A5eRBiXK6fs... [2026-09-02 10:25:33.015] [INFO ] [AzureCommunicationServices] Auth: HMAC-SHA256 signature authentication [2026-09-02 10:25:33.016] [INFO ] [AzureCommunicationServices] Headers: Authorization, x-ms-date, host, x-ms-content-sha256 [2026-09-02 10:25:33.016] [DEBUG] [AzureCommunicationServices] Request body prepared [2026-09-02 10:25:33.016] [INFO ] [AzureCommunicationServices] Sending HTTP request to Azure... [2026-09-02 10:25:33.016] [DEBUG] [AzureCommunicationServices] Building HTTP request... [2026-09-02 10:25:33.017] [DEBUG] [AzureCommunicationServices] Executing HTTP request via Finch... [2026-09-02 10:25:33.023] [INFO ] SettlementAdviceWorker enqueued for PayoutItem: 271 [2026-09-02 10:25:33.082] [INFO ] VatInvoiceWorker enqueued for PayoutItem: 271 [2026-09-02 10:25:33.156] [INFO ] [SettlementAdviceWorker] Starting for payout_item_id=271 [2026-09-02 10:25:33.156] [INFO ] [SettlementAdviceWorker] Fetching PayoutItem 271 [2026-09-02 10:25:33.157] [DEBUG] QUERY OK source="payout_items" db=1.0ms idle=0.5ms SELECT p0.`id`, p0.`payout_batch_id`, p0.`settlement_mis_id`, p0.`settlement_date`, p0.`merchant_mid`, p0.`merchant_id`, p0.`merchant_name`, p0.`merchant_ref_number`, p0.`bank_name`, p0.`iban`, p0.`account_number`, p0.`bank_code`, p0.`currency`, p0.`gross_amount`, p0.`total_deductions`, p0.`payout_amount`, p0.`transaction_count`, p0.`net_settlement_amount`, p0.`total_adjustments_credit`, p0.`total_adjustments_debit`, p0.`final_payout_amount`, p0.`total_gross_amount`, p0.`total_mdr_amount`, p0.`total_vat_amount`, p0.`status`, p0.`bank_transfer_ref`, p0.`confirmed_at`, p0.`rejection_reason`, p0.`rejected_at`, p0.`re_initiated_at`, p0.`re_initiated_batch_id`, p0.`inserted_at`, p0.`updated_at` FROM `payout_items` AS p0 WHERE (p0.`id` = ?) [271] ↳ SettlementCore.Workers.SettlementAdviceWorker.perform/1, at: lib/settlement_core/workers/settlement_advice_worker.ex:40 [2026-09-02 10:25:33.157] [INFO ] [SettlementAdviceWorker] ✓ Got PayoutItem, MID=425590250000000, payout_batch_id=180 [2026-09-02 10:25:33.158] [INFO ] [SettlementAdviceWorker] Fetching PayoutBatch 180 [2026-09-02 10:25:33.158] [DEBUG] QUERY OK source="payout_batches" db=0.3ms idle=0.4ms SELECT p0.`id`, p0.`settlement_mis_id`, p0.`payout_date`, p0.`batch_type`, p0.`total_merchants`, p0.`total_items`, p0.`total_amount`, p0.`currency`, p0.`file_path`, p0.`file_name`, p0.`encryption_method`, p0.`batch_reference`, p0.`encrypted_file_path`, p0.`file_hash`, p0.`encryption_key_ref`, p0.`generated_by`, p0.`generated_at`, p0.`transmission_method`, p0.`status`, p0.`transmitted_at`, p0.`transmission_reference`, p0.`bank_confirmation_ref`, p0.`failure_reason`, p0.`confirmed_at`, p0.`confirmed_item_count`, p0.`rejected_item_count`, p0.`inserted_at`, p0.`updated_at` FROM `payout_batches` AS p0 WHERE (p0.`id` = ?) [180] ↳ SettlementCore.Workers.SettlementAdviceWorker.perform/1, at: lib/settlement_core/workers/settlement_advice_worker.ex:44 [2026-09-02 10:25:33.158] [INFO ] [SettlementAdviceWorker] ✓ Got PayoutBatch, ref=BATCH-20260901-328 [2026-09-02 10:25:33.158] [INFO ] [SettlementAdviceWorker] Fetching TidMaster for MID=425590250000000 [2026-09-02 10:25:33.159] [DEBUG] QUERY OK source="tid_masters" db=0.4ms idle=0.3ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` = ?) ["425590250000000"] ↳ SettlementCore.Workers.SettlementAdviceWorker.perform/1, at: lib/settlement_core/workers/settlement_advice_worker.ex:48 [2026-09-02 10:25:33.160] [INFO ] [SettlementAdviceWorker] ✓ Got TidMaster: %SettlementCore.TidMaster{__meta__: #Ecto.Schema.Metadata<:loaded, "tid_masters">, id: 8, mms_user_id: 990002, mid: "425590250000000", store_id: 7, merchant_ref_number: "GRP-B-2050", tid: ["35248561", "35248562"], qr_id: nil, merchant_name_legal: "Golden Sands Retail LLC", merchant_name_dba: "Golden Sands Mart", registered_mobile: "+971500000002", registered_email: "sunny@dataaegis.com", mcc_code: "5311", mcc_description: "DEPARTMENT STORES", bank_code: "ADCB", bank_name: "Abu Dhabi Commercial Bank", bank_account_number: "512300998877", iban: "AE070331234567890123456", virtual_iban: "AE560332222111100099887", enabled_schemes: ["pos_terminal", "qr_soundbox"], mdr_rates: %{}, onboarding_date: nil, contract_approved_at: nil, onboarding_source: nil, onboarding_id: nil, last_transaction_date: nil, last_transaction_amount: nil, mms_synced_at: nil, status: "active", spare_fields: %{}, inserted_at: ~N[2026-08-07 06:01:04], updated_at: ~N[2026-08-07 06:01:04]} [2026-09-02 10:25:33.160] [INFO ] [SettlementAdviceWorker] Email address: "sunny@dataaegis.com" [2026-09-02 10:25:33.160] [INFO ] [SettlementAdviceWorker] Building PayoutItemBreakdown [2026-09-02 10:25:33.161] [DEBUG] QUERY OK source="settlement_mis_items" db=1.2ms idle=1.0ms SELECT s0.`id`, s0.`settlement_mis_id`, s0.`core_transaction_id`, s0.`merchant_mid`, s0.`merchant_id`, s0.`merchant_name`, s0.`merchant_ref_number`, s0.`bank_name`, s0.`iban`, s0.`account_number`, s0.`settlement_date`, s0.`rrn`, s0.`tid`, s0.`auth_number`, s0.`transaction_date`, s0.`transaction_type`, s0.`scheme_name`, s0.`card_type_code`, s0.`gross_amount`, s0.`mdr_percentage_rate`, s0.`mdr_amount`, s0.`vat_rate`, s0.`vat_amount`, s0.`interchange_fee`, s0.`adjustment_amount`, s0.`ar_recovery`, s0.`net_payable`, s0.`transaction_count`, s0.`total_gross_amount`, s0.`total_mdr_amount`, s0.`total_vat_amount`, s0.`total_interchange_fee`, s0.`total_net_settlement_amount`, s0.`risk_status`, s0.`exception_type`, s0.`mpr_sent`, s0.`margin_contribution`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis_items` AS s0 WHERE (s0.`settlement_mis_id` = ?) AND (s0.`merchant_mid` = ?) [328, "425590250000000"] ↳ SettlementCore.PayoutItemBreakdown.build/1, at: lib/settlement_core/payout_item_breakdown.ex:10 [2026-09-02 10:25:33.162] [INFO ] VatMisDistributionWorker enqueued for PayoutItem: 271 [2026-09-02 10:25:33.163] [DEBUG] QUERY OK source="merchant_adjustments" db=1.4ms queue=0.7ms idle=0.0ms SELECT m0.`id`, m0.`merchant_mid`, m0.`merchant_name`, m0.`adjustment_date`, m0.`debit_credit`, m0.`amount`, m0.`currency`, m0.`adjustment_type`, m0.`description`, m0.`settlement_mis_id`, m0.`status`, m0.`applied_at`, m0.`cancelled_at`, m0.`cancel_reason`, m0.`approval_status`, m0.`level1_reviewed_by`, m0.`level1_reviewed_at`, m0.`level2_approved_by`, m0.`level2_approved_at`, m0.`rejected_by`, m0.`rejected_at`, m0.`rejection_reason`, m0.`created_by`, m0.`updated_by`, m0.`inserted_at`, m0.`updated_at` FROM `merchant_adjustments` AS m0 WHERE (m0.`settlement_mis_id` = ?) AND (m0.`merchant_mid` = ?) AND (m0.`approval_status` = 'approved') [328, "425590250000000"] ↳ SettlementCore.PayoutItemBreakdown.build/1, at: lib/settlement_core/payout_item_breakdown.ex:11 [2026-09-02 10:25:33.164] [DEBUG] QUERY OK source="bank_confirmation_records" db=2.0ms UPDATE `bank_confirmation_records` SET `processed_at` = ?, `processed_status` = ?, `updated_at` = ? WHERE `id` = ? [~N[2026-09-02 10:25:33], "success", ~N[2026-09-02 10:25:33], 99] ↳ anonymous fn/3 in Ecto.Adapters.SQL.checkout_or_transaction/4, at: lib/ecto/adapters/sql.ex:1473 [2026-09-02 10:25:33.165] [DEBUG] QUERY OK source="payout_items" db=0.5ms SELECT p0.`id`, p0.`payout_batch_id`, p0.`settlement_mis_id`, p0.`settlement_date`, p0.`merchant_mid`, p0.`merchant_id`, p0.`merchant_name`, p0.`merchant_ref_number`, p0.`bank_name`, p0.`iban`, p0.`account_number`, p0.`bank_code`, p0.`currency`, p0.`gross_amount`, p0.`total_deductions`, p0.`payout_amount`, p0.`transaction_count`, p0.`net_settlement_amount`, p0.`total_adjustments_credit`, p0.`total_adjustments_debit`, p0.`final_payout_amount`, p0.`total_gross_amount`, p0.`total_mdr_amount`, p0.`total_vat_amount`, p0.`status`, p0.`bank_transfer_ref`, p0.`confirmed_at`, p0.`rejection_reason`, p0.`rejected_at`, p0.`re_initiated_at`, p0.`re_initiated_batch_id`, p0.`inserted_at`, p0.`updated_at` FROM `payout_items` AS p0 WHERE (p0.`id` = ?) [272] ↳ anonymous fn/3 in Ecto.Adapters.SQL.checkout_or_transaction/4, at: lib/ecto/adapters/sql.ex:1473 [2026-09-02 10:25:33.166] [INFO ] [SettlementAdviceWorker] ✓ Breakdown built, scheme_rows count: 1 [2026-09-02 10:25:33.166] [INFO ] [SettlementAdviceWorker] merchant_name=Golden Sands Retail LLC [2026-09-02 10:25:33.166] [INFO ] [SettlementAdviceWorker] group_id=GRP-B-2050 [2026-09-02 10:25:33.166] [INFO ] [SettlementAdviceWorker] merchant_trn= [2026-09-02 10:25:33.166] [INFO ] [SettlementAdviceWorker] Building section_rows from 1 scheme_rows [2026-09-02 10:25:33.167] [INFO ] [SettlementAdviceWorker] ✓ section_rows count: 8 [2026-09-02 10:25:33.167] [INFO ] [SettlementAdviceWorker] Getting logo_src [2026-09-02 10:25:33.168] [INFO ] [SettlementAdviceWorker] ✓ logo_src=file:///var/www/internaltesting/sunny/tmsapp/tmsuat_apps/_build/dev/lib/platform_web/priv/static/images/logo.png [2026-09-02 10:25:33.169] [DEBUG] QUERY OK source="payout_items" db=1.0ms UPDATE `payout_items` SET `status` = ?, `confirmed_at` = ?, `bank_transfer_ref` = ?, `updated_at` = ? WHERE `id` = ? ["paid", ~N[2026-09-02 10:25:33], "BNK20260902M3", ~N[2026-09-02 10:25:33], 272] ↳ anonymous fn/3 in Ecto.Adapters.SQL.checkout_or_transaction/4, at: lib/ecto/adapters/sql.ex:1473 [2026-09-02 10:25:33.169] [DEBUG] QUERY OK source="bank_confirmation_records" db=0.8ms queue=0.1ms idle=3.8ms SELECT b0.`id`, b0.`merchant_mid`, b0.`status`, b0.`transfer_reference_number`, b0.`confirmed_at`, b0.`failure_reason`, b0.`amount_from_csv`, b0.`validation_status`, b0.`validation_error`, b0.`expected_amount`, b0.`amount_match`, b0.`already_confirmed`, b0.`already_confirmed_at`, b0.`processed_at`, b0.`processed_status`, b0.`processed_error`, b0.`batch_id`, b0.`payout_item_id`, b0.`inserted_at`, b0.`updated_at` FROM `bank_confirmation_records` AS b0 WHERE (b0.`payout_item_id` = ?) [271] ↳ SettlementCore.Workers.SettlementAdviceWorker.confirmation_transfer_reference/1, at: lib/settlement_core/workers/settlement_advice_worker.ex:306 [2026-09-02 10:25:33.169] [INFO ] [SettlementAdviceWorker] transfer_reference=BNK20260902M2 [2026-09-02 10:25:33.170] [INFO ] [SettlementAdviceWorker] Building assigns map [2026-09-02 10:25:33.170] [INFO ] [SettlementAdviceWorker] ✓ Assigns built with 23 fields [2026-09-02 10:25:33.170] [INFO ] [SettlementAdviceWorker] Calling SettlementNotifier.send_settlement_advice to sunny@dataaegis.com [2026-09-02 10:25:33.170] [INFO ] [SettlementNotifier] Sending Settlement Advice to sunny@dataaegis.com ref=BNK20260902M2 [2026-09-02 10:25:33.170] [INFO ] [EmailPdfGenerator] Rendering settlement_advice_pdf to PDF: Settlement_Advice_425590250000000_2026-09-01.pdf [2026-09-02 10:25:33.170] [INFO ] [EmailPdfGenerator] ✓ HTML rendered, size: 9396 bytes [2026-09-02 10:25:33.170] [DEBUG] QUERY OK source="payout_batches" db=1.1ms SELECT p0.`id`, p0.`settlement_mis_id`, p0.`payout_date`, p0.`batch_type`, p0.`total_merchants`, p0.`total_items`, p0.`total_amount`, p0.`currency`, p0.`file_path`, p0.`file_name`, p0.`encryption_method`, p0.`batch_reference`, p0.`encrypted_file_path`, p0.`file_hash`, p0.`encryption_key_ref`, p0.`generated_by`, p0.`generated_at`, p0.`transmission_method`, p0.`status`, p0.`transmitted_at`, p0.`transmission_reference`, p0.`bank_confirmation_ref`, p0.`failure_reason`, p0.`confirmed_at`, p0.`confirmed_item_count`, p0.`rejected_item_count`, p0.`inserted_at`, p0.`updated_at` FROM `payout_batches` AS p0 WHERE (p0.`id` = ?) [180] ↳ anonymous fn/3 in Ecto.Adapters.SQL.checkout_or_transaction/4, at: lib/ecto/adapters/sql.ex:1473 [2026-09-02 10:25:33.177] [INFO ] [EmailPdfGenerator] ✓ HTML written to /tmp/platform_web_pdf_8514/document.html [2026-09-02 10:25:33.183] [INFO ] [EmailPdfGenerator] Using wkhtmltopdf [2026-09-02 10:25:33.187] [DEBUG] QUERY OK source="payout_batches" db=3.4ms UPDATE `payout_batches` SET `transmission_reference` = ?, `updated_at` = ? WHERE `id` = ? ["BNK20260902M3", ~N[2026-09-02 10:25:33], 180] ↳ anonymous fn/3 in Ecto.Adapters.SQL.checkout_or_transaction/4, at: lib/ecto/adapters/sql.ex:1473 [2026-09-02 10:25:33.188] [INFO ] Updated PayoutBatch 180 with bank ref and transmitted_at [2026-09-02 10:25:33.189] [DEBUG] QUERY OK source="core_transactions" db=0.7ms UPDATE `core_transactions` AS c0 SET c0.`bank_transfer_date` = ?, c0.`settlement_status` = ?, c0.`bank_transfer_reference` = ?, c0.`updated_at` = ? WHERE (c0.`merchant_mid` = ?) AND (c0.`switch_settled_date` = ?) AND (c0.`settlement_status` IN ('pending','processing','unmatched','matched')) [~D[2026-09-02], "paid", "BNK20260902M3", ~N[2026-09-02 10:25:33], "E2E_M3_TEST001", ~D[2026-09-01]] ↳ anonymous fn/3 in Ecto.Adapters.SQL.checkout_or_transaction/4, at: lib/ecto/adapters/sql.ex:1473 [2026-09-02 10:25:33.262] [INFO ] [VatInvoiceWorker] Generating VAT invoice for payout_item_id=271 [2026-09-02 10:25:33.317] [DEBUG] QUERY OK source="payout_items" db=41.6ms queue=9.9ms idle=0.0ms SELECT p0.`id`, p0.`payout_batch_id`, p0.`settlement_mis_id`, p0.`settlement_date`, p0.`merchant_mid`, p0.`merchant_id`, p0.`merchant_name`, p0.`merchant_ref_number`, p0.`bank_name`, p0.`iban`, p0.`account_number`, p0.`bank_code`, p0.`currency`, p0.`gross_amount`, p0.`total_deductions`, p0.`payout_amount`, p0.`transaction_count`, p0.`net_settlement_amount`, p0.`total_adjustments_credit`, p0.`total_adjustments_debit`, p0.`final_payout_amount`, p0.`total_gross_amount`, p0.`total_mdr_amount`, p0.`total_vat_amount`, p0.`status`, p0.`bank_transfer_ref`, p0.`confirmed_at`, p0.`rejection_reason`, p0.`rejected_at`, p0.`re_initiated_at`, p0.`re_initiated_batch_id`, p0.`inserted_at`, p0.`updated_at` FROM `payout_items` AS p0 WHERE (p0.`id` = ?) [271] ↳ SettlementCore.Workers.VatInvoiceWorker.perform/1, at: lib/settlement_core/workers/vat_invoice_worker.ex:47 [2026-09-02 10:25:33.321] [DEBUG] QUERY OK source="payout_items" db=0.9ms queue=43.1ms idle=0.0ms SELECT p0.`id`, p0.`payout_batch_id`, p0.`settlement_mis_id`, p0.`settlement_date`, p0.`merchant_mid`, p0.`merchant_id`, p0.`merchant_name`, p0.`merchant_ref_number`, p0.`bank_name`, p0.`iban`, p0.`account_number`, p0.`bank_code`, p0.`currency`, p0.`gross_amount`, p0.`total_deductions`, p0.`payout_amount`, p0.`transaction_count`, p0.`net_settlement_amount`, p0.`total_adjustments_credit`, p0.`total_adjustments_debit`, p0.`final_payout_amount`, p0.`total_gross_amount`, p0.`total_mdr_amount`, p0.`total_vat_amount`, p0.`status`, p0.`bank_transfer_ref`, p0.`confirmed_at`, p0.`rejection_reason`, p0.`rejected_at`, p0.`re_initiated_at`, p0.`re_initiated_batch_id`, p0.`inserted_at`, p0.`updated_at` FROM `payout_items` AS p0 WHERE (p0.`id` = ?) [271] ↳ SettlementCore.Workers.VatMisDistributionWorker.send_merchant_vat_mis/1, at: lib/settlement_core/workers/vat_mis_distribution_worker.ex:122 [2026-09-02 10:25:33.323] [DEBUG] QUERY OK source="tid_masters" db=2.4ms queue=3.6ms idle=0.0ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` = ?) ["425590250000000"] ↳ SettlementCore.Workers.VatInvoiceWorker.perform/1, at: lib/settlement_core/workers/vat_invoice_worker.ex:48 [2026-09-02 10:25:33.324] [DEBUG] QUERY OK source="tid_masters" db=0.5ms queue=2.6ms idle=0.0ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` = ?) ["425590250000000"] ↳ SettlementCore.Workers.VatMisDistributionWorker.send_merchant_vat_mis/1, at: lib/settlement_core/workers/vat_mis_distribution_worker.ex:123 [2026-09-02 10:25:33.324] [INFO ] [VatMisGenerator] Generating VAT MIS Excel for 2026-09-01 merchant="425590250000000" [2026-09-02 10:25:33.325] [DEBUG] QUERY OK source="vat_invoices" db=0.4ms queue=0.3ms idle=0.0ms SELECT v0.`id`, v0.`merchant_mid`, v0.`merchant_id`, v0.`settlement_date`, v0.`invoice_number`, v0.`invoice_date`, v0.`payout_item_id`, v0.`gross_amount`, v0.`mdr_amount`, v0.`vat_amount`, v0.`sent_at`, v0.`sent_to_email`, v0.`inserted_at`, v0.`updated_at` FROM `vat_invoices` AS v0 WHERE (v0.`payout_item_id` = ?) [271] ↳ SettlementCore.Workers.VatInvoiceWorker.create_invoice/1, at: lib/settlement_core/workers/vat_invoice_worker.ex:79 [2026-09-02 10:25:33.327] [DEBUG] QUERY OK source="settlement_mis_items" db=0.9ms queue=1.4ms idle=0.0ms SELECT s0.`id`, s0.`settlement_mis_id`, s0.`core_transaction_id`, s0.`merchant_mid`, s0.`merchant_id`, s0.`merchant_name`, s0.`merchant_ref_number`, s0.`bank_name`, s0.`iban`, s0.`account_number`, s0.`settlement_date`, s0.`rrn`, s0.`tid`, s0.`auth_number`, s0.`transaction_date`, s0.`transaction_type`, s0.`scheme_name`, s0.`card_type_code`, s0.`gross_amount`, s0.`mdr_percentage_rate`, s0.`mdr_amount`, s0.`vat_rate`, s0.`vat_amount`, s0.`interchange_fee`, s0.`adjustment_amount`, s0.`ar_recovery`, s0.`net_payable`, s0.`transaction_count`, s0.`total_gross_amount`, s0.`total_mdr_amount`, s0.`total_vat_amount`, s0.`total_interchange_fee`, s0.`total_net_settlement_amount`, s0.`risk_status`, s0.`exception_type`, s0.`mpr_sent`, s0.`margin_contribution`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis_items` AS s0 WHERE (s0.`settlement_mis_id` = ?) AND (s0.`merchant_mid` = ?) [328, "425590250000000"] ↳ SettlementCore.PayoutItemBreakdown.build/1, at: lib/settlement_core/payout_item_breakdown.ex:10 [2026-09-02 10:25:33.326] [DEBUG] QUERY OK source="vat_invoices" db=0.9ms queue=0.7ms idle=0.0ms SELECT v0.`invoice_number`, coalesce(t1.`merchant_name_legal`, t1.`merchant_name_dba`), v0.`merchant_mid`, v0.`merchant_id`, v0.`settlement_date`, v0.`invoice_date`, v0.`gross_amount`, v0.`mdr_amount`, v0.`vat_amount`, a4.`line1`, a4.`city`, a4.`country`, t1.`spare_fields` FROM `vat_invoices` AS v0 LEFT OUTER JOIN `tid_masters` AS t1 ON t1.`mid` = v0.`merchant_mid` LEFT OUTER JOIN `brands` AS b2 ON b2.`merchant_reference_id` COLLATE utf8mb4_unicode_ci = t1.`merchant_ref_number` COLLATE utf8mb4_unicode_ci LEFT OUTER JOIN `stores` AS s3 ON s3.`brand_id` = b2.`id` LEFT OUTER JOIN `addresses` AS a4 ON a4.`id` = s3.`address_id` WHERE (v0.`settlement_date` = ?) AND (v0.`merchant_mid` = ?) ORDER BY v0.`merchant_mid`, v0.`invoice_number` [~D[2026-09-01], "425590250000000"] ↳ SettlementCore.VatMisGenerator.generate_excel/2, at: lib/settlement_core/vat_mis_generator.ex:80 [2026-09-02 10:25:33.328] [INFO ] VAT invoice not yet available for MID=425590250000000 on 2026-09-01, snoozing 120s [2026-09-02 10:25:33.330] [DEBUG] QUERY OK source="merchant_adjustments" db=2.9ms idle=0.2ms SELECT m0.`id`, m0.`merchant_mid`, m0.`merchant_name`, m0.`adjustment_date`, m0.`debit_credit`, m0.`amount`, m0.`currency`, m0.`adjustment_type`, m0.`description`, m0.`settlement_mis_id`, m0.`status`, m0.`applied_at`, m0.`cancelled_at`, m0.`cancel_reason`, m0.`approval_status`, m0.`level1_reviewed_by`, m0.`level1_reviewed_at`, m0.`level2_approved_by`, m0.`level2_approved_at`, m0.`rejected_by`, m0.`rejected_at`, m0.`rejection_reason`, m0.`created_by`, m0.`updated_by`, m0.`inserted_at`, m0.`updated_at` FROM `merchant_adjustments` AS m0 WHERE (m0.`settlement_mis_id` = ?) AND (m0.`merchant_mid` = ?) AND (m0.`approval_status` = 'approved') [328, "425590250000000"] ↳ SettlementCore.PayoutItemBreakdown.build/1, at: lib/settlement_core/payout_item_breakdown.ex:11 [2026-09-02 10:25:33.370] [INFO ] SettlementAdviceWorker enqueued for PayoutItem: 272 [2026-09-02 10:25:33.373] [DEBUG] QUERY OK db=0.5ms queue=41.5ms idle=0.0ms SELECT GET_LOCK(?, 10) ["vat_invoice_2026"] [2026-09-02 10:25:33.380] [DEBUG] QUERY OK source="vat_invoices" db=0.4ms queue=5.8ms idle=0.0ms SELECT count(v0.`id`) FROM `vat_invoices` AS v0 WHERE (YEAR(v0.`invoice_date`) = ?) [2026] ↳ SettlementCore.Workers.VatInvoiceWorker.generate_invoice_number/0, at: lib/settlement_core/workers/vat_invoice_worker.ex:200 [2026-09-02 10:25:33.464] [DEBUG] QUERY OK db=0.3ms queue=82.4ms idle=0.0ms SELECT RELEASE_LOCK(?) ["vat_invoice_2026"] [2026-09-02 10:25:33.489] [INFO ] [SettlementAdviceWorker] Starting for payout_item_id=272 [2026-09-02 10:25:33.490] [INFO ] [SettlementAdviceWorker] Fetching PayoutItem 272 [2026-09-02 10:25:33.534] [INFO ] VatInvoiceWorker enqueued for PayoutItem: 272 [2026-09-02 10:25:33.556] [DEBUG] QUERY OK source="payout_items" db=0.6ms queue=64.9ms idle=0.0ms SELECT p0.`id`, p0.`payout_batch_id`, p0.`settlement_mis_id`, p0.`settlement_date`, p0.`merchant_mid`, p0.`merchant_id`, p0.`merchant_name`, p0.`merchant_ref_number`, p0.`bank_name`, p0.`iban`, p0.`account_number`, p0.`bank_code`, p0.`currency`, p0.`gross_amount`, p0.`total_deductions`, p0.`payout_amount`, p0.`transaction_count`, p0.`net_settlement_amount`, p0.`total_adjustments_credit`, p0.`total_adjustments_debit`, p0.`final_payout_amount`, p0.`total_gross_amount`, p0.`total_mdr_amount`, p0.`total_vat_amount`, p0.`status`, p0.`bank_transfer_ref`, p0.`confirmed_at`, p0.`rejection_reason`, p0.`rejected_at`, p0.`re_initiated_at`, p0.`re_initiated_batch_id`, p0.`inserted_at`, p0.`updated_at` FROM `payout_items` AS p0 WHERE (p0.`id` = ?) [272] ↳ SettlementCore.Workers.SettlementAdviceWorker.perform/1, at: lib/settlement_core/workers/settlement_advice_worker.ex:40 [2026-09-02 10:25:33.558] [INFO ] [SettlementAdviceWorker] ✓ Got PayoutItem, MID=E2E_M3_TEST001, payout_batch_id=180 [2026-09-02 10:25:33.558] [INFO ] [SettlementAdviceWorker] Fetching PayoutBatch 180 [2026-09-02 10:25:33.581] [DEBUG] QUERY OK db=46.2ms queue=70.5ms idle=0.0ms INSERT INTO `vat_invoices` (`mdr_amount`,`vat_amount`,`invoice_number`,`invoice_date`,`settlement_date`,`merchant_mid`,`gross_amount`,`merchant_id`,`payout_item_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?) [Decimal.new("9.71"), Decimal.new("0.49"), "INV-2026-00038", ~D[2026-09-02], ~D[2026-09-01], "425590250000000", Decimal.new("555.00"), 990002, 271, ~N[2026-09-02 10:25:33], ~N[2026-09-02 10:25:33]] ↳ SettlementCore.Workers.VatInvoiceWorker.insert_invoice/1, at: lib/settlement_core/workers/vat_invoice_worker.ex:108 [2026-09-02 10:25:33.584] [DEBUG] QUERY OK source="payout_batches" db=0.7ms queue=24.4ms idle=0.0ms SELECT p0.`id`, p0.`settlement_mis_id`, p0.`payout_date`, p0.`batch_type`, p0.`total_merchants`, p0.`total_items`, p0.`total_amount`, p0.`currency`, p0.`file_path`, p0.`file_name`, p0.`encryption_method`, p0.`batch_reference`, p0.`encrypted_file_path`, p0.`file_hash`, p0.`encryption_key_ref`, p0.`generated_by`, p0.`generated_at`, p0.`transmission_method`, p0.`status`, p0.`transmitted_at`, p0.`transmission_reference`, p0.`bank_confirmation_ref`, p0.`failure_reason`, p0.`confirmed_at`, p0.`confirmed_item_count`, p0.`rejected_item_count`, p0.`inserted_at`, p0.`updated_at` FROM `payout_batches` AS p0 WHERE (p0.`id` = ?) [180] ↳ SettlementCore.Workers.SettlementAdviceWorker.perform/1, at: lib/settlement_core/workers/settlement_advice_worker.ex:44 [2026-09-02 10:25:33.584] [INFO ] [SettlementAdviceWorker] ✓ Got PayoutBatch, ref=BATCH-20260901-328 [2026-09-02 10:25:33.584] [INFO ] [SettlementAdviceWorker] Fetching TidMaster for MID=E2E_M3_TEST001 [2026-09-02 10:25:33.640] [INFO ] VatMisDistributionWorker enqueued for PayoutItem: 272 [2026-09-02 10:25:33.642] [DEBUG] QUERY OK source="bank_confirmation_records" db=2.0ms UPDATE `bank_confirmation_records` SET `processed_at` = ?, `processed_status` = ?, `updated_at` = ? WHERE `id` = ? [~N[2026-09-02 10:25:33], "success", ~N[2026-09-02 10:25:33], 100] ↳ anonymous fn/3 in Ecto.Adapters.SQL.checkout_or_transaction/4, at: lib/ecto/adapters/sql.ex:1473 [2026-09-02 10:25:33.642] [DEBUG] QUERY OK source="tid_masters" db=1.2ms queue=55.9ms idle=0.0ms SELECT a3.`line1`, a3.`country` FROM `tid_masters` AS t0 LEFT OUTER JOIN `brands` AS b1 ON b1.`merchant_reference_id` COLLATE utf8mb4_unicode_ci = t0.`merchant_ref_number` COLLATE utf8mb4_unicode_ci LEFT OUTER JOIN `stores` AS s2 ON s2.`brand_id` = b1.`id` LEFT OUTER JOIN `addresses` AS a3 ON a3.`id` = s2.`address_id` WHERE (t0.`mid` = ?) LIMIT 1 ["425590250000000"] ↳ SettlementCore.Workers.VatInvoiceWorker.fetch_address_details/1, at: lib/settlement_core/workers/vat_invoice_worker.ex:180 [2026-09-02 10:25:33.643] [INFO ] [SettlementNotifier] Sending VAT Invoice INV-2026-00038 to sunny@dataaegis.com [2026-09-02 10:25:33.645] [INFO ] [EmailPdfGenerator] Rendering vat_invoice_pdf to PDF: VAT_Invoice_INV-2026-00038.pdf [2026-09-02 10:25:33.645] [DEBUG] QUERY OK source="tid_masters" db=2.1ms queue=57.4ms idle=0.0ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` = ?) ["E2E_M3_TEST001"] ↳ SettlementCore.Workers.SettlementAdviceWorker.perform/1, at: lib/settlement_core/workers/settlement_advice_worker.ex:48 [2026-09-02 10:25:33.646] [INFO ] [SettlementAdviceWorker] ✓ Got TidMaster: %SettlementCore.TidMaster{__meta__: #Ecto.Schema.Metadata<:loaded, "tid_masters">, id: 21, mms_user_id: 990200001, mid: "E2E_M3_TEST001", store_id: nil, merchant_ref_number: "E2E_M3_TEST001", tid: [], qr_id: nil, merchant_name_legal: "E2E Test Merchant Three", merchant_name_dba: "100%-Held E2E Test Co", registered_mobile: "0500000003", registered_email: "sunny@dataaegis.com", mcc_code: "5999", mcc_description: nil, bank_code: "TESTBANK", bank_name: "Test Bank", bank_account_number: "E2EM3ACCT001", iban: "AE000000000000000000003", virtual_iban: nil, enabled_schemes: ["mpos", "pos_terminal"], mdr_rates: %{"AMEX_CREDIT" => %{"fixed_fee" => "0.00", "percentage_rate" => "2.7500"}, "MC_DEBIT_STD" => %{"fixed_fee" => "0.00", "percentage_rate" => "1.7500"}, "VISA_CREDIT_STD" => %{"fixed_fee" => "0.00", "percentage_rate" => "2.0000"}}, onboarding_date: nil, contract_approved_at: nil, onboarding_source: nil, onboarding_id: nil, last_transaction_date: nil, last_transaction_amount: nil, mms_synced_at: nil, status: "active", spare_fields: %{}, inserted_at: ~N[2026-09-01 06:37:43], updated_at: ~N[2026-09-01 06:37:43]} [2026-09-02 10:25:33.645] [INFO ] [EmailPdfGenerator] ✓ HTML rendered, size: 6947 bytes [2026-09-02 10:25:33.647] [INFO ] [SettlementAdviceWorker] Email address: "sunny@dataaegis.com" [2026-09-02 10:25:33.647] [INFO ] [SettlementAdviceWorker] Building PayoutItemBreakdown [2026-09-02 10:25:33.648] [INFO ] [EmailPdfGenerator] ✓ HTML written to /tmp/platform_web_pdf_8962/document.html [2026-09-02 10:25:33.650] [INFO ] [EmailPdfGenerator] Using wkhtmltopdf [2026-09-02 10:25:33.686] [DEBUG] QUERY OK source="bank_confirmation_batches" db=1.3ms UPDATE `bank_confirmation_batches` SET `successful_records` = ?, `updated_at` = ? WHERE `id` = ? [3, ~N[2026-09-02 10:25:33], 72] ↳ anonymous fn/3 in Ecto.Adapters.SQL.checkout_or_transaction/4, at: lib/ecto/adapters/sql.ex:1473 [2026-09-02 10:25:33.704] [INFO ] [VatInvoiceWorker] Generating VAT invoice for payout_item_id=272 [2026-09-02 10:25:33.705] [DEBUG] QUERY OK source="settlement_mis_items" db=1.5ms queue=55.1ms idle=0.0ms SELECT s0.`id`, s0.`settlement_mis_id`, s0.`core_transaction_id`, s0.`merchant_mid`, s0.`merchant_id`, s0.`merchant_name`, s0.`merchant_ref_number`, s0.`bank_name`, s0.`iban`, s0.`account_number`, s0.`settlement_date`, s0.`rrn`, s0.`tid`, s0.`auth_number`, s0.`transaction_date`, s0.`transaction_type`, s0.`scheme_name`, s0.`card_type_code`, s0.`gross_amount`, s0.`mdr_percentage_rate`, s0.`mdr_amount`, s0.`vat_rate`, s0.`vat_amount`, s0.`interchange_fee`, s0.`adjustment_amount`, s0.`ar_recovery`, s0.`net_payable`, s0.`transaction_count`, s0.`total_gross_amount`, s0.`total_mdr_amount`, s0.`total_vat_amount`, s0.`total_interchange_fee`, s0.`total_net_settlement_amount`, s0.`risk_status`, s0.`exception_type`, s0.`mpr_sent`, s0.`margin_contribution`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis_items` AS s0 WHERE (s0.`settlement_mis_id` = ?) AND (s0.`merchant_mid` = ?) [328, "E2E_M3_TEST001"] ↳ SettlementCore.PayoutItemBreakdown.build/1, at: lib/settlement_core/payout_item_breakdown.ex:10 [2026-09-02 10:25:33.707] [DEBUG] QUERY OK source="merchant_adjustments" db=0.8ms queue=0.5ms idle=0.3ms SELECT m0.`id`, m0.`merchant_mid`, m0.`merchant_name`, m0.`adjustment_date`, m0.`debit_credit`, m0.`amount`, m0.`currency`, m0.`adjustment_type`, m0.`description`, m0.`settlement_mis_id`, m0.`status`, m0.`applied_at`, m0.`cancelled_at`, m0.`cancel_reason`, m0.`approval_status`, m0.`level1_reviewed_by`, m0.`level1_reviewed_at`, m0.`level2_approved_by`, m0.`level2_approved_at`, m0.`rejected_by`, m0.`rejected_at`, m0.`rejection_reason`, m0.`created_by`, m0.`updated_by`, m0.`inserted_at`, m0.`updated_at` FROM `merchant_adjustments` AS m0 WHERE (m0.`settlement_mis_id` = ?) AND (m0.`merchant_mid` = ?) AND (m0.`approval_status` = 'approved') [328, "E2E_M3_TEST001"] ↳ SettlementCore.PayoutItemBreakdown.build/1, at: lib/settlement_core/payout_item_breakdown.ex:11 [2026-09-02 10:25:33.709] [INFO ] [SettlementAdviceWorker] ✓ Breakdown built, scheme_rows count: 3 [2026-09-02 10:25:33.709] [INFO ] [SettlementAdviceWorker] merchant_name=E2E Test Merchant Three [2026-09-02 10:25:33.709] [INFO ] [SettlementAdviceWorker] group_id=E2E_M3_TEST001 [2026-09-02 10:25:33.709] [INFO ] [SettlementAdviceWorker] merchant_trn= [2026-09-02 10:25:33.709] [INFO ] [SettlementAdviceWorker] Building section_rows from 3 scheme_rows [2026-09-02 10:25:33.710] [INFO ] [SettlementAdviceWorker] ✓ section_rows count: 9 [2026-09-02 10:25:33.711] [INFO ] [SettlementAdviceWorker] Getting logo_src [2026-09-02 10:25:33.712] [INFO ] [SettlementAdviceWorker] ✓ logo_src=file:///var/www/internaltesting/sunny/tmsapp/tmsuat_apps/_build/dev/lib/platform_web/priv/static/images/logo.png [2026-09-02 10:25:33.709] [DEBUG] QUERY OK source="payout_items" db=1.3ms queue=2.0ms idle=0.0ms SELECT p0.`id`, p0.`payout_batch_id`, p0.`settlement_mis_id`, p0.`settlement_date`, p0.`merchant_mid`, p0.`merchant_id`, p0.`merchant_name`, p0.`merchant_ref_number`, p0.`bank_name`, p0.`iban`, p0.`account_number`, p0.`bank_code`, p0.`currency`, p0.`gross_amount`, p0.`total_deductions`, p0.`payout_amount`, p0.`transaction_count`, p0.`net_settlement_amount`, p0.`total_adjustments_credit`, p0.`total_adjustments_debit`, p0.`final_payout_amount`, p0.`total_gross_amount`, p0.`total_mdr_amount`, p0.`total_vat_amount`, p0.`status`, p0.`bank_transfer_ref`, p0.`confirmed_at`, p0.`rejection_reason`, p0.`rejected_at`, p0.`re_initiated_at`, p0.`re_initiated_batch_id`, p0.`inserted_at`, p0.`updated_at` FROM `payout_items` AS p0 WHERE (p0.`id` = ?) [272] ↳ SettlementCore.Workers.VatInvoiceWorker.perform/1, at: lib/settlement_core/workers/vat_invoice_worker.ex:47 [2026-09-02 10:25:33.714] [DEBUG] QUERY OK source="bank_confirmation_records" db=1.4ms idle=2.9ms SELECT b0.`id`, b0.`merchant_mid`, b0.`status`, b0.`transfer_reference_number`, b0.`confirmed_at`, b0.`failure_reason`, b0.`amount_from_csv`, b0.`validation_status`, b0.`validation_error`, b0.`expected_amount`, b0.`amount_match`, b0.`already_confirmed`, b0.`already_confirmed_at`, b0.`processed_at`, b0.`processed_status`, b0.`processed_error`, b0.`batch_id`, b0.`payout_item_id`, b0.`inserted_at`, b0.`updated_at` FROM `bank_confirmation_records` AS b0 WHERE (b0.`payout_item_id` = ?) [272] ↳ SettlementCore.Workers.SettlementAdviceWorker.confirmation_transfer_reference/1, at: lib/settlement_core/workers/settlement_advice_worker.ex:306 [2026-09-02 10:25:33.716] [INFO ] [SettlementAdviceWorker] transfer_reference=BNK20260902M3 [2026-09-02 10:25:33.716] [INFO ] [SettlementAdviceWorker] Building assigns map [2026-09-02 10:25:33.717] [INFO ] [SettlementAdviceWorker] ✓ Assigns built with 23 fields [2026-09-02 10:25:33.717] [INFO ] [SettlementAdviceWorker] Calling SettlementNotifier.send_settlement_advice to sunny@dataaegis.com [2026-09-02 10:25:33.717] [INFO ] [SettlementNotifier] Sending Settlement Advice to sunny@dataaegis.com ref=BNK20260902M3 [2026-09-02 10:25:33.717] [INFO ] [EmailPdfGenerator] Rendering settlement_advice_pdf to PDF: Settlement_Advice_E2E_M3_TEST001_2026-09-01.pdf [2026-09-02 10:25:33.717] [DEBUG] QUERY OK source="tid_masters" db=2.2ms queue=1.1ms idle=0.0ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` = ?) ["E2E_M3_TEST001"] ↳ SettlementCore.Workers.VatInvoiceWorker.perform/1, at: lib/settlement_core/workers/vat_invoice_worker.ex:48 [2026-09-02 10:25:33.717] [INFO ] [EmailPdfGenerator] ✓ HTML rendered, size: 9827 bytes [2026-09-02 10:25:33.721] [DEBUG] QUERY OK source="vat_invoices" db=3.3ms idle=0.3ms SELECT v0.`id`, v0.`merchant_mid`, v0.`merchant_id`, v0.`settlement_date`, v0.`invoice_number`, v0.`invoice_date`, v0.`payout_item_id`, v0.`gross_amount`, v0.`mdr_amount`, v0.`vat_amount`, v0.`sent_at`, v0.`sent_to_email`, v0.`inserted_at`, v0.`updated_at` FROM `vat_invoices` AS v0 WHERE (v0.`payout_item_id` = ?) [272] ↳ SettlementCore.Workers.VatInvoiceWorker.create_invoice/1, at: lib/settlement_core/workers/vat_invoice_worker.ex:79 [2026-09-02 10:25:33.722] [DEBUG] QUERY OK source="settlement_mis_items" db=1.1ms idle=0.3ms SELECT s0.`id`, s0.`settlement_mis_id`, s0.`core_transaction_id`, s0.`merchant_mid`, s0.`merchant_id`, s0.`merchant_name`, s0.`merchant_ref_number`, s0.`bank_name`, s0.`iban`, s0.`account_number`, s0.`settlement_date`, s0.`rrn`, s0.`tid`, s0.`auth_number`, s0.`transaction_date`, s0.`transaction_type`, s0.`scheme_name`, s0.`card_type_code`, s0.`gross_amount`, s0.`mdr_percentage_rate`, s0.`mdr_amount`, s0.`vat_rate`, s0.`vat_amount`, s0.`interchange_fee`, s0.`adjustment_amount`, s0.`ar_recovery`, s0.`net_payable`, s0.`transaction_count`, s0.`total_gross_amount`, s0.`total_mdr_amount`, s0.`total_vat_amount`, s0.`total_interchange_fee`, s0.`total_net_settlement_amount`, s0.`risk_status`, s0.`exception_type`, s0.`mpr_sent`, s0.`margin_contribution`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis_items` AS s0 WHERE (s0.`settlement_mis_id` = ?) AND (s0.`merchant_mid` = ?) [328, "E2E_M3_TEST001"] ↳ SettlementCore.PayoutItemBreakdown.build/1, at: lib/settlement_core/payout_item_breakdown.ex:10 [2026-09-02 10:25:33.724] [DEBUG] QUERY OK source="merchant_adjustments" db=1.5ms idle=0.2ms SELECT m0.`id`, m0.`merchant_mid`, m0.`merchant_name`, m0.`adjustment_date`, m0.`debit_credit`, m0.`amount`, m0.`currency`, m0.`adjustment_type`, m0.`description`, m0.`settlement_mis_id`, m0.`status`, m0.`applied_at`, m0.`cancelled_at`, m0.`cancel_reason`, m0.`approval_status`, m0.`level1_reviewed_by`, m0.`level1_reviewed_at`, m0.`level2_approved_by`, m0.`level2_approved_at`, m0.`rejected_by`, m0.`rejected_at`, m0.`rejection_reason`, m0.`created_by`, m0.`updated_by`, m0.`inserted_at`, m0.`updated_at` FROM `merchant_adjustments` AS m0 WHERE (m0.`settlement_mis_id` = ?) AND (m0.`merchant_mid` = ?) AND (m0.`approval_status` = 'approved') [328, "E2E_M3_TEST001"] ↳ SettlementCore.PayoutItemBreakdown.build/1, at: lib/settlement_core/payout_item_breakdown.ex:11 [2026-09-02 10:25:33.726] [DEBUG] QUERY OK db=0.2ms queue=1.0ms idle=0.1ms SELECT GET_LOCK(?, 10) ["vat_invoice_2026"] [2026-09-02 10:25:33.727] [INFO ] [EmailPdfGenerator] ✓ HTML written to /tmp/platform_web_pdf_9058/document.html [2026-09-02 10:25:33.732] [INFO ] [EmailPdfGenerator] Using wkhtmltopdf [2026-09-02 10:25:33.743] [DEBUG] QUERY OK db=57.1ms commit [] ↳ PlatformWeb.SettlementLive.PayoutDashboard.handle_event/3, at: lib/platform_web/live/settlement_live/payout_dashboard.ex:944 [2026-09-02 10:25:33.770] [DEBUG] QUERY OK source="vat_invoices" db=43.6ms idle=0.1ms SELECT count(v0.`id`) FROM `vat_invoices` AS v0 WHERE (YEAR(v0.`invoice_date`) = ?) [2026] ↳ SettlementCore.Workers.VatInvoiceWorker.generate_invoice_number/0, at: lib/settlement_core/workers/vat_invoice_worker.ex:200 [2026-09-02 10:25:33.780] [DEBUG] QUERY OK source="bank_confirmation_batches" db=9.9ms queue=26.3ms idle=0.0ms SELECT b0.`id`, b0.`filename`, b0.`uploaded_at`, b0.`total_records`, b0.`successful_records`, b0.`failed_records`, b0.`approval_status`, b0.`approved_at`, b0.`rejection_reason`, b0.`rejected_at`, b0.`committed_at`, b0.`commit_status`, b0.`commit_error`, b0.`user_id`, b0.`approved_by_user_id`, b0.`inserted_at`, b0.`updated_at` FROM `bank_confirmation_batches` AS b0 WHERE (b0.`approval_status` = 'pending') ORDER BY b0.`inserted_at` DESC [] ↳ PlatformWeb.SettlementLive.PayoutDashboard.handle_event/3, at: lib/platform_web/live/settlement_live/payout_dashboard.ex:947 [2026-09-02 10:25:33.781] [DEBUG] QUERY OK db=0.3ms queue=11.2ms idle=0.0ms SELECT RELEASE_LOCK(?) ["vat_invoice_2026"] [2026-09-02 10:25:33.790] [DEBUG] QUERY OK source="users" db=0.5ms queue=8.3ms idle=0.0ms SELECT u0.`id`, u0.`email`, u0.`hashed_password`, u0.`confirmed_at`, u0.`role`, u0.`name`, u0.`first_name`, u0.`last_name`, u0.`data`, u0.`inserted_at`, u0.`updated_at`, u0.`id` FROM `users` AS u0 WHERE (u0.`id` = ?) [3] ↳ PlatformWeb.SettlementLive.PayoutDashboard.handle_event/3, at: lib/platform_web/live/settlement_live/payout_dashboard.ex:947 [2026-09-02 10:25:33.825] [DEBUG] QUERY OK source="bank_confirmation_records" db=0.7ms queue=43.1ms idle=0.0ms SELECT b0.`id`, b0.`merchant_mid`, b0.`status`, b0.`transfer_reference_number`, b0.`confirmed_at`, b0.`failure_reason`, b0.`amount_from_csv`, b0.`validation_status`, b0.`validation_error`, b0.`expected_amount`, b0.`amount_match`, b0.`already_confirmed`, b0.`already_confirmed_at`, b0.`processed_at`, b0.`processed_status`, b0.`processed_error`, b0.`batch_id`, b0.`payout_item_id`, b0.`inserted_at`, b0.`updated_at`, b0.`batch_id` FROM `bank_confirmation_records` AS b0 WHERE (b0.`batch_id` IN (?,?,?,?,?,?)) ORDER BY b0.`batch_id` [49, 51, 53, 54, 65, 66] ↳ PlatformWeb.SettlementLive.PayoutDashboard.handle_event/3, at: lib/platform_web/live/settlement_live/payout_dashboard.ex:947 [2026-09-02 10:25:33.825] [DEBUG] Replied in 1439ms [2026-09-02 10:25:33.846] [DEBUG] QUERY OK db=56.0ms queue=8.5ms idle=0.0ms INSERT INTO `vat_invoices` (`mdr_amount`,`vat_amount`,`invoice_number`,`invoice_date`,`settlement_date`,`merchant_mid`,`gross_amount`,`merchant_id`,`payout_item_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?) [Decimal.new("52.13"), Decimal.new("2.61"), "INV-2026-00039", ~D[2026-09-02], ~D[2026-09-01], "E2E_M3_TEST001", Decimal.new("2350.00"), 990200001, 272, ~N[2026-09-02 10:25:33], ~N[2026-09-02 10:25:33]] ↳ SettlementCore.Workers.VatInvoiceWorker.insert_invoice/1, at: lib/settlement_core/workers/vat_invoice_worker.ex:108 [2026-09-02 10:25:33.849] [DEBUG] QUERY OK source="tid_masters" db=1.0ms queue=1.8ms idle=0.4ms SELECT a3.`line1`, a3.`country` FROM `tid_masters` AS t0 LEFT OUTER JOIN `brands` AS b1 ON b1.`merchant_reference_id` COLLATE utf8mb4_unicode_ci = t0.`merchant_ref_number` COLLATE utf8mb4_unicode_ci LEFT OUTER JOIN `stores` AS s2 ON s2.`brand_id` = b1.`id` LEFT OUTER JOIN `addresses` AS a3 ON a3.`id` = s2.`address_id` WHERE (t0.`mid` = ?) LIMIT 1 ["E2E_M3_TEST001"] ↳ SettlementCore.Workers.VatInvoiceWorker.fetch_address_details/1, at: lib/settlement_core/workers/vat_invoice_worker.ex:180 [2026-09-02 10:25:33.858] [INFO ] [SettlementNotifier] Sending VAT Invoice INV-2026-00039 to sunny@dataaegis.com [2026-09-02 10:25:33.862] [INFO ] [EmailPdfGenerator] Rendering vat_invoice_pdf to PDF: VAT_Invoice_INV-2026-00039.pdf [2026-09-02 10:25:33.862] [INFO ] [EmailPdfGenerator] ✓ HTML rendered, size: 6949 bytes [2026-09-02 10:25:33.871] [INFO ] [EmailPdfGenerator] ✓ HTML written to /tmp/platform_web_pdf_9122/document.html [2026-09-02 10:25:33.872] [DEBUG] QUERY OK source="payout_items" db=47.5ms queue=34.0ms idle=0.0ms SELECT p0.`id`, p0.`payout_batch_id`, p0.`settlement_mis_id`, p0.`settlement_date`, p0.`merchant_mid`, p0.`merchant_id`, p0.`merchant_name`, p0.`merchant_ref_number`, p0.`bank_name`, p0.`iban`, p0.`account_number`, p0.`bank_code`, p0.`currency`, p0.`gross_amount`, p0.`total_deductions`, p0.`payout_amount`, p0.`transaction_count`, p0.`net_settlement_amount`, p0.`total_adjustments_credit`, p0.`total_adjustments_debit`, p0.`final_payout_amount`, p0.`total_gross_amount`, p0.`total_mdr_amount`, p0.`total_vat_amount`, p0.`status`, p0.`bank_transfer_ref`, p0.`confirmed_at`, p0.`rejection_reason`, p0.`rejected_at`, p0.`re_initiated_at`, p0.`re_initiated_batch_id`, p0.`inserted_at`, p0.`updated_at` FROM `payout_items` AS p0 WHERE (p0.`id` = ?) [272] ↳ SettlementCore.Workers.VatMisDistributionWorker.send_merchant_vat_mis/1, at: lib/settlement_core/workers/vat_mis_distribution_worker.ex:122 [2026-09-02 10:25:33.877] [INFO ] [EmailPdfGenerator] Using wkhtmltopdf [2026-09-02 10:25:33.878] [DEBUG] QUERY OK source="tid_masters" db=4.0ms idle=24.2ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` = ?) ["E2E_M3_TEST001"] ↳ SettlementCore.Workers.VatMisDistributionWorker.send_merchant_vat_mis/1, at: lib/settlement_core/workers/vat_mis_distribution_worker.ex:123 [2026-09-02 10:25:33.878] [INFO ] [VatMisGenerator] Generating VAT MIS Excel for 2026-09-01 merchant="E2E_M3_TEST001" [2026-09-02 10:25:33.880] [DEBUG] QUERY OK source="vat_invoices" db=1.5ms idle=5.7ms SELECT v0.`invoice_number`, coalesce(t1.`merchant_name_legal`, t1.`merchant_name_dba`), v0.`merchant_mid`, v0.`merchant_id`, v0.`settlement_date`, v0.`invoice_date`, v0.`gross_amount`, v0.`mdr_amount`, v0.`vat_amount`, a4.`line1`, a4.`city`, a4.`country`, t1.`spare_fields` FROM `vat_invoices` AS v0 LEFT OUTER JOIN `tid_masters` AS t1 ON t1.`mid` = v0.`merchant_mid` LEFT OUTER JOIN `brands` AS b2 ON b2.`merchant_reference_id` COLLATE utf8mb4_unicode_ci = t1.`merchant_ref_number` COLLATE utf8mb4_unicode_ci LEFT OUTER JOIN `stores` AS s3 ON s3.`brand_id` = b2.`id` LEFT OUTER JOIN `addresses` AS a4 ON a4.`id` = s3.`address_id` WHERE (v0.`settlement_date` = ?) AND (v0.`merchant_mid` = ?) ORDER BY v0.`merchant_mid`, v0.`invoice_number` [~D[2026-09-01], "E2E_M3_TEST001"] ↳ SettlementCore.VatMisGenerator.generate_excel/2, at: lib/settlement_core/vat_mis_generator.ex:80 [2026-09-02 10:25:33.896] [INFO ] [SettlementNotifier] Sending VAT MIS to ["sunny@dataaegis.com"] for date 2026-09-01 [2026-09-02 10:25:33.896] [INFO ] [SettlementNotifier] ===== CALLING MAILER.DELIVER ===== [2026-09-02 10:25:33.897] [INFO ] [SettlementNotifier] Email TO: [{"", "sunny@dataaegis.com"}] [2026-09-02 10:25:33.897] [INFO ] [SettlementNotifier] Email FROM: {"", "donotreply@shukria.ae"} [2026-09-02 10:25:33.897] [INFO ] [SettlementNotifier] Email SUBJECT: VAT MIS Report — 2026-09-01 [2026-09-02 10:25:33.897] [INFO ] [AzureCommunicationServices] ===== STARTING EMAIL DELIVERY ===== [2026-09-02 10:25:33.897] [INFO ] [AzureCommunicationServices] Email recipients: [{"", "sunny@dataaegis.com"}] [2026-09-02 10:25:33.897] [INFO ] [AzureCommunicationServices] Email subject: VAT MIS Report — 2026-09-01 [2026-09-02 10:25:33.897] [INFO ] [AzureCommunicationServices] Config values: [2026-09-02 10:25:33.897] [INFO ] - sender: donotreply@shukria.ae [2026-09-02 10:25:33.897] [INFO ] - endpoint: https://shukria-commserv-merchants.uae.communication.azure.com [2026-09-02 10:25:33.897] [INFO ] - api_version: 2025-09-01 [2026-09-02 10:25:33.898] [INFO ] [AzureCommunicationServices] Request URL: https://shukria-commserv-merchants.uae.communication.azure.com/emails:send?api-version=2025-09-01 [2026-09-02 10:25:33.898] [INFO ] [AzureCommunicationServices] Host extracted: shukria-commserv-merchants.uae.communication.azure.com [2026-09-02 10:25:33.898] [INFO ] [AzureCommunicationServices] Path and query: /emails:send?api-version=2025-09-01 [2026-09-02 10:25:33.898] [INFO ] [AzureCommunicationServices] ===== PREPARE_BODY STARTING ===== [2026-09-02 10:25:33.898] [INFO ] [AzureCommunicationServices] email.attachments count: 1 [2026-09-02 10:25:33.898] [INFO ] [AzureCommunicationServices] First attachment is %Swoosh.Attachment{}: true [2026-09-02 10:25:33.900] [INFO ] [AzureCommunicationServices] First attachment data type: <<80, 75, 3, 4, 20, 0, 0, 0, 8, 0, 33, 83, 34, 93, 33, 175, 77, 49, 200, 0, 0, 0, 85, 1, 0, 0, 16, 0, 0, 0, 100, 111, 99, 80, 114, 111, 112, 115, 47, 97, 112, 112, 46, 120, 109, 108, 157, 144, 205, 110, ...>> [2026-09-02 10:25:33.900] [INFO ] [AzureCommunicationServices] First attachment filename: VAT_MIS_E2E_M3_TEST001_2026-09-01.xlsx [2026-09-02 10:25:33.900] [INFO ] [AzureCommunicationServices] Processing attachment: VAT_MIS_E2E_M3_TEST001_2026-09-01.xlsx [2026-09-02 10:25:33.900] [INFO ] [AzureCommunicationServices] Attachment data type: <<80, 75, 3, 4, 20, 0, 0, 0, 8, 0, 33, 83, 34, 93, 33, 175, 77, 49, 200, 0, 0, 0, 85, 1, 0, 0, 16, 0, 0, 0, 100, 111, 99, 80, 114, 111, 112, 115, 47, 97, 112, 112, 46, 120, 109, 108, 157, 144, 205, 110, ...>> [2026-09-02 10:25:33.902] [INFO ] [AzureCommunicationServices] Direct binary size: 4155 bytes [2026-09-02 10:25:33.902] [INFO ] [AzureCommunicationServices] Base64 encoded size: 5540 chars [2026-09-02 10:25:33.908] [INFO ] [AzureCommunicationServices] Attachment struct created: %{"contentInBase64" => "UEsDBBQAAAAIACFTIl0hr00xyAAAAFUBAAAQAAAAZG9jUHJvcHMvYXBwLnhtbJ2QzW4CIRSF9/MUhL0DdWGMYTAmtWsXo3sCd5QEuARuzfj2Ym1r112en3w5OWo7x8CuUKrHNPC3XnIGyaLz6Tzw4/ixWHNWySRnAiYY+A0q3+pOHQpmKOShskZIdeAXorwRotoLRFP7FqeWTFiioSbLWeA0eQvvaD8jJBJLKVcCZoLkwC3yL5A/iZsr/Rfq0D721dN4y42nO8bUiGTC6CNoqcRLPKJdzsFbQ+0CvQ9+DnVW4q/5XTo9b9KyX8mvwo/RKfH6Q3d3UEsDBBQAAAAIACFTIl2lbOjzLwEAAFoCAAARAAAAZG9jUHJvcHMvY29yZS54bWylksFuwjAMhu99iij3NmmroS1qy2ETp02aBGjTblFqSrQmjZJA4e2XdlBg4raj8//+7Ngu5gfVoj1YJztd4jShGIEWXS11U+L1ahE/YuQ81zVvOw0lPoLD8yoqhGGis/BuOwPWS3AogLRjwpR4671hhDixBcVdEhw6iJvOKu5DaBtiuPjmDZCM0hlR4HnNPScDMDYTEZ+QtZiQZmfbEVALAi0o0N6RNEnJxevBKnc3YVSunEr6o4G71rM4uQ9OTsa+75M+H62h/5R8vr0ux6/GUg+jEoCrCKHi1AsTFriHGgUG+614Vj7y55fVAlcZzWYxfYpptkopyx5Ynn8V5E/+iclarptdGF4FOl4vB9vl6bqsCkvcyH/UPQNGati3hb0czqRKC3IdRmN4ew1V9ANQSwMEFAAAAAgAIVMiXcsHwd3eAAAAPwIAAAsAAABfcmVscy8ucmVsc62Sz07DMAyH73uKyPfV3ZAQQst2QUi7ITQewCRuG7WJoyRAeXsiDvyZ2LQDxyQ/f/5sZbOb/aReOWUnQcOqaUFxMGJd6DU8He6XN7DbLjaPPFGpkTy4mFWtCVnDUEq8RcxmYE+5kcihvnSSPJV6TD1GMiP1jOu2vcb0kwFHULW3GtLerkAd3iNfApeuc4bvxLx4DuWPHkeJSqbUc9EwT/gmaXwWGZsKBTwhs75c5vSk6LmQpUJoJPEyplqdiuP87WPFPNTr/Jk4a3T1n+vhuXCwbM87UYxfSvjrH2wXH1BLAwQUAAAACAAhUyJdZjdOSCwBAACbAgAADQAAAHhsL3N0eWxlcy54bWytUstOwzAQvOcrLN+p00gghJJUXCpxbpG4mmTzkOy1ZbuQ/D0bxy2FXjgg5bA7nhnPblzuJq3YBzg/Gqz4dpNzBtiYdsS+4q/H/d0jZz5IbKUyCBWfwfNdnZU+zAoOA0Bg5IC+4kMI9kkI3wygpd8YC0gnnXFaBmpdL7x1IFu/iLQSRZ4/CC1H5HXGGH1lZzB41pgTBooS4YQysTYLS0RaHQWjUhdBcREQWpdWhgAO99SwVB9nSxMgzcFFTT4L70+S3sl5W9z/Uq1hlggxzLtxLe3xJv+K/5ggUaOsAaUOyzLfulvt1LGV+9JWnH4NnvReh9QsV59LWkkqpbVqflZjjxquvchNnlH26aQ9whSPU7BSTF0MJK4TXSL+U7qpW4vrbSR7elTi+1XV2RdQSwMEFAAAAAgAIVMiXROx25mqAQAAzQYAABQAAAB4bC9zaGFyZWRTdHJpbmdzLnhtbJ2VTW/bMAyG7/sVhE7bIZHqAkVb2C6CJB1yWFYkXu+KzMbCLMmT5CD595W7rV2LHegcJfPhyw+Rzu+OpoUD+qCdLdjFVDBAq1yt7b5gP6r7yTWDEKWtZessFuyEgd2Vn/IQIiTUhoI1MXa3nAfVoJFh6jq06cuT80bGdPR7HjqPsg4NYjQtz4S44kZqy0C53saCXSbV3upfPc5fLwYNXeYvKrehkyqJJzcB/QFZ+Q29aqSNsJYGcx7LnA/WFGJW1+kykKCl0V5GDHyu44lEvCTgabavIVWbNRno/Qkqb0n2lTzCyh6cVghrNyUxf+0f0GtXj0IWqVTjEl8taHm4KFuojhZmZqgvTWSxgXukBVR5aYNUMQ0Bnfkd1HuS9qweZ9WYTP6vBJ9XVrX9MKmQHH4hudpijC0aTLUnR7vBp97W8OCdSnMzyFFLNG+k3+NOqp9kZNvvgvK6O6MV32ODnp7WR+isev5pjTzKXYvje3rWQ/jqXQhjsGW2hArTwn5bOI0nlpa2ANaPk0xkVxMhxOUNCREXXNzwAYLKwduJBGewxQ7+Nebpf1Q+A1BLAwQUAAAACAAhUyJdOO9LGisBAADrAQAADwAAAHhsL3dvcmtib29rLnhtbI2RTU8CMRCG7/yKpne3hYMxhIUQiAmJqInI1QzdKdvQj01bFv33zu7G1aO3dt726TPTxerTWdZiTCb4kk8LyRl6FSrjzyV/PzzePXCWMvgKbPBY8i9MfLWcLG4hXk4hXBjd96nkdc7NXIikanSQitCgp0SH6CDTNp5FaiJClWrE7KyYSXkvHBjPB8I8/ocRtDYKt0FdHfo8QCJayGSfatMkTmraWDwOHTFommdw5L0Bq7igtJM+Gryl5YSxsY2uwkBl0+IBTiWX/Vnx5/CiNx8XzPfY4/rwsd+90Yy64q6iEfbzypS1JpmTRc7i3FAQd9VsoI4kRVKvkemrtZ3fi38KMCBMxkiQTbj6TAVJ3xJR70NF3PVvXnINNuG436LNQPaFlNPhrZ8Gl5NvUEsDBBQAAAAIACFTIl0AIj532QAAACwCAAAaAAAAeGwvX3JlbHMvd29ya2Jvb2sueG1sLnJlbHOtkcFOwzAMhu99ish3mnaTEEJLd0FIu7LxAFHqNtXaJLIN296eIGB0CCQOO0W2k+//83u1Pk6jekXiIQYDdVmBwuBiO4TewPPu8eYO1k2xesLRSr7Cfkis8pvABrxIuteancfJchkThjzpIk1Wckm9TtbtbY96UVW3muYMaAqlLrBq0xqgTVuD2p0S/gcfu25w+BDdy4RBflHRLKcRORMt9SgGPuoyc0D/+NaX/uKa+odIe/aI8m3h3Mru3o/6080fcSyvGoe3hO1WKK93nsq8fQ5HXyy9Kd4AUEsDBBQAAAAIACFTIl05yL2AWAMAAIoPAAAYAAAAeGwvd29ya3NoZWV0cy9zaGVldDEueG1sjZdbd6IwEMff/RQ5vK+QeO9Re7b3y9ra1l7fKAblFIhLUu1++w1I1JI5dV7UyO+fDDP/DKR/+JXEZMkzGYl04NC65xCeBmIapbOB8zg5+9V1iFR+OvVjkfKB849L53BY669E9iHnnCuiJ0jlwJkrtThwXRnMeeLLuljwVF8JRZb4Sg+zmSsXGfenhSiJXeZ5bTfxo9RZz3CQYeYQYRgF/EQEnwlP1XqSjMe+0uHLebSQjo6tWGKckTCKFc9GYqrjDv1Ycn2RkP7Cn/EHrh4XBaImYqz/MISr9W45gf45jfQ6eW5IxsOB85sWQHH9KeIruTsgeU7ehfjIB5fTgeM5tfw6j3mQx0eIr7+X/JjHcTEVkX/NrMQdlsvm4k0M39Y4K/Kgg57y0P+M1b1YXfBoNle6bqzedWp5aIGI5TD/JEmUF9Qhif9VfK+iqZoPHNZ2SPAplUie13+sF98oWKlgG0Wj+bOiUSoaGwXt/qxolormVsF+VrRKRQu9RrtUtNGKTqnooBXdUtHdZnfPffRKRW+7xp56UM+U0Ntq9lSEbspO8euYwlOGX8eUnjbw65ji0yY6z9SUn7bwsRkD0K0D2L51jAVoB38/xgQU7wJqbEDxPmDGB8xD540ZHzC8D9imAeB9wIwP2NYHbJ/G+IDhfcCMD1gLfz/GB2xvJ3DXzbNotie+8nU7zcSKZMX14tER5APdrmsy7+5Ed97igbMcen13mXftIG/BOXQEQLQKHQMQq0InANSoQqcA1KxCZwDUqkLnANSuQhcA1KlClwDUrUJXANSrQtdQMq2U/4EoK+cjiLKSfgNRVtZvIcpK+xiirLzfQZSV+HuIsjL/AFFW6icQZeX+EfKolfsnVCaeobmsCr1AlFWhV4iyKvQGUTtx6U+9xbcbnX3b6AwQW4U7giircMco6gRFnaKoMxR1DlGWoS4gyjLUJURZhrrapdJyx/c8" <> ..., "contentType" => "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "name" => "VAT_MIS_E2E_M3_TEST001_2026-09-01.xlsx"} [2026-09-02 10:25:33.908] [INFO ] [AzureCommunicationServices] Final JSON body size: 7291 bytes [2026-09-02 10:25:33.908] [INFO ] [AzureCommunicationServices] JSON first 500 chars: {"attachments":[{"contentInBase64":"UEsDBBQAAAAIACFTIl0hr00xyAAAAFUBAAAQAAAAZG9jUHJvcHMvYXBwLnhtbJ2QzW4CIRSF9/MUhL0DdWGMYTAmtWsXo3sCd5QEuARuzfj2Ym1r112en3w5OWo7x8CuUKrHNPC3XnIGyaLz6Tzw4/ixWHNWySRnAiYY+A0q3+pOHQpmKOShskZIdeAXorwRotoLRFP7FqeWTFiioSbLWeA0eQvvaD8jJBJLKVcCZoLkwC3yL5A/iZsr/Rfq0D721dN4y42nO8bUiGTC6CNoqcRLPKJdzsFbQ+0CvQ9+DnVW4q/5XTo9b9KyX8mvwo/RKfH6Q3d3UEsDBBQAAAAIACFTIl2lbOjzLwEAAFoCAAARAAAAZG9jUHJvcHMvY29yZS54bWylksFuwjAMhu99iij3NmmroS1qy2ETp02aBGjTblFqSrQmjZJA4e2XdlBg4raj8//+7Ngu5gfV [2026-09-02 10:25:33.908] [INFO ] [AzureCommunicationServices] ✅ First attachment contentInBase64 present: 5540 chars (non-empty: true) [2026-09-02 10:25:33.908] [INFO ] [AzureCommunicationServices] Content SHA256: eZLgN73G8itcMFyw4S3D... [2026-09-02 10:25:33.909] [INFO ] [AzureCommunicationServices] Signature (first 20 chars): mDnY+kBmx2dMc8iuVGns... [2026-09-02 10:25:33.909] [INFO ] [AzureCommunicationServices] Auth: HMAC-SHA256 signature authentication [2026-09-02 10:25:33.918] [INFO ] [AzureCommunicationServices] Headers: Authorization, x-ms-date, host, x-ms-content-sha256 [2026-09-02 10:25:33.918] [DEBUG] [AzureCommunicationServices] Request body prepared [2026-09-02 10:25:33.918] [INFO ] [AzureCommunicationServices] Sending HTTP request to Azure... [2026-09-02 10:25:33.918] [DEBUG] [AzureCommunicationServices] Building HTTP request... [2026-09-02 10:25:33.918] [DEBUG] [AzureCommunicationServices] Executing HTTP request via Finch... [2026-09-02 10:25:34.177] [INFO ] [EmailPdfGenerator] ✓ PDF rendered successfully, size: 35046 bytes [2026-09-02 10:25:34.182] [INFO ] [SettlementNotifier] ===== CALLING MAILER.DELIVER ===== [2026-09-02 10:25:34.183] [INFO ] [SettlementNotifier] Email TO: [{"", "sunny@dataaegis.com"}] [2026-09-02 10:25:34.183] [INFO ] [SettlementNotifier] Email FROM: {"", "donotreply@shukria.ae"} [2026-09-02 10:25:34.183] [INFO ] [SettlementNotifier] Email SUBJECT: VAT Invoice INV-2026-00037 — Kalyan Mart — 2026-09-01 [2026-09-02 10:25:34.183] [INFO ] [AzureCommunicationServices] ===== STARTING EMAIL DELIVERY ===== [2026-09-02 10:25:34.185] [INFO ] [AzureCommunicationServices] Email recipients: [{"", "sunny@dataaegis.com"}] [2026-09-02 10:25:34.185] [INFO ] [AzureCommunicationServices] Email subject: VAT Invoice INV-2026-00037 — Kalyan Mart — 2026-09-01 [2026-09-02 10:25:34.186] [INFO ] [EmailPdfGenerator] ✓ PDF rendered successfully, size: 47974 bytes [2026-09-02 10:25:34.186] [INFO ] [AzureCommunicationServices] Config values: [2026-09-02 10:25:34.186] [INFO ] - sender: donotreply@shukria.ae [2026-09-02 10:25:34.186] [INFO ] - endpoint: https://shukria-commserv-merchants.uae.communication.azure.com [2026-09-02 10:25:34.186] [INFO ] - api_version: 2025-09-01 [2026-09-02 10:25:34.186] [INFO ] [AzureCommunicationServices] Request URL: https://shukria-commserv-merchants.uae.communication.azure.com/emails:send?api-version=2025-09-01 [2026-09-02 10:25:34.186] [INFO ] [AzureCommunicationServices] Host extracted: shukria-commserv-merchants.uae.communication.azure.com [2026-09-02 10:25:34.186] [INFO ] [AzureCommunicationServices] Path and query: /emails:send?api-version=2025-09-01 [2026-09-02 10:25:34.186] [INFO ] [AzureCommunicationServices] ===== PREPARE_BODY STARTING ===== [2026-09-02 10:25:34.186] [INFO ] [AzureCommunicationServices] email.attachments count: 1 [2026-09-02 10:25:34.186] [INFO ] [AzureCommunicationServices] First attachment is %Swoosh.Attachment{}: true [2026-09-02 10:25:34.186] [INFO ] [AzureCommunicationServices] First attachment data type: <<37, 80, 68, 70, 45, 49, 46, 52, 10, 37, 195, 162, 195, 163, 10, 49, 32, 48, 32, 111, 98, 106, 10, 60, 60, 10, 47, 84, 105, 116, 108, 101, 32, 40, 41, 10, 47, 67, 114, 101, 97, 116, 111, 114, 32, 40, 254, 255, 0, 119, ...>> [2026-09-02 10:25:34.187] [INFO ] [AzureCommunicationServices] First attachment filename: VAT_Invoice_INV-2026-00037.pdf [2026-09-02 10:25:34.187] [INFO ] [AzureCommunicationServices] Processing attachment: VAT_Invoice_INV-2026-00037.pdf [2026-09-02 10:25:34.188] [INFO ] [SettlementNotifier] ===== CALLING MAILER.DELIVER ===== [2026-09-02 10:25:34.189] [INFO ] [SettlementNotifier] Email TO: [{"", "sunny@dataaegis.com"}] [2026-09-02 10:25:34.189] [INFO ] [SettlementNotifier] Email FROM: {"", "donotreply@shukria.ae"} [2026-09-02 10:25:34.189] [INFO ] [SettlementNotifier] Email SUBJECT: Settlement Advice — Golden Sands Retail LLC — AED 544.80 — 2026-09-01 [2026-09-02 10:25:34.189] [INFO ] [AzureCommunicationServices] ===== STARTING EMAIL DELIVERY ===== [2026-09-02 10:25:34.189] [INFO ] [AzureCommunicationServices] Email recipients: [{"", "sunny@dataaegis.com"}] [2026-09-02 10:25:34.189] [INFO ] [AzureCommunicationServices] Email subject: Settlement Advice — Golden Sands Retail LLC — AED 544.80 — 2026-09-01 [2026-09-02 10:25:34.190] [INFO ] [AzureCommunicationServices] Config values: [2026-09-02 10:25:34.190] [INFO ] - sender: donotreply@shukria.ae [2026-09-02 10:25:34.190] [INFO ] - endpoint: https://shukria-commserv-merchants.uae.communication.azure.com [2026-09-02 10:25:34.190] [INFO ] - api_version: 2025-09-01 [2026-09-02 10:25:34.190] [INFO ] [AzureCommunicationServices] Request URL: https://shukria-commserv-merchants.uae.communication.azure.com/emails:send?api-version=2025-09-01 [2026-09-02 10:25:34.193] [INFO ] [AzureCommunicationServices] Attachment data type: <<37, 80, 68, 70, 45, 49, 46, 52, 10, 37, 195, 162, 195, 163, 10, 49, 32, 48, 32, 111, 98, 106, 10, 60, 60, 10, 47, 84, 105, 116, 108, 101, 32, 40, 41, 10, 47, 67, 114, 101, 97, 116, 111, 114, 32, 40, 254, 255, 0, 119, ...>> [2026-09-02 10:25:34.193] [INFO ] [AzureCommunicationServices] Direct binary size: 35046 bytes [2026-09-02 10:25:34.194] [INFO ] [AzureCommunicationServices] Base64 encoded size: 46728 chars [2026-09-02 10:25:34.207] [INFO ] [AzureCommunicationServices] Attachment struct created: %{"contentInBase64" => "JVBERi0xLjQKJcOiw6MKMSAwIG9iago8PAovVGl0bGUgKCkKL0NyZWF0b3IgKP7/AHcAawBoAHQAbQBsAHQAbwBwAGQAZgAgADAALgAxADIALgA2KQovUHJvZHVjZXIgKP7/AFEAdAAgADUALgAxADUALgAxADMpCi9DcmVhdGlvbkRhdGUgKEQ6MjAyNjA5MDIxMDI1MzNaKQo+PgplbmRvYmoKMiAwIG9iago8PAovVHlwZSAvQ2F0YWxvZwovUGFnZXMgMyAwIFIKPj4KZW5kb2JqCjQgMCBvYmoKPDwKL1R5cGUgL0V4dEdTdGF0ZQovU0EgdHJ1ZQovU00gMC4wMgovY2EgMS4wCi9DQSAxLjAKL0FJUyBmYWxzZQovU01hc2sgL05vbmU+PgplbmRvYmoKNSAwIG9iagpbL1BhdHRlcm4gL0RldmljZVJHQl0KZW5kb2JqCjggMCBvYmoKPDwKL1R5cGUgL1hPYmplY3QKL1N1YnR5cGUgL0ltYWdlCi9XaWR0aCA0NjkKL0hlaWdodCA4OAovQml0c1BlckNvbXBvbmVudCA4Ci9Db2xvclNwYWNlIC9EZXZpY2VHcmF5Ci9MZW5ndGggOSAwIFIKL0ZpbHRlciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCnic7V15nBXF8Z+3CwsrC5JdlUMIrBxyiKLECGoE8YiIKIkheCUeKKhINIoXcuOxkogghwEDKuABGE2IKEYU5BINGMEDXeUOl7gLC+wuyx7ze6+rZ6a7urreTIK/z+/3dr//7L6e7/TMdM30VFVX1TgOi7RLxq/eWVnw2cwbf8QTBRr2G79w1dqVi8ZcUjs5uUG/p99dt+mbdyf+qm6IrmtwrJB5/xbXQ+mrHZKwu7x+xGfvHH48T+40p8wn75+Uc8xOuQZJ0CcQaQIVU7hHKuv5Ko2943KGXHd8hUYuuPVYn3sNSKQ9rkspjnUnW9nNv8Jkd5iVnP2BQZ4RYsKuwX+L2J+NgXfd/JMs7MbfEOxHLeTj/kmQ56X9UFdSAx+PEAPvuu/FSHLaP0j2dXTXc0jy4z/gxdRAoE0ZOfLuEJJ9B00uak6Re9Nk95If9IJq4DjzLSNfUJ8gZ/7bwp5BkNO+sJDza0ybHxYnl1tG3n2QYP/ORi4/xST/wkZ2B0c/T/ptgHFc9I5TEaOtI/8twbY9e677iEl+10rODyciFRNCqVfPRe43FVHLNp/GcabB7mknf2qQW1Ta2T2inmftkp+HYLWtaBC141TEr+wD7z5ksBfYyVX1MHkU0/Wfo55nF/fFEKwna3SwBJYwI/8SJjc5yrBPR+TYtwy5KKqqdJd7mFLcdNTa5Y6K2G8q4lTDl6TgXcx+iCG72FnITNVx/CLiicYt3gFJSVe77uKI/aYinuQG/q+YvZFj90Rk2vHg4bWIJ/qN665MSlocnwJq3FXpO7mBxy++81kxnaOTjy9m2aUNI51oTmJGaZ+E1DyxdnBapH5TEZezAz8CsWdy5KpsnTyQ7dp1b4t0olckdslLQhoTvd9UBKPNxnGBTs46yJGxVbsmiVBXRTrRsYlddtViOenbE6RZkfpNQWQf4Ya9uI7OvpkVEhrMU5PINPlkqgGWEa5gOZcJzudRuk1F3MWO+quIvZJl99LJ45MK9ckIJxrbL3b5C0t6WXAqq7v7YR076lfqZNb6cQszNHLcYkyGPREWyzvCLmUnMpwGUjPDWng1w5nsoH+ni4m3ftzJOtm26KYC3TQcBshdfs9wbpUc0w9WrTCFHfOndHKSZw/5if8SQqh/C3+mM+QunzGc5ZLzRvhuUxB1C9kx76izr2LJ63RyDquBSZQ3DX2qG7x9fmKltPTeDruijEHK4QZ2yD9E7L+xbLRAencImXLxagj1/YjEqVbOKL/bZlEGIdWwlB1xFMrZiPPlu6UoAPxfoYS6OaxLL3AjH8i0UJTlg6ujDkQK4RRWm8VrIg+z4kHrObwGFuCikKc6LNjlWgtFcWFGsZVSDY+z4z1TJ8eowNAAyIx4JqRQXwl5qsrU/w8LZUZAWRp1JFIHtVhfvnuuzr6EJaN5NGNfSKGydqeCPcEulS1IRt39AeUw701MZfRhh/srFETEO4mH62QumkIHZ3cGyFV3GUlS+ottUp/q9J+MR0rgr+xoD9XJvJpU+WOdvSi0UDeGCkC7RnA/nyb+0NoVxLhNKRV/kq+mpyh4MZU31tlsyIP7lk5ubA06NYFmeRoTBXWiDGSj3IC5sKk9+P2n/4dj8v8eD7JjjTznsXyWjWyIB8LL1H0+zLnCKt618nGcQzAeFVtWyUObgY0+2tw+Z/XOwsLNK2YN6pwe4tBdH5o1e/I91HzeuNd9T82eP/0PA7uG6Sc86vTJmzN/xoAk+aE02MgUHG90MUv+Xl+ii5lZcXYcDrGmUgfcU63li7PEvF4Z53qLtKXKjcBGQO1bP1KPvWfS2SRteWEcWxPaVtdPgFmJg2WbjVIs8cK5F1DdzEh0s6cVsWVaYsveJkFDm92JlimJU3xAKpmfOy33JRoL59BvqI/Fxo1a2wXsUP8b3XyvsOwJOvln4cQpMZA8ZQ3dBPH7mKdVDzIYoPQdqu+kHxL//Yzsp/8W4+jvn0PwYLUnx3EG+6+omzVCy7kVqJ+1PcxuYAmMellAeqdyR10qGpY7Ts4Kv8v6zgvwT3/qWjrBttFa44vsSI/Tezi+hGWj2NAXWDLGR9Qp6/i9IC6K/zdJ/LfGYIAdm4jOXyr+G2ow4uP1BnX4qjlm4Kkn1GsD74x6H6UNLSU6mmvMHyDUC4lTsQo1U5lJcpxWcE/9i3pU54pNZZrqw0eFVaE5w5LpJoHGOOsQyzZwBnHKOmCeSAT0ng67oKUGpyloZt3i/+aJ/+abnXSwRSF/jeOVncOiPftcRXa3B1sbLKb72dwZdQNC7UFckFWok5T+4ia8zBsmEvUbQ6bibK2RF9N7qIuPWDaK9EoWcIbxNHHVOrYInois+Fj8+0dEABfmF4l/+4p/txl9dNlPHjyBop8iLtzwZygeD+VJPWG9tR80064Vrd2JC7IJ9TR1Vo8LtQWIDi+tOP7qha4TrGXHGWUQd2DJWNXh7wATSM0y0VjQqkQFkNvF/yhmQvry70383wg6bYL6OMNfZSxfOLBby1NaXfrwYn8EC9FkAU+q5hf1hdpAGbm978ycNmtpsH55RJcqJNFTOpQhVPDXLZ+tHvKEePuf4F9DRagNiqEeCH06O8z7UT4gH26EjJLTWDKFXxOXrQIevnzxv3xtXKURLhJtZVDPYLP40Vfv4qRt8lhHJzbyG5s/5qkKW/X34eHg3HY93Dm71eCtvjoXe93bcmDCmfCuSz/3OW+ePniW2g0IldLZLEJdJS7uy0Fts7uNK0o8qU5z0PsX4Q7ADECm5GR2lFFkSpKQh/N19kSWTOEd4rJVPCFY0jqFm1lPHYB37gL4ARrEExoh5uVUfqpHMLby2vVFpkCob4K06wzxJlEvPbdqmlo6qKXnQvsmS2n9mBoeAUOogclYNR4c1zkThQL3LLSehTqAII+tmo+7bgE7ysgou4Ilf63rZhnfsWwKFhe9j6WCJYsVdBc/NIdXDjwol8GvweLH+1oPt8kjzcMpyelyfnP7qK2+pvc2fjO0kPIu6q23x8bIPZ5VGkGo5xFXxAj1Lp0pH1UU1ylnw3u1xuvYQUaRKc5rLBulm/+aJdPgE9Wk6SkNSrkEqNosEGWxQ5rWZ4lfB1VDu7605+cTrp+nYdN61aHsPak7jMwQWUmhECu6jjMOtlS0DppAuaD8oIZQL/KGwgjsAH93RVutEZYZD+ovjffYMb5T75YP+MZxRu+wXdPYzvrZOgvOEe+hgfXyrxTCp6JlrPxVC+4B1bEn1/dXoOhIoC+Djdcobd6TejEmdwQPczml/DwP+ygh7SDUbgTXKtTdhn9NPqpaVlNDuOue0Yi5TIa365agyBQ+4BtFBDbHrpZQuJS4cB+DBMU3huVqQVd/O8xFgWkNUlKCcdK2ipbDlMMubuOCCNUkECnUtwyufMMNNzbE0RCWp0sCXwZ4rCmXlVWoRB4QPKpH1XWw+0RTpX49" <> ..., "contentType" => "application/pdf", "name" => "VAT_Invoice_INV-2026-00037.pdf"} [2026-09-02 10:25:34.208] [INFO ] [AzureCommunicationServices] Final JSON body size: 52016 bytes [2026-09-02 10:25:34.208] [INFO ] [AzureCommunicationServices] JSON first 500 chars: {"attachments":[{"contentInBase64":"JVBERi0xLjQKJcOiw6MKMSAwIG9iago8PAovVGl0bGUgKCkKL0NyZWF0b3IgKP7/AHcAawBoAHQAbQBsAHQAbwBwAGQAZgAgADAALgAxADIALgA2KQovUHJvZHVjZXIgKP7/AFEAdAAgADUALgAxADUALgAxADMpCi9DcmVhdGlvbkRhdGUgKEQ6MjAyNjA5MDIxMDI1MzNaKQo+PgplbmRvYmoKMiAwIG9iago8PAovVHlwZSAvQ2F0YWxvZwovUGFnZXMgMyAwIFIKPj4KZW5kb2JqCjQgMCBvYmoKPDwKL1R5cGUgL0V4dEdTdGF0ZQovU0EgdHJ1ZQovU00gMC4wMgovY2EgMS4wCi9DQSAxLjAKL0FJUyBmYWxzZQovU01hc2sgL05vbmU+PgplbmRvYmoKNSAwIG9iagpbL1BhdHRlcm4gL0RldmljZVJHQl0KZW5kb2JqCjgg [2026-09-02 10:25:34.211] [INFO ] [AzureCommunicationServices] ✅ First attachment contentInBase64 present: 46728 chars (non-empty: true) [2026-09-02 10:25:34.212] [INFO ] [AzureCommunicationServices] Content SHA256: azG0UmjR/DHMNMzAaaqi... [2026-09-02 10:25:34.212] [INFO ] [AzureCommunicationServices] Signature (first 20 chars): d97GJCLuzkKEgLpViF7V... [2026-09-02 10:25:34.212] [INFO ] [AzureCommunicationServices] Auth: HMAC-SHA256 signature authentication [2026-09-02 10:25:34.212] [INFO ] [AzureCommunicationServices] Headers: Authorization, x-ms-date, host, x-ms-content-sha256 [2026-09-02 10:25:34.212] [DEBUG] [AzureCommunicationServices] Request body prepared [2026-09-02 10:25:34.212] [INFO ] [AzureCommunicationServices] Sending HTTP request to Azure... [2026-09-02 10:25:34.213] [INFO ] [EmailPdfGenerator] ✓ PDF rendered successfully, size: 47851 bytes [2026-09-02 10:25:34.230] [INFO ] [AzureCommunicationServices] Host extracted: shukria-commserv-merchants.uae.communication.azure.com [2026-09-02 10:25:34.230] [INFO ] [AzureCommunicationServices] Path and query: /emails:send?api-version=2025-09-01 [2026-09-02 10:25:34.230] [INFO ] [AzureCommunicationServices] ===== PREPARE_BODY STARTING ===== [2026-09-02 10:25:34.231] [INFO ] [AzureCommunicationServices] email.attachments count: 1 [2026-09-02 10:25:34.231] [INFO ] [AzureCommunicationServices] First attachment is %Swoosh.Attachment{}: true [2026-09-02 10:25:34.231] [INFO ] [AzureCommunicationServices] First attachment data type: <<37, 80, 68, 70, 45, 49, 46, 52, 10, 37, 195, 162, 195, 163, 10, 49, 32, 48, 32, 111, 98, 106, 10, 60, 60, 10, 47, 84, 105, 116, 108, 101, 32, 40, 41, 10, 47, 67, 114, 101, 97, 116, 111, 114, 32, 40, 254, 255, 0, 119, ...>> [2026-09-02 10:25:34.231] [INFO ] [AzureCommunicationServices] First attachment filename: Settlement_Advice_425590250000000_2026-09-01.pdf [2026-09-02 10:25:34.232] [INFO ] [AzureCommunicationServices] Processing attachment: Settlement_Advice_425590250000000_2026-09-01.pdf [2026-09-02 10:25:34.234] [DEBUG] [AzureCommunicationServices] Building HTTP request... [2026-09-02 10:25:34.234] [DEBUG] [AzureCommunicationServices] Executing HTTP request via Finch... [2026-09-02 10:25:34.237] [INFO ] [AzureCommunicationServices] Attachment data type: <<37, 80, 68, 70, 45, 49, 46, 52, 10, 37, 195, 162, 195, 163, 10, 49, 32, 48, 32, 111, 98, 106, 10, 60, 60, 10, 47, 84, 105, 116, 108, 101, 32, 40, 41, 10, 47, 67, 114, 101, 97, 116, 111, 114, 32, 40, 254, 255, 0, 119, ...>> [2026-09-02 10:25:34.237] [INFO ] [AzureCommunicationServices] Direct binary size: 47974 bytes [2026-09-02 10:25:34.237] [INFO ] [SettlementNotifier] ===== CALLING MAILER.DELIVER ===== [2026-09-02 10:25:34.238] [INFO ] [SettlementNotifier] Email TO: [{"", "sunny@dataaegis.com"}] [2026-09-02 10:25:34.238] [INFO ] [SettlementNotifier] Email FROM: {"", "donotreply@shukria.ae"} [2026-09-02 10:25:34.238] [INFO ] [SettlementNotifier] Email SUBJECT: Settlement Advice — Kalyan Mart — AED 784.51 — 2026-09-01 [2026-09-02 10:25:34.238] [INFO ] [AzureCommunicationServices] ===== STARTING EMAIL DELIVERY ===== [2026-09-02 10:25:34.238] [INFO ] [AzureCommunicationServices] Email recipients: [{"", "sunny@dataaegis.com"}] [2026-09-02 10:25:34.238] [INFO ] [AzureCommunicationServices] Email subject: Settlement Advice — Kalyan Mart — AED 784.51 — 2026-09-01 [2026-09-02 10:25:34.239] [INFO ] [AzureCommunicationServices] Config values: [2026-09-02 10:25:34.239] [INFO ] - sender: donotreply@shukria.ae [2026-09-02 10:25:34.239] [INFO ] - endpoint: https://shukria-commserv-merchants.uae.communication.azure.com [2026-09-02 10:25:34.239] [INFO ] - api_version: 2025-09-01 [2026-09-02 10:25:34.239] [INFO ] [AzureCommunicationServices] Request URL: https://shukria-commserv-merchants.uae.communication.azure.com/emails:send?api-version=2025-09-01 [2026-09-02 10:25:34.239] [INFO ] [AzureCommunicationServices] Host extracted: shukria-commserv-merchants.uae.communication.azure.com [2026-09-02 10:25:34.239] [INFO ] [AzureCommunicationServices] Path and query: /emails:send?api-version=2025-09-01 [2026-09-02 10:25:34.239] [INFO ] [AzureCommunicationServices] ===== PREPARE_BODY STARTING ===== [2026-09-02 10:25:34.239] [INFO ] [AzureCommunicationServices] email.attachments count: 1 [2026-09-02 10:25:34.240] [INFO ] [AzureCommunicationServices] First attachment is %Swoosh.Attachment{}: true [2026-09-02 10:25:34.240] [INFO ] [AzureCommunicationServices] First attachment data type: <<37, 80, 68, 70, 45, 49, 46, 52, 10, 37, 195, 162, 195, 163, 10, 49, 32, 48, 32, 111, 98, 106, 10, 60, 60, 10, 47, 84, 105, 116, 108, 101, 32, 40, 41, 10, 47, 67, 114, 101, 97, 116, 111, 114, 32, 40, 254, 255, 0, 119, ...>> [2026-09-02 10:25:34.240] [INFO ] [AzureCommunicationServices] First attachment filename: Settlement_Advice_419926360000000_2026-09-01.pdf [2026-09-02 10:25:34.240] [INFO ] [AzureCommunicationServices] Processing attachment: Settlement_Advice_419926360000000_2026-09-01.pdf [2026-09-02 10:25:34.240] [INFO ] [AzureCommunicationServices] Attachment data type: <<37, 80, 68, 70, 45, 49, 46, 52, 10, 37, 195, 162, 195, 163, 10, 49, 32, 48, 32, 111, 98, 106, 10, 60, 60, 10, 47, 84, 105, 116, 108, 101, 32, 40, 41, 10, 47, 67, 114, 101, 97, 116, 111, 114, 32, 40, 254, 255, 0, 119, ...>> [2026-09-02 10:25:34.240] [INFO ] [AzureCommunicationServices] Direct binary size: 47851 bytes [2026-09-02 10:25:34.240] [INFO ] [AzureCommunicationServices] Base64 encoded size: 63804 chars [2026-09-02 10:25:34.241] [INFO ] [AzureCommunicationServices] Attachment struct created: %{"contentInBase64" => "JVBERi0xLjQKJcOiw6MKMSAwIG9iago8PAovVGl0bGUgKCkKL0NyZWF0b3IgKP7/AHcAawBoAHQAbQBsAHQAbwBwAGQAZgAgADAALgAxADIALgA2KQovUHJvZHVjZXIgKP7/AFEAdAAgADUALgAxADUALgAxADMpCi9DcmVhdGlvbkRhdGUgKEQ6MjAyNjA5MDIxMDI1MzRaKQo+PgplbmRvYmoKMiAwIG9iago8PAovVHlwZSAvQ2F0YWxvZwovUGFnZXMgMyAwIFIKPj4KZW5kb2JqCjQgMCBvYmoKPDwKL1R5cGUgL0V4dEdTdGF0ZQovU0EgdHJ1ZQovU00gMC4wMgovY2EgMS4wCi9DQSAxLjAKL0FJUyBmYWxzZQovU01hc2sgL05vbmU+PgplbmRvYmoKNSAwIG9iagpbL1BhdHRlcm4gL0RldmljZVJHQl0KZW5kb2JqCjcgMCBvYmoKPDwKL1R5cGUgL1hPYmplY3QKL1N1YnR5cGUgL0ltYWdlCi9XaWR0aCA1MDkKL0hlaWdodCAxNTUKL0JpdHNQZXJDb21wb25lbnQgOAovQ29sb3JTcGFjZSAvRGV2aWNlR3JheQovTGVuZ3RoIDggMCBSCi9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp4nO1du7HzuhFWCSqBJagEFOBAoUOUoBJQgkKHLOHEN0IBDhQ6ZOTMY7kC+uhxSGDfoCDx/BK+mTtz/yNgsbsfCSwWD242dviuoHDDWyEMa2vQsBK2/XhcW4eGdbA9jeN+bSUaVsHuPI7j2ko0rAL/Tf0Y19aiYQ30F+7bkP+J2MYr96NfW5GGl2M33Lgf3dqaNLwa/nznvsV7H4fwQ/14XluVhtdi+zVx/xPsh92qGjW8CrvTiMj3Z7emSg0vgjsn3I/97Y/bFvZ/Ag5jhnD/82l6DhreFdt+pMk/fv//abumag1PxvY0MuTvL/8YWtj3vtidIfcT+d1t4udX1K7hmfCI+pn8zf25aKn+98SR4H4m/57qH7/awP9++FnI4cifIsFTG/jfDdNCDkd+kvFte3veC3sc6rHkj+NhRU0/Gu4ZQqlQD5Dv0r/2beBfAz48QyjLPUN+y/esgd051BcqcM+RP55b2Pdq+ISNmkJ5TMO7g7/46oo0SOjHJ5Avcj/v4kLkt4WeV+KWeA+Vpe5E7iXyx9gG/lfhPhMPdaVuuTneHRO/BPltoedV+NlSGeqKpfN6E+YtfBT5baHnNZgS76Gq2EBRmiBOJUnynxF/NgAkifdQU64y4KeLeAz5Ld/zbKRbKkNNwWjvBoSfinLkt3zPc5HtsQgVBWud/jh2U1mW/Mb+M5Hvrwn1BHdKpP8dzida8KUa+89DHpBXXFGDmzUx+qS0UOyF7G/DHQf3sjYxDj9auCdb3uWOds8STCFduZfKxWpKaUhGn2cscxiRmH58Kv35RvqKZ+f0Fz9rjNntcUNfTy0ZbpVWIVIlntrt5VFZvV7f8OL3aXk5HeSr6SUjjzvX2k6aKRGf2FBGfl9Prv7i53cxkfs7JzywxLs7HOM054wxiBf/gUmHVPSJENxUFyn5vp7Yrc79kFU4yIVPy7TwX8SUY+gdVwGQv9KGslyJr+c1lOycdBXFKlxeELIK/ESfKm1C17OTzeFAD6VAiyf6XUKuRHxeQxP5p66mWDW5N56B+7XypR1/Jw88Z/KtBuTHZcY/ipeTXzeJbgj3AqiiLACW+uCgppioEwKfSX7l0U3v9eGLr1cpCXzS2z94eFTvE8mvflBC7/UDrKIuAQ725vFxYBo9rPiB5Fc/IqXH+ujFV9I8F3hz80buMfufR379w5F71eseV5Jn+mPBq2/mHnVAH0d+qC9U5TESlfQg0Tg4qa2ncFnVDyP/8IwEkha5n7sltYxu0DIGOYatUNfWYHX8CiUWQ/M4PbeQt/hf0FkaV5+hHCGt28h/GFoHziXO1JDPstJCvfgxHNw+HMlYIAs9G/kPQ+l4By7AVPd9DYbG8Qw/dD+/dYFI/QRe87jYBQ/hVyixFHK+hl+h0454WHK8aJaZN0fcEDIkPzfyH4b8BgsRpjrqB7VtKAI9ajjln5QQyO/2oY8X9PKqcAU8jfzt1YZFIf5lZTzG4fu/r7DvhILiXMtLTWijflSVhG0HVAKN/En4yZHv+lwzflV4TlTGIOZPpuHp/OXBT6rNxLg6b4tKNMjWLreHE3TJ1EVjHTLs4fro6dDh5k7Hyx+leFtsRJ+mibU3RNuYANTGF/tbvP3VU8/kQFuSShCPm6WKgr1apBIJqH3Rc1OpBvNxx+Ty0zAVTbtodlV3G8hXsu9ogwXyJXdcoC3IOKX+BvgFew6/+sP8E0X+nuuOTpQyuQShh82clLOvmEBlrwOjwc+oly5yzmWz8ZmJwz0biN16ttxgL5DveWfcDVNivqAJMJRH8SjjuKvfxfVBYuqZSyCWMH4QeUlIiRzERoWe1eBaOzdi9klghfygk3rxa78CDf4nU9iyeKh0/OreGlA+UGVgXMC2HjedvE6A7xAAEjyrKPBqKggqkYOIijOvAA12qKuYfQIic/yksteozebBnW//pUvaztvLmXnoCQRQPmjlc0DyieuCc6Cd1eaNYIB8x9oATCaWvnMlgAYBDROzTwD56N3Uc65H5DKafOtNG3J6VqsNihfuwgOWDPr6IGzAnCkAZqYZb0kEMS6CwRqRD40IU9HA/XCDZYXsaCK/t7lfW43XaoPiwqBLoWxR6IogSohsU5EXI4nAzoGZDEg+onBuSiZff+8vADERSb43Of8Ksa91SmVYt+zgxQLyly4KLyOfeBnhYAp7L1RhbkokX9+UQYEgv+zQhcS+U+qiQcOXtLyE/JMkIVoVDclPvAjiZUT2qTbMTUnk64esSWDyS7eFC+w7pSp+NYJSI8US8nP3P5V8wi94dbwS+YUr45O2kPzybeE8+39XahKdVezM7S4ifxAkRLapBeRvcRfeL7Bhbkog3zbgY0Dyl2wL5+5oV4WRWaLeOuowjjvdT8q7A/k+7HkJkW1qAfm4cWoyU4V84jm74HQ8OOcO9M6Im7YZ+Qu3hXMxv/okEfmvMVuJkEA6LrqkREdk/L54CZFtqpx8PKKR57erkE8tzJ6vCzd3N1A7I67apuT/Z/G2cJpFlfyOszka+KccB1skkt28hMg2VUw+HtDobLxI/mVNen4befIJasHgvaWzAPmbv/x2AXJPiD6GCKmJk/bRXsJxHhXCAcmelRDZpkrJx60yUyiG/C/vUFGWfDziEyuUjnr5wZi//BZVSrpOvpwkGo6SOthxVHvINYGVENmmCsnHVnHTZ4r8M723gCXf1hgVlsOAb/ktqsSyiiF61GaoAv/IcZEsBsf9yEqg619QSD4ONbzVBj6zzpGPh05H1ifYx/P8xfeb4AVVy9RBXY4ZT950Pp8zGjrnzEqIrJJl5OMAzHOCMfnsAgdHPhpwAyMAxyFEhm/5iTBotWneqLOfha4zoOO4C0HgM8lKiKyOReRjJ/esYEQ+u1uaJR+ax9+Lgl5OKre//CwoCK5tSQPmM345iGvOoOO41uCov+MkRFbFEvLxQNbztiPy+bk2Rz6U4FgJaIAgF3aWnwLf/TuVY80Y6ZczfL8SyCjoOO6RhTY7TkJkFSwgHwd70hQK2jDwRRny4ZYB6UIkOCFn1vOX3v+w/98iKVsuDZHCg0rQcax0INtxEiIroYB8lPEQp8/QhsAXZciHg4wXWoNlGfIX3vwCFCx4hLbkrlugU14FOI5/5AF1jpMQrRJC8hNQAoVf8hopJN/xRRnyYZzVSc3BHbP/gtr+mFHO/hY+9WX9x46/kOuOfCKylDr3sISQ/KSorKyPm3svlnzgc6nXRyFfZKOt4rsU8US/ePBABw4AfFrYTB1II7pyCcvJ94xEWgOJOoZ8oJq8FQ7I4MkvvefRtH6twx2F/j97IM3UAZNduYTF5HvNWqsGVvKDIAEN+hL5RTe8UmvKC8PG7sDuv49JsT+A/F4z9cXkw+bESbb9c3nkst7SOcP1LlZaI8dbwgpbjfxetRNoEISiNvJ9SXMy+dY9Xcz6zHLyLzIP" <> ..., "contentType" => "application/pdf", "name" => "Settlement_Advice_419926360000000_2026-09-01.pdf"} [2026-09-02 10:25:34.241] [INFO ] [AzureCommunicationServices] Final JSON body size: 69180 bytes [2026-09-02 10:25:34.242] [INFO ] [AzureCommunicationServices] JSON first 500 chars: {"attachments":[{"contentInBase64":"JVBERi0xLjQKJcOiw6MKMSAwIG9iago8PAovVGl0bGUgKCkKL0NyZWF0b3IgKP7/AHcAawBoAHQAbQBsAHQAbwBwAGQAZgAgADAALgAxADIALgA2KQovUHJvZHVjZXIgKP7/AFEAdAAgADUALgAxADUALgAxADMpCi9DcmVhdGlvbkRhdGUgKEQ6MjAyNjA5MDIxMDI1MzRaKQo+PgplbmRvYmoKMiAwIG9iago8PAovVHlwZSAvQ2F0YWxvZwovUGFnZXMgMyAwIFIKPj4KZW5kb2JqCjQgMCBvYmoKPDwKL1R5cGUgL0V4dEdTdGF0ZQovU0EgdHJ1ZQovU00gMC4wMgovY2EgMS4wCi9DQSAxLjAKL0FJUyBmYWxzZQovU01hc2sgL05vbmU+PgplbmRvYmoKNSAwIG9iagpbL1BhdHRlcm4gL0RldmljZVJHQl0KZW5kb2JqCjcg [2026-09-02 10:25:34.250] [INFO ] [AzureCommunicationServices] Base64 encoded size: 63968 chars [2026-09-02 10:25:34.252] [INFO ] [AzureCommunicationServices] Attachment struct created: %{"contentInBase64" => "JVBERi0xLjQKJcOiw6MKMSAwIG9iago8PAovVGl0bGUgKCkKL0NyZWF0b3IgKP7/AHcAawBoAHQAbQBsAHQAbwBwAGQAZgAgADAALgAxADIALgA2KQovUHJvZHVjZXIgKP7/AFEAdAAgADUALgAxADUALgAxADMpCi9DcmVhdGlvbkRhdGUgKEQ6MjAyNjA5MDIxMDI1MzNaKQo+PgplbmRvYmoKMiAwIG9iago8PAovVHlwZSAvQ2F0YWxvZwovUGFnZXMgMyAwIFIKPj4KZW5kb2JqCjQgMCBvYmoKPDwKL1R5cGUgL0V4dEdTdGF0ZQovU0EgdHJ1ZQovU00gMC4wMgovY2EgMS4wCi9DQSAxLjAKL0FJUyBmYWxzZQovU01hc2sgL05vbmU+PgplbmRvYmoKNSAwIG9iagpbL1BhdHRlcm4gL0RldmljZVJHQl0KZW5kb2JqCjcgMCBvYmoKPDwKL1R5cGUgL1hPYmplY3QKL1N1YnR5cGUgL0ltYWdlCi9XaWR0aCA1MDkKL0hlaWdodCAxNTUKL0JpdHNQZXJDb21wb25lbnQgOAovQ29sb3JTcGFjZSAvRGV2aWNlR3JheQovTGVuZ3RoIDggMCBSCi9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp4nO1du7HzuhFWCSqBJagEFOBAoUOUoBJQgkKHLOHEN0IBDhQ6ZOTMY7kC+uhxSGDfoCDx/BK+mTtz/yNgsbsfCSwWD242dviuoHDDWyEMa2vQsBK2/XhcW4eGdbA9jeN+bSUaVsHuPI7j2ko0rAL/Tf0Y19aiYQ30F+7bkP+J2MYr96NfW5GGl2M33Lgf3dqaNLwa/nznvsV7H4fwQ/14XluVhtdi+zVx/xPsh92qGjW8CrvTiMj3Z7emSg0vgjsn3I/97Y/bFvZ/Ag5jhnD/82l6DhreFdt+pMk/fv//abumag1PxvY0MuTvL/8YWtj3vtidIfcT+d1t4udX1K7hmfCI+pn8zf25aKn+98SR4H4m/57qH7/awP9++FnI4cifIsFTG/jfDdNCDkd+kvFte3veC3sc6rHkj+NhRU0/Gu4ZQqlQD5Dv0r/2beBfAz48QyjLPUN+y/esgd051BcqcM+RP55b2Pdq+ISNmkJ5TMO7g7/46oo0SOjHJ5Avcj/v4kLkt4WeV+KWeA+Vpe5E7iXyx9gG/lfhPhMPdaVuuTneHRO/BPltoedV+NlSGeqKpfN6E+YtfBT5baHnNZgS76Gq2EBRmiBOJUnynxF/NgAkifdQU64y4KeLeAz5Ld/zbKRbKkNNwWjvBoSfinLkt3zPc5HtsQgVBWud/jh2U1mW/Mb+M5Hvrwn1BHdKpP8dzida8KUa+89DHpBXXFGDmzUx+qS0UOyF7G/DHQf3sjYxDj9auCdb3uWOds8STCFduZfKxWpKaUhGn2cscxiRmH58Kv35RvqKZ+f0Fz9rjNntcUNfTy0ZbpVWIVIlntrt5VFZvV7f8OL3aXk5HeSr6SUjjzvX2k6aKRGf2FBGfl9Prv7i53cxkfs7JzywxLs7HOM054wxiBf/gUmHVPSJENxUFyn5vp7Yrc79kFU4yIVPy7TwX8SUY+gdVwGQv9KGslyJr+c1lOycdBXFKlxeELIK/ESfKm1C17OTzeFAD6VAiyf6XUKuRHxeQxP5p66mWDW5N56B+7XypR1/Jw88Z/KtBuTHZcY/ipeTXzeJbgj3AqiiLACW+uCgppioEwKfSX7l0U3v9eGLr1cpCXzS2z94eFTvE8mvflBC7/UDrKIuAQ725vFxYBo9rPiB5Fc/IqXH+ujFV9I8F3hz80buMfufR379w5F71eseV5Jn+mPBq2/mHnVAH0d+qC9U5TESlfQg0Tg4qa2ncFnVDyP/8IwEkha5n7sltYxu0DIGOYatUNfWYHX8CiUWQ/M4PbeQt/hf0FkaV5+hHCGt28h/GFoHziXO1JDPstJCvfgxHNw+HMlYIAs9G/kPQ+l4By7AVPd9DYbG8Qw/dD+/dYFI/QRe87jYBQ/hVyixFHK+hl+h0454WHK8aJaZN0fcEDIkPzfyH4b8BgsRpjrqB7VtKAI9ajjln5QQyO/2oY8X9PKqcAU8jfzt1YZFIf5lZTzG4fu/r7DvhILiXMtLTWijflSVhG0HVAKN/En4yZHv+lwzflV4TlTGIOZPpuHp/OXBT6rNxLg6b4tKNMjWLreHE3TJ1EVjHTLs4fro6dDh5k7Hyx+leFtsRJ+mibU3RNuYANTGF/tbvP3VU8/kQFuSShCPm6WKgr1apBIJqH3Rc1OpBvNxx+Ty0zAVTbtodlV3G8hXsu9ogwXyJXdcoC3IOKX+BvgFew6/+sP8E0X+nuuOTpQyuQShh82clLOvmEBlrwOjwc+oly5yzmWz8ZmJwz0biN16ttxgL5DveWfcDVNivqAJMJRH8SjjuKvfxfVBYuqZSyCWMH4QeUlIiRzERoWe1eBaOzdi9klghfygk3rxa78CDf4nU9iyeKh0/OreGlA+UGVgXMC2HjedvE6A7xAAEjyrKPBqKggqkYOIijOvAA12qKuYfQIic/yksteozebBnW//pUvaztvLmXnoCQRQPmjlc0DyieuCc6Cd1eaNYIB8x9oATCaWvnMlgAYBDROzTwD56N3Uc65H5DKafOtNG3J6VqsNihfuwgOWDPr6IGzAnCkAZqYZb0kEMS6CwRqRD40IU9HA/XCDZYXsaCK/t7lfW43XaoPiwqBLoWxR6IogSohsU5EXI4nAzoGZDEg+onBuSiZff+8vADERSb43Of8Ksa91SmVYt+zgxQLyly4KLyOfeBnhYAp7L1RhbkokX9+UQYEgv+zQhcS+U+qiQcOXtLyE/JMkIVoVDclPvAjiZUT2qTbMTUnk64esSWDyS7eFC+w7pSp+NYJSI8US8nP3P5V8wi94dbwS+YUr45O2kPzybeE8+39XahKdVezM7S4ifxAkRLapBeRvcRfeL7Bhbkog3zbgY0Dyl2wL5+5oV4WRWaLeOuowjjvdT8q7A/k+7HkJkW1qAfm4cWoyU4V84jm74HQ8OOcO9M6Im7YZ+Qu3hXMxv/okEfmvMVuJkEA6LrqkREdk/L54CZFtqpx8PKKR57erkE8tzJ6vCzd3N1A7I67apuT/Z/G2cJpFlfyOszka+KccB1skkt28hMg2VUw+HtDobLxI/mVNen4befIJasHgvaWzAPmbv/x2AXJPiD6GCKmJk/bRXsJxHhXCAcmelRDZpkrJx60yUyiG/C/vUFGWfDziEyuUjnr5wZi//BZVSrpOvpwkGo6SOthxVHvINYGVENmmCsnHVnHTZ4r8M723gCXf1hgVlsOAb/ktqsSyiiF61GaoAv/IcZEsBsf9yEqg619QSD4ONbzVBj6zzpGPh05H1ifYx/P8xfeb4AVVy9RBXY4ZT950Pp8zGjrnzEqIrJJl5OMAzHOCMfnsAgdHPhpwAyMAxyFEhm/5iTBotWneqLOfha4zoOO4C0HgM8lKiKyOReRjJ/esYEQ+u1uaJR+ax9+Lgl5OKre//CwoCK5tSQPmM345iGvOoOO41uCov+MkRFbFEvLxQNbztiPy+bk2Rz6U4FgJaIAgF3aWnwLf/TuVY80Y6ZczfL8SyCjoOO6RhTY7TkJkFSwgHwd70hQK2jDwRRny4ZYB6UIkOCFn1vOX3v+w/98iKVsuDZHCg0rQcax0INtxEiIroYB8lPEQp8/QhsAXZciHg4wXWoNlGfIX3vwCFCx4hLbkrlugU14FOI5/5AF1jpMQrRJC8hNQAoVf8hopJN/xRRnyYZzVSc3BHbP/gtr+mFHO/hY+9WX9x46/kOuOfCKylDr3sISQ/KSorKyPm3svlnzgc6nXRyFfZKOt4rsU8US/ePBABw4AfFrYTB1II7pyCcvJ94xEWgOJOoZ8oJq8FQ7I4MkvvefRtH6twx2F/j97IM3UAZNduYTF5HvNWqsGVvKDIAEN+hL5RTe8UmvKC8PG7sDuv49JsT+A/F4z9cXkw+bESbb9c3nkst7SOcP1LlZaI8dbwgpbjfxetRNoEISiNvJ9SXMy+dY9Xcz6zHLyLzIP" <> ..., "contentType" => "application/pdf", "name" => "Settlement_Advice_425590250000000_2026-09-01.pdf"} [2026-09-02 10:25:34.252] [INFO ] [AzureCommunicationServices] Final JSON body size: 69394 bytes [2026-09-02 10:25:34.253] [INFO ] [AzureCommunicationServices] JSON first 500 chars: {"attachments":[{"contentInBase64":"JVBERi0xLjQKJcOiw6MKMSAwIG9iago8PAovVGl0bGUgKCkKL0NyZWF0b3IgKP7/AHcAawBoAHQAbQBsAHQAbwBwAGQAZgAgADAALgAxADIALgA2KQovUHJvZHVjZXIgKP7/AFEAdAAgADUALgAxADUALgAxADMpCi9DcmVhdGlvbkRhdGUgKEQ6MjAyNjA5MDIxMDI1MzNaKQo+PgplbmRvYmoKMiAwIG9iago8PAovVHlwZSAvQ2F0YWxvZwovUGFnZXMgMyAwIFIKPj4KZW5kb2JqCjQgMCBvYmoKPDwKL1R5cGUgL0V4dEdTdGF0ZQovU0EgdHJ1ZQovU00gMC4wMgovY2EgMS4wCi9DQSAxLjAKL0FJUyBmYWxzZQovU01hc2sgL05vbmU+PgplbmRvYmoKNSAwIG9iagpbL1BhdHRlcm4gL0RldmljZVJHQl0KZW5kb2JqCjcg [2026-09-02 10:25:34.253] [INFO ] [AzureCommunicationServices] ✅ First attachment contentInBase64 present: 63968 chars (non-empty: true) [2026-09-02 10:25:34.254] [INFO ] [AzureCommunicationServices] Content SHA256: 2yIfq4uy7Zge5C5/bI2L... [2026-09-02 10:25:34.254] [INFO ] [AzureCommunicationServices] Signature (first 20 chars): eXDWMwUHN/E50qvmEah3... [2026-09-02 10:25:34.254] [INFO ] [AzureCommunicationServices] Auth: HMAC-SHA256 signature authentication [2026-09-02 10:25:34.254] [INFO ] [AzureCommunicationServices] Headers: Authorization, x-ms-date, host, x-ms-content-sha256 [2026-09-02 10:25:34.254] [DEBUG] [AzureCommunicationServices] Request body prepared [2026-09-02 10:25:34.254] [INFO ] [AzureCommunicationServices] Sending HTTP request to Azure... [2026-09-02 10:25:34.254] [DEBUG] [AzureCommunicationServices] Building HTTP request... [2026-09-02 10:25:34.254] [DEBUG] [AzureCommunicationServices] Executing HTTP request via Finch... [2026-09-02 10:25:34.255] [INFO ] [AzureCommunicationServices] ✅ First attachment contentInBase64 present: 63804 chars (non-empty: true) [2026-09-02 10:25:34.255] [INFO ] [AzureCommunicationServices] Content SHA256: UQPLc8fPvPzmEJsNlKsd... [2026-09-02 10:25:34.255] [INFO ] [AzureCommunicationServices] Signature (first 20 chars): N9JysxcHQg8ZcfugDcE6... [2026-09-02 10:25:34.255] [INFO ] [AzureCommunicationServices] Auth: HMAC-SHA256 signature authentication [2026-09-02 10:25:34.256] [INFO ] [AzureCommunicationServices] Headers: Authorization, x-ms-date, host, x-ms-content-sha256 [2026-09-02 10:25:34.256] [DEBUG] [AzureCommunicationServices] Request body prepared [2026-09-02 10:25:34.258] [INFO ] [AzureCommunicationServices] Sending HTTP request to Azure... [2026-09-02 10:25:34.258] [DEBUG] [AzureCommunicationServices] Building HTTP request... [2026-09-02 10:25:34.259] [DEBUG] [AzureCommunicationServices] Executing HTTP request via Finch... [2026-09-02 10:25:34.333] [INFO ] [EmailPdfGenerator] ✓ PDF rendered successfully, size: 35042 bytes [2026-09-02 10:25:34.340] [INFO ] [SettlementNotifier] ===== CALLING MAILER.DELIVER ===== [2026-09-02 10:25:34.341] [INFO ] [SettlementNotifier] Email TO: [{"", "sunny@dataaegis.com"}] [2026-09-02 10:25:34.342] [INFO ] [SettlementNotifier] Email FROM: {"", "donotreply@shukria.ae"} [2026-09-02 10:25:34.342] [INFO ] [SettlementNotifier] Email SUBJECT: VAT Invoice INV-2026-00038 — Golden Sands Retail LLC — 2026-09-01 [2026-09-02 10:25:34.342] [INFO ] [AzureCommunicationServices] ===== STARTING EMAIL DELIVERY ===== [2026-09-02 10:25:34.342] [INFO ] [AzureCommunicationServices] Email recipients: [{"", "sunny@dataaegis.com"}] [2026-09-02 10:25:34.342] [INFO ] [AzureCommunicationServices] Email subject: VAT Invoice INV-2026-00038 — Golden Sands Retail LLC — 2026-09-01 [2026-09-02 10:25:34.342] [INFO ] [AzureCommunicationServices] Config values: [2026-09-02 10:25:34.342] [INFO ] - sender: donotreply@shukria.ae [2026-09-02 10:25:34.343] [INFO ] - endpoint: https://shukria-commserv-merchants.uae.communication.azure.com [2026-09-02 10:25:34.343] [INFO ] - api_version: 2025-09-01 [2026-09-02 10:25:34.343] [INFO ] [AzureCommunicationServices] Request URL: https://shukria-commserv-merchants.uae.communication.azure.com/emails:send?api-version=2025-09-01 [2026-09-02 10:25:34.343] [INFO ] [AzureCommunicationServices] Host extracted: shukria-commserv-merchants.uae.communication.azure.com [2026-09-02 10:25:34.343] [INFO ] [AzureCommunicationServices] Path and query: /emails:send?api-version=2025-09-01 [2026-09-02 10:25:34.343] [INFO ] [AzureCommunicationServices] ===== PREPARE_BODY STARTING ===== [2026-09-02 10:25:34.343] [INFO ] [AzureCommunicationServices] email.attachments count: 1 [2026-09-02 10:25:34.343] [INFO ] [AzureCommunicationServices] First attachment is %Swoosh.Attachment{}: true [2026-09-02 10:25:34.343] [INFO ] [AzureCommunicationServices] First attachment data type: <<37, 80, 68, 70, 45, 49, 46, 52, 10, 37, 195, 162, 195, 163, 10, 49, 32, 48, 32, 111, 98, 106, 10, 60, 60, 10, 47, 84, 105, 116, 108, 101, 32, 40, 41, 10, 47, 67, 114, 101, 97, 116, 111, 114, 32, 40, 254, 255, 0, 119, ...>> [2026-09-02 10:25:34.343] [INFO ] [AzureCommunicationServices] First attachment filename: VAT_Invoice_INV-2026-00038.pdf [2026-09-02 10:25:34.343] [INFO ] [AzureCommunicationServices] Processing attachment: VAT_Invoice_INV-2026-00038.pdf [2026-09-02 10:25:34.343] [INFO ] [AzureCommunicationServices] Attachment data type: <<37, 80, 68, 70, 45, 49, 46, 52, 10, 37, 195, 162, 195, 163, 10, 49, 32, 48, 32, 111, 98, 106, 10, 60, 60, 10, 47, 84, 105, 116, 108, 101, 32, 40, 41, 10, 47, 67, 114, 101, 97, 116, 111, 114, 32, 40, 254, 255, 0, 119, ...>> [2026-09-02 10:25:34.343] [INFO ] [AzureCommunicationServices] Direct binary size: 35042 bytes [2026-09-02 10:25:34.347] [INFO ] [AzureCommunicationServices] Base64 encoded size: 46724 chars [2026-09-02 10:25:34.348] [INFO ] [AzureCommunicationServices] Attachment struct created: %{"contentInBase64" => "JVBERi0xLjQKJcOiw6MKMSAwIG9iago8PAovVGl0bGUgKCkKL0NyZWF0b3IgKP7/AHcAawBoAHQAbQBsAHQAbwBwAGQAZgAgADAALgAxADIALgA2KQovUHJvZHVjZXIgKP7/AFEAdAAgADUALgAxADUALgAxADMpCi9DcmVhdGlvbkRhdGUgKEQ6MjAyNjA5MDIxMDI1MzRaKQo+PgplbmRvYmoKMiAwIG9iago8PAovVHlwZSAvQ2F0YWxvZwovUGFnZXMgMyAwIFIKPj4KZW5kb2JqCjQgMCBvYmoKPDwKL1R5cGUgL0V4dEdTdGF0ZQovU0EgdHJ1ZQovU00gMC4wMgovY2EgMS4wCi9DQSAxLjAKL0FJUyBmYWxzZQovU01hc2sgL05vbmU+PgplbmRvYmoKNSAwIG9iagpbL1BhdHRlcm4gL0RldmljZVJHQl0KZW5kb2JqCjggMCBvYmoKPDwKL1R5cGUgL1hPYmplY3QKL1N1YnR5cGUgL0ltYWdlCi9XaWR0aCA0NjkKL0hlaWdodCA4OAovQml0c1BlckNvbXBvbmVudCA4Ci9Db2xvclNwYWNlIC9EZXZpY2VHcmF5Ci9MZW5ndGggOSAwIFIKL0ZpbHRlciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCnic7V15nBXF8Z+3CwsrC5JdlUMIrBxyiKLECGoE8YiIKIkheCUeKKhINIoXcuOxkogghwEDKuABGE2IKEYU5BINGMEDXeUOl7gLC+wuyx7ze6+rZ6a7urreTIK/z+/3dr//7L6e7/TMdM30VFVX1TgOi7RLxq/eWVnw2cwbf8QTBRr2G79w1dqVi8ZcUjs5uUG/p99dt+mbdyf+qm6IrmtwrJB5/xbXQ+mrHZKwu7x+xGfvHH48T+40p8wn75+Uc8xOuQZJ0CcQaQIVU7hHKuv5Ko2943KGXHd8hUYuuPVYn3sNSKQ9rkspjnUnW9nNv8Jkd5iVnP2BQZ4RYsKuwX+L2J+NgXfd/JMs7MbfEOxHLeTj/kmQ56X9UFdSAx+PEAPvuu/FSHLaP0j2dXTXc0jy4z/gxdRAoE0ZOfLuEJJ9B00uak6Re9Nk95If9IJq4DjzLSNfUJ8gZ/7bwp5BkNO+sJDza0ybHxYnl1tG3n2QYP/ORi4/xST/wkZ2B0c/T/ptgHFc9I5TEaOtI/8twbY9e677iEl+10rODyciFRNCqVfPRe43FVHLNp/GcabB7mknf2qQW1Ta2T2inmftkp+HYLWtaBC141TEr+wD7z5ksBfYyVX1MHkU0/Wfo55nF/fFEKwna3SwBJYwI/8SJjc5yrBPR+TYtwy5KKqqdJd7mFLcdNTa5Y6K2G8q4lTDl6TgXcx+iCG72FnITNVx/CLiicYt3gFJSVe77uKI/aYinuQG/q+YvZFj90Rk2vHg4bWIJ/qN665MSlocnwJq3FXpO7mBxy++81kxnaOTjy9m2aUNI51oTmJGaZ+E1DyxdnBapH5TEZezAz8CsWdy5KpsnTyQ7dp1b4t0olckdslLQhoTvd9UBKPNxnGBTs46yJGxVbsmiVBXRTrRsYlddtViOenbE6RZkfpNQWQf4Ya9uI7OvpkVEhrMU5PINPlkqgGWEa5gOZcJzudRuk1F3MWO+quIvZJl99LJ45MK9ckIJxrbL3b5C0t6WXAqq7v7YR076lfqZNb6cQszNHLcYkyGPREWyzvCLmUnMpwGUjPDWng1w5nsoH+ni4m3ftzJOtm26KYC3TQcBshdfs9wbpUc0w9WrTCFHfOndHKSZw/5if8SQqh/C3+mM+QunzGc5ZLzRvhuUxB1C9kx76izr2LJ63RyDquBSZQ3DX2qG7x9fmKltPTeDruijEHK4QZ2yD9E7L+xbLRAencImXLxagj1/YjEqVbOKL/bZlEGIdWwlB1xFMrZiPPlu6UoAPxfoYS6OaxLL3AjH8i0UJTlg6ujDkQK4RRWm8VrIg+z4kHrObwGFuCikKc6LNjlWgtFcWFGsZVSDY+z4z1TJ8eowNAAyIx4JqRQXwl5qsrU/w8LZUZAWRp1JFIHtVhfvnuuzr6EJaN5NGNfSKGydqeCPcEulS1IRt39AeUw701MZfRhh/srFETEO4mH62QumkIHZ3cGyFV3GUlS+ottUp/q9J+MR0rgr+xoD9XJvJpU+WOdvSi0UDeGCkC7RnA/nyb+0NoVxLhNKRV/kq+mpyh4MZU31tlsyIP7lk5ubA06NYFmeRoTBXWiDGSj3IC5sKk9+P2n/4dj8v8eD7JjjTznsXyWjWyIB8LL1H0+zLnCKt618nGcQzAeFVtWyUObgY0+2tw+Z/XOwsLNK2YN6pwe4tBdH5o1e/I91HzeuNd9T82eP/0PA7uG6Sc86vTJmzN/xoAk+aE02MgUHG90MUv+Xl+ii5lZcXYcDrGmUgfcU63li7PEvF4Z53qLtKXKjcBGQO1bP1KPvWfS2SRteWEcWxPaVtdPgFmJg2WbjVIs8cK5F1DdzEh0s6cVsWVaYsveJkFDm92JlimJU3xAKpmfOy33JRoL59BvqI/Fxo1a2wXsUP8b3XyvsOwJOvln4cQpMZA8ZQ3dBPH7mKdVDzIYoPQdqu+kHxL//Yzsp/8W4+jvn0PwYLUnx3EG+6+omzVCy7kVqJ+1PcxuYAmMellAeqdyR10qGpY7Ts4Kv8v6zgvwT3/qWjrBttFa44vsSI/Tezi+hGWj2NAXWDLGR9Qp6/i9IC6K/zdJ/LfGYIAdm4jOXyr+G2ow4uP1BnX4qjlm4Kkn1GsD74x6H6UNLSU6mmvMHyDUC4lTsQo1U5lJcpxWcE/9i3pU54pNZZrqw0eFVaE5w5LpJoHGOOsQyzZwBnHKOmCeSAT0ng67oKUGpyloZt3i/+aJ/+abnXSwRSF/jeOVncOiPftcRXa3B1sbLKb72dwZdQNC7UFckFWok5T+4ia8zBsmEvUbQ6bibK2RF9N7qIuPWDaK9EoWcIbxNHHVOrYInois+Fj8+0dEABfmF4l/+4p/txl9dNlPHjyBop8iLtzwZygeD+VJPWG9tR80064Vrd2JC7IJ9TR1Vo8LtQWIDi+tOP7qha4TrGXHGWUQd2DJWNXh7wATSM0y0VjQqkQFkNvF/yhmQvry70383wg6bYL6OMNfZSxfOLBby1NaXfrwYn8EC9FkAU+q5hf1hdpAGbm978ycNmtpsH55RJcqJNFTOpQhVPDXLZ+tHvKEePuf4F9DRagNiqEeCH06O8z7UT4gH26EjJLTWDKFXxOXrQIevnzxv3xtXKURLhJtZVDPYLP40Vfv4qRt8lhHJzbyG5s/5qkKW/X34eHg3HY93Dm71eCtvjoXe93bcmDCmfCuSz/3OW+ePniW2g0IldLZLEJdJS7uy0Fts7uNK0o8qU5z0PsX4Q7ADECm5GR2lFFkSpKQh/N19kSWTOEd4rJVPCFY0jqFm1lPHYB37gL4ARrEExoh5uVUfqpHMLby2vVFpkCob4K06wzxJlEvPbdqmlo6qKXnQvsmS2n9mBoeAUOogclYNR4c1zkThQL3LLSehTqAII+tmo+7bgE7ysgou4Ilf63rZhnfsWwKFhe9j6WCJYsVdBc/NIdXDjwol8GvweLH+1oPt8kjzcMpyelyfnP7qK2+pvc2fjO0kPIu6q23x8bIPZ5VGkGo5xFXxAj1Lp0pH1UU1ylnw3u1xuvYQUaRKc5rLBulm/+aJdPgE9Wk6SkNSrkEqNosEGWxQ5rWZ4lfB1VDu7605+cTrp+nYdN61aHsPak7jMwQWUmhECu6jjMOtlS0DppAuaD8oIZQL/KGwgjsAH93RVutEZYZD+ovjffYMb5T75YP+MZxRu+wXdPYzvrZOgvOEe+hgfXyrxTCp6JlrPxVC+4B1bEn1/dXoOhIoC+Djdcobd6TejEmdwQPczml/DwP+ygh7SDUbgTXKtTdhn9NPqpaVlNDuOue0Yi5TIa365agyBQ+4BtFBDbHrpZQuJS4cB+DBMU3huVqQVd/O8xFgWkNUlKCcdK2ipbDlMMubuOCCNUkECnUtwyufMMNNzbE0RCWp0sCXwZ4rCmXlVWoRB4QPKpH1XWw+0RTpX49" <> ..., "contentType" => "application/pdf", "name" => "VAT_Invoice_INV-2026-00038.pdf"} [2026-09-02 10:25:34.351] [INFO ] [AzureCommunicationServices] Final JSON body size: 52057 bytes [2026-09-02 10:25:34.351] [INFO ] [AzureCommunicationServices] JSON first 500 chars: {"attachments":[{"contentInBase64":"JVBERi0xLjQKJcOiw6MKMSAwIG9iago8PAovVGl0bGUgKCkKL0NyZWF0b3IgKP7/AHcAawBoAHQAbQBsAHQAbwBwAGQAZgAgADAALgAxADIALgA2KQovUHJvZHVjZXIgKP7/AFEAdAAgADUALgAxADUALgAxADMpCi9DcmVhdGlvbkRhdGUgKEQ6MjAyNjA5MDIxMDI1MzRaKQo+PgplbmRvYmoKMiAwIG9iago8PAovVHlwZSAvQ2F0YWxvZwovUGFnZXMgMyAwIFIKPj4KZW5kb2JqCjQgMCBvYmoKPDwKL1R5cGUgL0V4dEdTdGF0ZQovU0EgdHJ1ZQovU00gMC4wMgovY2EgMS4wCi9DQSAxLjAKL0FJUyBmYWxzZQovU01hc2sgL05vbmU+PgplbmRvYmoKNSAwIG9iagpbL1BhdHRlcm4gL0RldmljZVJHQl0KZW5kb2JqCjgg [2026-09-02 10:25:34.351] [INFO ] [AzureCommunicationServices] ✅ First attachment contentInBase64 present: 46724 chars (non-empty: true) [2026-09-02 10:25:34.351] [INFO ] [AzureCommunicationServices] Content SHA256: ScbRV0wSN/VrV0ldkTwq... [2026-09-02 10:25:34.352] [INFO ] [AzureCommunicationServices] Signature (first 20 chars): NSQ8eo/nmmyhsO5JnYKj... [2026-09-02 10:25:34.352] [INFO ] [AzureCommunicationServices] Auth: HMAC-SHA256 signature authentication [2026-09-02 10:25:34.352] [INFO ] [AzureCommunicationServices] Headers: Authorization, x-ms-date, host, x-ms-content-sha256 [2026-09-02 10:25:34.352] [DEBUG] [AzureCommunicationServices] Request body prepared [2026-09-02 10:25:34.352] [INFO ] [AzureCommunicationServices] Sending HTTP request to Azure... [2026-09-02 10:25:34.352] [DEBUG] [AzureCommunicationServices] Building HTTP request... [2026-09-02 10:25:34.352] [DEBUG] [AzureCommunicationServices] Executing HTTP request via Finch... [2026-09-02 10:25:34.588] [INFO ] [EmailPdfGenerator] ✓ PDF rendered successfully, size: 48298 bytes [2026-09-02 10:25:34.589] [INFO ] [SettlementNotifier] ===== CALLING MAILER.DELIVER ===== [2026-09-02 10:25:34.590] [INFO ] [SettlementNotifier] Email TO: [{"", "sunny@dataaegis.com"}] [2026-09-02 10:25:34.590] [INFO ] [SettlementNotifier] Email FROM: {"", "donotreply@shukria.ae"} [2026-09-02 10:25:34.590] [INFO ] [SettlementNotifier] Email SUBJECT: Settlement Advice — E2E Test Merchant Three — AED 2295.26 — 2026-09-01 [2026-09-02 10:25:34.591] [INFO ] [AzureCommunicationServices] ===== STARTING EMAIL DELIVERY ===== [2026-09-02 10:25:34.592] [INFO ] [AzureCommunicationServices] Email recipients: [{"", "sunny@dataaegis.com"}] [2026-09-02 10:25:34.593] [INFO ] [AzureCommunicationServices] Email subject: Settlement Advice — E2E Test Merchant Three — AED 2295.26 — 2026-09-01 [2026-09-02 10:25:34.593] [INFO ] [AzureCommunicationServices] Config values: [2026-09-02 10:25:34.593] [INFO ] - sender: donotreply@shukria.ae [2026-09-02 10:25:34.593] [INFO ] - endpoint: https://shukria-commserv-merchants.uae.communication.azure.com [2026-09-02 10:25:34.593] [INFO ] - api_version: 2025-09-01 [2026-09-02 10:25:34.593] [INFO ] [AzureCommunicationServices] Request URL: https://shukria-commserv-merchants.uae.communication.azure.com/emails:send?api-version=2025-09-01 [2026-09-02 10:25:34.593] [INFO ] [AzureCommunicationServices] Host extracted: shukria-commserv-merchants.uae.communication.azure.com [2026-09-02 10:25:34.593] [INFO ] [AzureCommunicationServices] Path and query: /emails:send?api-version=2025-09-01 [2026-09-02 10:25:34.593] [INFO ] [AzureCommunicationServices] ===== PREPARE_BODY STARTING ===== [2026-09-02 10:25:34.593] [INFO ] [AzureCommunicationServices] email.attachments count: 1 [2026-09-02 10:25:34.593] [INFO ] [AzureCommunicationServices] First attachment is %Swoosh.Attachment{}: true [2026-09-02 10:25:34.593] [INFO ] [AzureCommunicationServices] First attachment data type: <<37, 80, 68, 70, 45, 49, 46, 52, 10, 37, 195, 162, 195, 163, 10, 49, 32, 48, 32, 111, 98, 106, 10, 60, 60, 10, 47, 84, 105, 116, 108, 101, 32, 40, 41, 10, 47, 67, 114, 101, 97, 116, 111, 114, 32, 40, 254, 255, 0, 119, ...>> [2026-09-02 10:25:34.594] [INFO ] [AzureCommunicationServices] First attachment filename: Settlement_Advice_E2E_M3_TEST001_2026-09-01.pdf [2026-09-02 10:25:34.594] [INFO ] [AzureCommunicationServices] Processing attachment: Settlement_Advice_E2E_M3_TEST001_2026-09-01.pdf [2026-09-02 10:25:34.594] [INFO ] [AzureCommunicationServices] Attachment data type: <<37, 80, 68, 70, 45, 49, 46, 52, 10, 37, 195, 162, 195, 163, 10, 49, 32, 48, 32, 111, 98, 106, 10, 60, 60, 10, 47, 84, 105, 116, 108, 101, 32, 40, 41, 10, 47, 67, 114, 101, 97, 116, 111, 114, 32, 40, 254, 255, 0, 119, ...>> [2026-09-02 10:25:34.594] [INFO ] [AzureCommunicationServices] Direct binary size: 48298 bytes [2026-09-02 10:25:34.599] [INFO ] [AzureCommunicationServices] Base64 encoded size: 64400 chars [2026-09-02 10:25:34.602] [INFO ] [AzureCommunicationServices] Attachment struct created: %{"contentInBase64" => "JVBERi0xLjQKJcOiw6MKMSAwIG9iago8PAovVGl0bGUgKCkKL0NyZWF0b3IgKP7/AHcAawBoAHQAbQBsAHQAbwBwAGQAZgAgADAALgAxADIALgA2KQovUHJvZHVjZXIgKP7/AFEAdAAgADUALgAxADUALgAxADMpCi9DcmVhdGlvbkRhdGUgKEQ6MjAyNjA5MDIxMDI1MzRaKQo+PgplbmRvYmoKMiAwIG9iago8PAovVHlwZSAvQ2F0YWxvZwovUGFnZXMgMyAwIFIKPj4KZW5kb2JqCjQgMCBvYmoKPDwKL1R5cGUgL0V4dEdTdGF0ZQovU0EgdHJ1ZQovU00gMC4wMgovY2EgMS4wCi9DQSAxLjAKL0FJUyBmYWxzZQovU01hc2sgL05vbmU+PgplbmRvYmoKNSAwIG9iagpbL1BhdHRlcm4gL0RldmljZVJHQl0KZW5kb2JqCjcgMCBvYmoKPDwKL1R5cGUgL1hPYmplY3QKL1N1YnR5cGUgL0ltYWdlCi9XaWR0aCA1MDkKL0hlaWdodCAxNTUKL0JpdHNQZXJDb21wb25lbnQgOAovQ29sb3JTcGFjZSAvRGV2aWNlR3JheQovTGVuZ3RoIDggMCBSCi9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp4nO1du7HzuhFWCSqBJagEFOBAoUOUoBJQgkKHLOHEN0IBDhQ6ZOTMY7kC+uhxSGDfoCDx/BK+mTtz/yNgsbsfCSwWD242dviuoHDDWyEMa2vQsBK2/XhcW4eGdbA9jeN+bSUaVsHuPI7j2ko0rAL/Tf0Y19aiYQ30F+7bkP+J2MYr96NfW5GGl2M33Lgf3dqaNLwa/nznvsV7H4fwQ/14XluVhtdi+zVx/xPsh92qGjW8CrvTiMj3Z7emSg0vgjsn3I/97Y/bFvZ/Ag5jhnD/82l6DhreFdt+pMk/fv//abumag1PxvY0MuTvL/8YWtj3vtidIfcT+d1t4udX1K7hmfCI+pn8zf25aKn+98SR4H4m/57qH7/awP9++FnI4cifIsFTG/jfDdNCDkd+kvFte3veC3sc6rHkj+NhRU0/Gu4ZQqlQD5Dv0r/2beBfAz48QyjLPUN+y/esgd051BcqcM+RP55b2Pdq+ISNmkJ5TMO7g7/46oo0SOjHJ5Avcj/v4kLkt4WeV+KWeA+Vpe5E7iXyx9gG/lfhPhMPdaVuuTneHRO/BPltoedV+NlSGeqKpfN6E+YtfBT5baHnNZgS76Gq2EBRmiBOJUnynxF/NgAkifdQU64y4KeLeAz5Ld/zbKRbKkNNwWjvBoSfinLkt3zPc5HtsQgVBWud/jh2U1mW/Mb+M5Hvrwn1BHdKpP8dzida8KUa+89DHpBXXFGDmzUx+qS0UOyF7G/DHQf3sjYxDj9auCdb3uWOds8STCFduZfKxWpKaUhGn2cscxiRmH58Kv35RvqKZ+f0Fz9rjNntcUNfTy0ZbpVWIVIlntrt5VFZvV7f8OL3aXk5HeSr6SUjjzvX2k6aKRGf2FBGfl9Prv7i53cxkfs7JzywxLs7HOM054wxiBf/gUmHVPSJENxUFyn5vp7Yrc79kFU4yIVPy7TwX8SUY+gdVwGQv9KGslyJr+c1lOycdBXFKlxeELIK/ESfKm1C17OTzeFAD6VAiyf6XUKuRHxeQxP5p66mWDW5N56B+7XypR1/Jw88Z/KtBuTHZcY/ipeTXzeJbgj3AqiiLACW+uCgppioEwKfSX7l0U3v9eGLr1cpCXzS2z94eFTvE8mvflBC7/UDrKIuAQ725vFxYBo9rPiB5Fc/IqXH+ujFV9I8F3hz80buMfufR379w5F71eseV5Jn+mPBq2/mHnVAH0d+qC9U5TESlfQg0Tg4qa2ncFnVDyP/8IwEkha5n7sltYxu0DIGOYatUNfWYHX8CiUWQ/M4PbeQt/hf0FkaV5+hHCGt28h/GFoHziXO1JDPstJCvfgxHNw+HMlYIAs9G/kPQ+l4By7AVPd9DYbG8Qw/dD+/dYFI/QRe87jYBQ/hVyixFHK+hl+h0454WHK8aJaZN0fcEDIkPzfyH4b8BgsRpjrqB7VtKAI9ajjln5QQyO/2oY8X9PKqcAU8jfzt1YZFIf5lZTzG4fu/r7DvhILiXMtLTWijflSVhG0HVAKN/En4yZHv+lwzflV4TlTGIOZPpuHp/OXBT6rNxLg6b4tKNMjWLreHE3TJ1EVjHTLs4fro6dDh5k7Hyx+leFtsRJ+mibU3RNuYANTGF/tbvP3VU8/kQFuSShCPm6WKgr1apBIJqH3Rc1OpBvNxx+Ty0zAVTbtodlV3G8hXsu9ogwXyJXdcoC3IOKX+BvgFew6/+sP8E0X+nuuOTpQyuQShh82clLOvmEBlrwOjwc+oly5yzmWz8ZmJwz0biN16ttxgL5DveWfcDVNivqAJMJRH8SjjuKvfxfVBYuqZSyCWMH4QeUlIiRzERoWe1eBaOzdi9klghfygk3rxa78CDf4nU9iyeKh0/OreGlA+UGVgXMC2HjedvE6A7xAAEjyrKPBqKggqkYOIijOvAA12qKuYfQIic/yksteozebBnW//pUvaztvLmXnoCQRQPmjlc0DyieuCc6Cd1eaNYIB8x9oATCaWvnMlgAYBDROzTwD56N3Uc65H5DKafOtNG3J6VqsNihfuwgOWDPr6IGzAnCkAZqYZb0kEMS6CwRqRD40IU9HA/XCDZYXsaCK/t7lfW43XaoPiwqBLoWxR6IogSohsU5EXI4nAzoGZDEg+onBuSiZff+8vADERSb43Of8Ksa91SmVYt+zgxQLyly4KLyOfeBnhYAp7L1RhbkokX9+UQYEgv+zQhcS+U+qiQcOXtLyE/JMkIVoVDclPvAjiZUT2qTbMTUnk64esSWDyS7eFC+w7pSp+NYJSI8US8nP3P5V8wi94dbwS+YUr45O2kPzybeE8+39XahKdVezM7S4ifxAkRLapBeRvcRfeL7Bhbkog3zbgY0Dyl2wL5+5oV4WRWaLeOuowjjvdT8q7A/k+7HkJkW1qAfm4cWoyU4V84jm74HQ8OOcO9M6Im7YZ+Qu3hXMxv/okEfmvMVuJkEA6LrqkREdk/L54CZFtqpx8PKKR57erkE8tzJ6vCzd3N1A7I67apuT/Z/G2cJpFlfyOszka+KccB1skkt28hMg2VUw+HtDobLxI/mVNen4befIJasHgvaWzAPmbv/x2AXJPiD6GCKmJk/bRXsJxHhXCAcmelRDZpkrJx60yUyiG/C/vUFGWfDziEyuUjnr5wZi//BZVSrpOvpwkGo6SOthxVHvINYGVENmmCsnHVnHTZ4r8M723gCXf1hgVlsOAb/ktqsSyiiF61GaoAv/IcZEsBsf9yEqg619QSD4ONbzVBj6zzpGPh05H1ifYx/P8xfeb4AVVy9RBXY4ZT950Pp8zGjrnzEqIrJJl5OMAzHOCMfnsAgdHPhpwAyMAxyFEhm/5iTBotWneqLOfha4zoOO4C0HgM8lKiKyOReRjJ/esYEQ+u1uaJR+ax9+Lgl5OKre//CwoCK5tSQPmM345iGvOoOO41uCov+MkRFbFEvLxQNbztiPy+bk2Rz6U4FgJaIAgF3aWnwLf/TuVY80Y6ZczfL8SyCjoOO6RhTY7TkJkFSwgHwd70hQK2jDwRRny4ZYB6UIkOCFn1vOX3v+w/98iKVsuDZHCg0rQcax0INtxEiIroYB8lPEQp8/QhsAXZciHg4wXWoNlGfIX3vwCFCx4hLbkrlugU14FOI5/5AF1jpMQrRJC8hNQAoVf8hopJN/xRRnyYZzVSc3BHbP/gtr+mFHO/hY+9WX9x46/kOuOfCKylDr3sISQ/KSorKyPm3svlnzgc6nXRyFfZKOt4rsU8US/ePBABw4AfFrYTB1II7pyCcvJ94xEWgOJOoZ8oJq8FQ7I4MkvvefRtH6twx2F/j97IM3UAZNduYTF5HvNWqsGVvKDIAEN+hL5RTe8UmvKC8PG7sDuv49JsT+A/F4z9cXkw+bESbb9c3nkst7SOcP1LlZaI8dbwgpbjfxetRNoEISiNvJ9SXMy+dY9Xcz6zHLyLzIP" <> ..., "contentType" => "application/pdf", "name" => "Settlement_Advice_E2E_M3_TEST001_2026-09-01.pdf"} [2026-09-02 10:25:34.603] [INFO ] [AzureCommunicationServices] Final JSON body size: 69815 bytes [2026-09-02 10:25:34.603] [INFO ] [AzureCommunicationServices] JSON first 500 chars: {"attachments":[{"contentInBase64":"JVBERi0xLjQKJcOiw6MKMSAwIG9iago8PAovVGl0bGUgKCkKL0NyZWF0b3IgKP7/AHcAawBoAHQAbQBsAHQAbwBwAGQAZgAgADAALgAxADIALgA2KQovUHJvZHVjZXIgKP7/AFEAdAAgADUALgAxADUALgAxADMpCi9DcmVhdGlvbkRhdGUgKEQ6MjAyNjA5MDIxMDI1MzRaKQo+PgplbmRvYmoKMiAwIG9iago8PAovVHlwZSAvQ2F0YWxvZwovUGFnZXMgMyAwIFIKPj4KZW5kb2JqCjQgMCBvYmoKPDwKL1R5cGUgL0V4dEdTdGF0ZQovU0EgdHJ1ZQovU00gMC4wMgovY2EgMS4wCi9DQSAxLjAKL0FJUyBmYWxzZQovU01hc2sgL05vbmU+PgplbmRvYmoKNSAwIG9iagpbL1BhdHRlcm4gL0RldmljZVJHQl0KZW5kb2JqCjcg [2026-09-02 10:25:34.604] [INFO ] [AzureCommunicationServices] ✅ First attachment contentInBase64 present: 64400 chars (non-empty: true) [2026-09-02 10:25:34.606] [INFO ] [AzureCommunicationServices] Content SHA256: oSJZ+0MO7MSOxTkQqsGI... [2026-09-02 10:25:34.607] [INFO ] [AzureCommunicationServices] Signature (first 20 chars): JDP/LBnDjHsE5t8Z5vKU... [2026-09-02 10:25:34.607] [INFO ] [AzureCommunicationServices] Auth: HMAC-SHA256 signature authentication [2026-09-02 10:25:34.607] [INFO ] [AzureCommunicationServices] Headers: Authorization, x-ms-date, host, x-ms-content-sha256 [2026-09-02 10:25:34.610] [DEBUG] [AzureCommunicationServices] Request body prepared [2026-09-02 10:25:34.610] [INFO ] [AzureCommunicationServices] Sending HTTP request to Azure... [2026-09-02 10:25:34.610] [DEBUG] [AzureCommunicationServices] Building HTTP request... [2026-09-02 10:25:34.610] [DEBUG] [AzureCommunicationServices] Executing HTTP request via Finch... [2026-09-02 10:25:34.707] [INFO ] [EmailPdfGenerator] ✓ PDF rendered successfully, size: 34632 bytes [2026-09-02 10:25:34.710] [INFO ] [SettlementNotifier] ===== CALLING MAILER.DELIVER ===== [2026-09-02 10:25:34.710] [INFO ] [SettlementNotifier] Email TO: [{"", "sunny@dataaegis.com"}] [2026-09-02 10:25:34.710] [INFO ] [SettlementNotifier] Email FROM: {"", "donotreply@shukria.ae"} [2026-09-02 10:25:34.710] [INFO ] [SettlementNotifier] Email SUBJECT: VAT Invoice INV-2026-00039 — E2E Test Merchant Three — 2026-09-01 [2026-09-02 10:25:34.713] [INFO ] [AzureCommunicationServices] ===== STARTING EMAIL DELIVERY ===== [2026-09-02 10:25:34.713] [INFO ] [AzureCommunicationServices] Email recipients: [{"", "sunny@dataaegis.com"}] [2026-09-02 10:25:34.713] [INFO ] [AzureCommunicationServices] Email subject: VAT Invoice INV-2026-00039 — E2E Test Merchant Three — 2026-09-01 [2026-09-02 10:25:34.714] [INFO ] [AzureCommunicationServices] Config values: [2026-09-02 10:25:34.714] [INFO ] - sender: donotreply@shukria.ae [2026-09-02 10:25:34.715] [INFO ] - endpoint: https://shukria-commserv-merchants.uae.communication.azure.com [2026-09-02 10:25:34.715] [INFO ] - api_version: 2025-09-01 [2026-09-02 10:25:34.715] [INFO ] [AzureCommunicationServices] Request URL: https://shukria-commserv-merchants.uae.communication.azure.com/emails:send?api-version=2025-09-01 [2026-09-02 10:25:34.715] [INFO ] [AzureCommunicationServices] Host extracted: shukria-commserv-merchants.uae.communication.azure.com [2026-09-02 10:25:34.715] [INFO ] [AzureCommunicationServices] Path and query: /emails:send?api-version=2025-09-01 [2026-09-02 10:25:34.715] [INFO ] [AzureCommunicationServices] ===== PREPARE_BODY STARTING ===== [2026-09-02 10:25:34.717] [INFO ] [AzureCommunicationServices] email.attachments count: 1 [2026-09-02 10:25:34.717] [INFO ] [AzureCommunicationServices] First attachment is %Swoosh.Attachment{}: true [2026-09-02 10:25:34.718] [INFO ] [AzureCommunicationServices] First attachment data type: <<37, 80, 68, 70, 45, 49, 46, 52, 10, 37, 195, 162, 195, 163, 10, 49, 32, 48, 32, 111, 98, 106, 10, 60, 60, 10, 47, 84, 105, 116, 108, 101, 32, 40, 41, 10, 47, 67, 114, 101, 97, 116, 111, 114, 32, 40, 254, 255, 0, 119, ...>> [2026-09-02 10:25:34.718] [INFO ] [AzureCommunicationServices] First attachment filename: VAT_Invoice_INV-2026-00039.pdf [2026-09-02 10:25:34.718] [INFO ] [AzureCommunicationServices] Processing attachment: VAT_Invoice_INV-2026-00039.pdf [2026-09-02 10:25:34.718] [INFO ] [AzureCommunicationServices] Attachment data type: <<37, 80, 68, 70, 45, 49, 46, 52, 10, 37, 195, 162, 195, 163, 10, 49, 32, 48, 32, 111, 98, 106, 10, 60, 60, 10, 47, 84, 105, 116, 108, 101, 32, 40, 41, 10, 47, 67, 114, 101, 97, 116, 111, 114, 32, 40, 254, 255, 0, 119, ...>> [2026-09-02 10:25:34.718] [INFO ] [AzureCommunicationServices] Direct binary size: 34632 bytes [2026-09-02 10:25:34.723] [INFO ] [AzureCommunicationServices] Base64 encoded size: 46176 chars [2026-09-02 10:25:34.727] [INFO ] [AzureCommunicationServices] Attachment struct created: %{"contentInBase64" => "JVBERi0xLjQKJcOiw6MKMSAwIG9iago8PAovVGl0bGUgKCkKL0NyZWF0b3IgKP7/AHcAawBoAHQAbQBsAHQAbwBwAGQAZgAgADAALgAxADIALgA2KQovUHJvZHVjZXIgKP7/AFEAdAAgADUALgAxADUALgAxADMpCi9DcmVhdGlvbkRhdGUgKEQ6MjAyNjA5MDIxMDI1MzRaKQo+PgplbmRvYmoKMiAwIG9iago8PAovVHlwZSAvQ2F0YWxvZwovUGFnZXMgMyAwIFIKPj4KZW5kb2JqCjQgMCBvYmoKPDwKL1R5cGUgL0V4dEdTdGF0ZQovU0EgdHJ1ZQovU00gMC4wMgovY2EgMS4wCi9DQSAxLjAKL0FJUyBmYWxzZQovU01hc2sgL05vbmU+PgplbmRvYmoKNSAwIG9iagpbL1BhdHRlcm4gL0RldmljZVJHQl0KZW5kb2JqCjggMCBvYmoKPDwKL1R5cGUgL1hPYmplY3QKL1N1YnR5cGUgL0ltYWdlCi9XaWR0aCA0NjkKL0hlaWdodCA4OAovQml0c1BlckNvbXBvbmVudCA4Ci9Db2xvclNwYWNlIC9EZXZpY2VHcmF5Ci9MZW5ndGggOSAwIFIKL0ZpbHRlciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCnic7V15nBXF8Z+3CwsrC5JdlUMIrBxyiKLECGoE8YiIKIkheCUeKKhINIoXcuOxkogghwEDKuABGE2IKEYU5BINGMEDXeUOl7gLC+wuyx7ze6+rZ6a7urreTIK/z+/3dr//7L6e7/TMdM30VFVX1TgOi7RLxq/eWVnw2cwbf8QTBRr2G79w1dqVi8ZcUjs5uUG/p99dt+mbdyf+qm6IrmtwrJB5/xbXQ+mrHZKwu7x+xGfvHH48T+40p8wn75+Uc8xOuQZJ0CcQaQIVU7hHKuv5Ko2943KGXHd8hUYuuPVYn3sNSKQ9rkspjnUnW9nNv8Jkd5iVnP2BQZ4RYsKuwX+L2J+NgXfd/JMs7MbfEOxHLeTj/kmQ56X9UFdSAx+PEAPvuu/FSHLaP0j2dXTXc0jy4z/gxdRAoE0ZOfLuEJJ9B00uak6Re9Nk95If9IJq4DjzLSNfUJ8gZ/7bwp5BkNO+sJDza0ybHxYnl1tG3n2QYP/ORi4/xST/wkZ2B0c/T/ptgHFc9I5TEaOtI/8twbY9e677iEl+10rODyciFRNCqVfPRe43FVHLNp/GcabB7mknf2qQW1Ta2T2inmftkp+HYLWtaBC141TEr+wD7z5ksBfYyVX1MHkU0/Wfo55nF/fFEKwna3SwBJYwI/8SJjc5yrBPR+TYtwy5KKqqdJd7mFLcdNTa5Y6K2G8q4lTDl6TgXcx+iCG72FnITNVx/CLiicYt3gFJSVe77uKI/aYinuQG/q+YvZFj90Rk2vHg4bWIJ/qN665MSlocnwJq3FXpO7mBxy++81kxnaOTjy9m2aUNI51oTmJGaZ+E1DyxdnBapH5TEZezAz8CsWdy5KpsnTyQ7dp1b4t0olckdslLQhoTvd9UBKPNxnGBTs46yJGxVbsmiVBXRTrRsYlddtViOenbE6RZkfpNQWQf4Ya9uI7OvpkVEhrMU5PINPlkqgGWEa5gOZcJzudRuk1F3MWO+quIvZJl99LJ45MK9ckIJxrbL3b5C0t6WXAqq7v7YR076lfqZNb6cQszNHLcYkyGPREWyzvCLmUnMpwGUjPDWng1w5nsoH+ni4m3ftzJOtm26KYC3TQcBshdfs9wbpUc0w9WrTCFHfOndHKSZw/5if8SQqh/C3+mM+QunzGc5ZLzRvhuUxB1C9kx76izr2LJ63RyDquBSZQ3DX2qG7x9fmKltPTeDruijEHK4QZ2yD9E7L+xbLRAencImXLxagj1/YjEqVbOKL/bZlEGIdWwlB1xFMrZiPPlu6UoAPxfoYS6OaxLL3AjH8i0UJTlg6ujDkQK4RRWm8VrIg+z4kHrObwGFuCikKc6LNjlWgtFcWFGsZVSDY+z4z1TJ8eowNAAyIx4JqRQXwl5qsrU/w8LZUZAWRp1JFIHtVhfvnuuzr6EJaN5NGNfSKGydqeCPcEulS1IRt39AeUw701MZfRhh/srFETEO4mH62QumkIHZ3cGyFV3GUlS+ottUp/q9J+MR0rgr+xoD9XJvJpU+WOdvSi0UDeGCkC7RnA/nyb+0NoVxLhNKRV/kq+mpyh4MZU31tlsyIP7lk5ubA06NYFmeRoTBXWiDGSj3IC5sKk9+P2n/4dj8v8eD7JjjTznsXyWjWyIB8LL1H0+zLnCKt618nGcQzAeFVtWyUObgY0+2tw+Z/XOwsLNK2YN6pwe4tBdH5o1e/I91HzeuNd9T82eP/0PA7uG6Sc86vTJmzN/xoAk+aE02MgUHG90MUv+Xl+ii5lZcXYcDrGmUgfcU63li7PEvF4Z53qLtKXKjcBGQO1bP1KPvWfS2SRteWEcWxPaVtdPgFmJg2WbjVIs8cK5F1DdzEh0s6cVsWVaYsveJkFDm92JlimJU3xAKpmfOy33JRoL59BvqI/Fxo1a2wXsUP8b3XyvsOwJOvln4cQpMZA8ZQ3dBPH7mKdVDzIYoPQdqu+kHxL//Yzsp/8W4+jvn0PwYLUnx3EG+6+omzVCy7kVqJ+1PcxuYAmMellAeqdyR10qGpY7Ts4Kv8v6zgvwT3/qWjrBttFa44vsSI/Tezi+hGWj2NAXWDLGR9Qp6/i9IC6K/zdJ/LfGYIAdm4jOXyr+G2ow4uP1BnX4qjlm4Kkn1GsD74x6H6UNLSU6mmvMHyDUC4lTsQo1U5lJcpxWcE/9i3pU54pNZZrqw0eFVaE5w5LpJoHGOOsQyzZwBnHKOmCeSAT0ng67oKUGpyloZt3i/+aJ/+abnXSwRSF/jeOVncOiPftcRXa3B1sbLKb72dwZdQNC7UFckFWok5T+4ia8zBsmEvUbQ6bibK2RF9N7qIuPWDaK9EoWcIbxNHHVOrYInois+Fj8+0dEABfmF4l/+4p/txl9dNlPHjyBop8iLtzwZygeD+VJPWG9tR80064Vrd2JC7IJ9TR1Vo8LtQWIDi+tOP7qha4TrGXHGWUQd2DJWNXh7wATSM0y0VjQqkQFkNvF/yhmQvry70383wg6bYL6OMNfZSxfOLBby1NaXfrwYn8EC9FkAU+q5hf1hdpAGbm978ycNmtpsH55RJcqJNFTOpQhVPDXLZ+tHvKEePuf4F9DRagNiqEeCH06O8z7UT4gH26EjJLTWDKFXxOXrQIevnzxv3xtXKURLhJtZVDPYLP40Vfv4qRt8lhHJzbyG5s/5qkKW/X34eHg3HY93Dm71eCtvjoXe93bcmDCmfCuSz/3OW+ePniW2g0IldLZLEJdJS7uy0Fts7uNK0o8qU5z0PsX4Q7ADECm5GR2lFFkSpKQh/N19kSWTOEd4rJVPCFY0jqFm1lPHYB37gL4ARrEExoh5uVUfqpHMLby2vVFpkCob4K06wzxJlEvPbdqmlo6qKXnQvsmS2n9mBoeAUOogclYNR4c1zkThQL3LLSehTqAII+tmo+7bgE7ysgou4Ilf63rZhnfsWwKFhe9j6WCJYsVdBc/NIdXDjwol8GvweLH+1oPt8kjzcMpyelyfnP7qK2+pvc2fjO0kPIu6q23x8bIPZ5VGkGo5xFXxAj1Lp0pH1UU1ylnw3u1xuvYQUaRKc5rLBulm/+aJdPgE9Wk6SkNSrkEqNosEGWxQ5rWZ4lfB1VDu7605+cTrp+nYdN61aHsPak7jMwQWUmhECu6jjMOtlS0DppAuaD8oIZQL/KGwgjsAH93RVutEZYZD+ovjffYMb5T75YP+MZxRu+wXdPYzvrZOgvOEe+hgfXyrxTCp6JlrPxVC+4B1bEn1/dXoOhIoC+Djdcobd6TejEmdwQPczml/DwP+ygh7SDUbgTXKtTdhn9NPqpaVlNDuOue0Yi5TIa365agyBQ+4BtFBDbHrpZQuJS4cB+DBMU3huVqQVd/O8xFgWkNUlKCcdK2ipbDlMMubuOCCNUkECnUtwyufMMNNzbE0RCWp0sCXwZ4rCmXlVWoRB4QPKpH1XWw+0RTpX49" <> ..., "contentType" => "application/pdf", "name" => "VAT_Invoice_INV-2026-00039.pdf"} [2026-09-02 10:25:34.728] [INFO ] [AzureCommunicationServices] Final JSON body size: 51510 bytes [2026-09-02 10:25:34.728] [INFO ] [AzureCommunicationServices] JSON first 500 chars: {"attachments":[{"contentInBase64":"JVBERi0xLjQKJcOiw6MKMSAwIG9iago8PAovVGl0bGUgKCkKL0NyZWF0b3IgKP7/AHcAawBoAHQAbQBsAHQAbwBwAGQAZgAgADAALgAxADIALgA2KQovUHJvZHVjZXIgKP7/AFEAdAAgADUALgAxADUALgAxADMpCi9DcmVhdGlvbkRhdGUgKEQ6MjAyNjA5MDIxMDI1MzRaKQo+PgplbmRvYmoKMiAwIG9iago8PAovVHlwZSAvQ2F0YWxvZwovUGFnZXMgMyAwIFIKPj4KZW5kb2JqCjQgMCBvYmoKPDwKL1R5cGUgL0V4dEdTdGF0ZQovU0EgdHJ1ZQovU00gMC4wMgovY2EgMS4wCi9DQSAxLjAKL0FJUyBmYWxzZQovU01hc2sgL05vbmU+PgplbmRvYmoKNSAwIG9iagpbL1BhdHRlcm4gL0RldmljZVJHQl0KZW5kb2JqCjgg [2026-09-02 10:25:34.732] [INFO ] [AzureCommunicationServices] ✅ First attachment contentInBase64 present: 46176 chars (non-empty: true) [2026-09-02 10:25:34.732] [INFO ] [AzureCommunicationServices] Content SHA256: lHUQfNT+I4zsPj+gm+Y3... [2026-09-02 10:25:34.732] [INFO ] [AzureCommunicationServices] Signature (first 20 chars): gRCLCL8Gfy/B3YE9SVTP... [2026-09-02 10:25:34.732] [INFO ] [AzureCommunicationServices] Auth: HMAC-SHA256 signature authentication [2026-09-02 10:25:34.733] [INFO ] [AzureCommunicationServices] Headers: Authorization, x-ms-date, host, x-ms-content-sha256 [2026-09-02 10:25:34.733] [DEBUG] [AzureCommunicationServices] Request body prepared [2026-09-02 10:25:34.733] [INFO ] [AzureCommunicationServices] Sending HTTP request to Azure... [2026-09-02 10:25:34.733] [DEBUG] [AzureCommunicationServices] Building HTTP request... [2026-09-02 10:25:34.733] [DEBUG] [AzureCommunicationServices] Executing HTTP request via Finch... [2026-09-02 10:25:34.833] [INFO ] [AzureCommunicationServices] HTTP Response: 202 (Success) [2026-09-02 10:25:34.833] [INFO ] [AzureCommunicationServices] Response body: {"id":"cf922fee-df41-4d61-ad8f-3961c237db02","status":"Running","error":null} [2026-09-02 10:25:34.833] [INFO ] [AzureCommunicationServices] Parsed response: %{"error" => nil, "id" => "cf922fee-df41-4d61-ad8f-3961c237db02", "status" => "Running"} [2026-09-02 10:25:34.834] [INFO ] [AzureCommunicationServices] ✅ Email sent successfully to [{"", "sunny@dataaegis.com"}] [2026-09-02 10:25:34.834] [INFO ] [SettlementNotifier] ===== MAILER.DELIVER RESULT ===== [2026-09-02 10:25:34.834] [INFO ] [SettlementNotifier] Result: {:ok, %{id: "cf922fee-df41-4d61-ad8f-3961c237db02", status: 202}} [2026-09-02 10:25:34.834] [INFO ] [SettlementNotifier] ✅ Email delivery SUCCESS [2026-09-02 10:25:34.834] [INFO ] Merchant VAT MIS sent to sunny@dataaegis.com for MID=419926360000000 [2026-09-02 10:25:35.465] [INFO ] [AzureCommunicationServices] HTTP Response: 202 (Success) [2026-09-02 10:25:35.465] [INFO ] [AzureCommunicationServices] Response body: {"id":"ef5bbbf3-6fe3-4fe3-82fa-4a792ebbf7dc","status":"Running","error":null} [2026-09-02 10:25:35.465] [INFO ] [AzureCommunicationServices] Parsed response: %{"error" => nil, "id" => "ef5bbbf3-6fe3-4fe3-82fa-4a792ebbf7dc", "status" => "Running"} [2026-09-02 10:25:35.465] [INFO ] [AzureCommunicationServices] ✅ Email sent successfully to [{"", "sunny@dataaegis.com"}] [2026-09-02 10:25:35.465] [INFO ] [SettlementNotifier] ===== MAILER.DELIVER RESULT ===== [2026-09-02 10:25:35.465] [INFO ] [SettlementNotifier] Result: {:ok, %{id: "ef5bbbf3-6fe3-4fe3-82fa-4a792ebbf7dc", status: 202}} [2026-09-02 10:25:35.465] [INFO ] [SettlementNotifier] ✅ Email delivery SUCCESS [2026-09-02 10:25:35.490] [DEBUG] QUERY OK source="vat_invoices" db=23.4ms queue=0.8ms idle=547.2ms UPDATE `vat_invoices` SET `sent_at` = ?, `sent_to_email` = ?, `updated_at` = ? WHERE `id` = ? [~N[2026-09-02 10:25:35], "sunny@dataaegis.com", ~N[2026-09-02 10:25:35], 41] ↳ SettlementCore.Workers.VatInvoiceWorker.send_email/4, at: lib/settlement_core/workers/vat_invoice_worker.ex:156 [2026-09-02 10:25:35.490] [INFO ] [VatInvoiceWorker] VAT Invoice INV-2026-00037 sent to sunny@dataaegis.com [2026-09-02 10:25:35.590] [INFO ] [AzureCommunicationServices] HTTP Response: 202 (Success) [2026-09-02 10:25:35.590] [INFO ] [AzureCommunicationServices] Response body: {"id":"52e6f28f-d404-4405-bf1f-a6fb731a09a5","status":"Running","error":null} [2026-09-02 10:25:35.591] [INFO ] [AzureCommunicationServices] Parsed response: %{"error" => nil, "id" => "52e6f28f-d404-4405-bf1f-a6fb731a09a5", "status" => "Running"} [2026-09-02 10:25:35.598] [INFO ] [AzureCommunicationServices] ✅ Email sent successfully to [{"", "sunny@dataaegis.com"}] [2026-09-02 10:25:35.598] [INFO ] [SettlementNotifier] ===== MAILER.DELIVER RESULT ===== [2026-09-02 10:25:35.598] [INFO ] [SettlementNotifier] Result: {:ok, %{id: "52e6f28f-d404-4405-bf1f-a6fb731a09a5", status: 202}} [2026-09-02 10:25:35.598] [INFO ] [SettlementNotifier] ✅ Email delivery SUCCESS [2026-09-02 10:25:35.599] [INFO ] Merchant VAT MIS sent to sunny@dataaegis.com for MID=E2E_M3_TEST001 [2026-09-02 10:25:35.614] [INFO ] [AzureCommunicationServices] HTTP Response: 202 (Success) [2026-09-02 10:25:35.614] [INFO ] [AzureCommunicationServices] Response body: {"id":"124d04ba-f126-4105-80d9-0469a12997ee","status":"Running","error":null} [2026-09-02 10:25:35.614] [INFO ] [AzureCommunicationServices] Parsed response: %{"error" => nil, "id" => "124d04ba-f126-4105-80d9-0469a12997ee", "status" => "Running"} [2026-09-02 10:25:35.614] [INFO ] [AzureCommunicationServices] ✅ Email sent successfully to [{"", "sunny@dataaegis.com"}] [2026-09-02 10:25:35.614] [INFO ] [SettlementNotifier] ===== MAILER.DELIVER RESULT ===== [2026-09-02 10:25:35.615] [INFO ] [SettlementNotifier] Result: {:ok, %{id: "124d04ba-f126-4105-80d9-0469a12997ee", status: 202}} [2026-09-02 10:25:35.615] [INFO ] [SettlementNotifier] ✅ Email delivery SUCCESS [2026-09-02 10:25:35.695] [DEBUG] QUERY OK source="vat_invoices" db=80.4ms idle=28.4ms UPDATE `vat_invoices` SET `sent_at` = ?, `sent_to_email` = ?, `updated_at` = ? WHERE `id` = ? [~N[2026-09-02 10:25:35], "sunny@dataaegis.com", ~N[2026-09-02 10:25:35], 42] ↳ SettlementCore.Workers.VatInvoiceWorker.send_email/4, at: lib/settlement_core/workers/vat_invoice_worker.ex:156 [2026-09-02 10:25:35.695] [INFO ] [VatInvoiceWorker] VAT Invoice INV-2026-00038 sent to sunny@dataaegis.com [2026-09-02 10:25:35.760] [INFO ] [AzureCommunicationServices] HTTP Response: 202 (Success) [2026-09-02 10:25:35.760] [INFO ] [AzureCommunicationServices] Response body: {"id":"9e96a4c7-a99f-4508-9e28-4415c9a2c3ff","status":"Running","error":null} [2026-09-02 10:25:35.760] [INFO ] [AzureCommunicationServices] Parsed response: %{"error" => nil, "id" => "9e96a4c7-a99f-4508-9e28-4415c9a2c3ff", "status" => "Running"} [2026-09-02 10:25:35.760] [INFO ] [AzureCommunicationServices] ✅ Email sent successfully to [{"", "sunny@dataaegis.com"}] [2026-09-02 10:25:35.760] [INFO ] [SettlementNotifier] ===== MAILER.DELIVER RESULT ===== [2026-09-02 10:25:35.760] [INFO ] [SettlementNotifier] Result: {:ok, %{id: "9e96a4c7-a99f-4508-9e28-4415c9a2c3ff", status: 202}} [2026-09-02 10:25:35.760] [INFO ] [SettlementNotifier] ✅ Email delivery SUCCESS [2026-09-02 10:25:35.760] [INFO ] [SettlementAdviceWorker] ✅ Advice sent to sunny@dataaegis.com for MID=419926360000000 [2026-09-02 10:25:35.793] [INFO ] [AzureCommunicationServices] HTTP Response: 202 (Success) [2026-09-02 10:25:35.793] [INFO ] [AzureCommunicationServices] Response body: {"id":"26993706-ce9d-4a75-8b5c-19971d54fd49","status":"Running","error":null} [2026-09-02 10:25:35.795] [INFO ] [AzureCommunicationServices] Parsed response: %{"error" => nil, "id" => "26993706-ce9d-4a75-8b5c-19971d54fd49", "status" => "Running"} [2026-09-02 10:25:35.795] [INFO ] [AzureCommunicationServices] ✅ Email sent successfully to [{"", "sunny@dataaegis.com"}] [2026-09-02 10:25:35.795] [INFO ] [SettlementNotifier] ===== MAILER.DELIVER RESULT ===== [2026-09-02 10:25:35.795] [INFO ] [SettlementNotifier] Result: {:ok, %{id: "26993706-ce9d-4a75-8b5c-19971d54fd49", status: 202}} [2026-09-02 10:25:35.804] [INFO ] [SettlementNotifier] ✅ Email delivery SUCCESS [2026-09-02 10:25:35.846] [DEBUG] QUERY OK source="vat_invoices" db=28.8ms queue=10.1ms idle=24.1ms UPDATE `vat_invoices` SET `sent_at` = ?, `sent_to_email` = ?, `updated_at` = ? WHERE `id` = ? [~N[2026-09-02 10:25:35], "sunny@dataaegis.com", ~N[2026-09-02 10:25:35], 43] ↳ SettlementCore.Workers.VatInvoiceWorker.send_email/4, at: lib/settlement_core/workers/vat_invoice_worker.ex:156 [2026-09-02 10:25:35.847] [INFO ] [VatInvoiceWorker] VAT Invoice INV-2026-00039 sent to sunny@dataaegis.com [2026-09-02 10:25:35.994] [INFO ] [AzureCommunicationServices] HTTP Response: 202 (Success) [2026-09-02 10:25:35.994] [INFO ] [AzureCommunicationServices] Response body: {"id":"f149f2ca-5965-4a72-bce2-9e6921373ea3","status":"Running","error":null} [2026-09-02 10:25:35.995] [INFO ] [AzureCommunicationServices] Parsed response: %{"error" => nil, "id" => "f149f2ca-5965-4a72-bce2-9e6921373ea3", "status" => "Running"} [2026-09-02 10:25:35.995] [INFO ] [AzureCommunicationServices] ✅ Email sent successfully to [{"", "sunny@dataaegis.com"}] [2026-09-02 10:25:35.995] [INFO ] [SettlementNotifier] ===== MAILER.DELIVER RESULT ===== [2026-09-02 10:25:35.995] [INFO ] [SettlementNotifier] Result: {:ok, %{id: "f149f2ca-5965-4a72-bce2-9e6921373ea3", status: 202}} [2026-09-02 10:25:35.995] [INFO ] [SettlementNotifier] ✅ Email delivery SUCCESS [2026-09-02 10:25:35.995] [INFO ] [SettlementAdviceWorker] ✅ Advice sent to sunny@dataaegis.com for MID=425590250000000 [2026-09-02 10:25:36.231] [INFO ] [AzureCommunicationServices] HTTP Response: 202 (Success) [2026-09-02 10:25:36.232] [INFO ] [AzureCommunicationServices] Response body: {"id":"fe622ed2-41ed-4470-ba29-0c5a81de9e43","status":"Running","error":null} [2026-09-02 10:25:36.232] [INFO ] [AzureCommunicationServices] Parsed response: %{"error" => nil, "id" => "fe622ed2-41ed-4470-ba29-0c5a81de9e43", "status" => "Running"} [2026-09-02 10:25:36.232] [INFO ] [AzureCommunicationServices] ✅ Email sent successfully to [{"", "sunny@dataaegis.com"}] [2026-09-02 10:25:36.232] [INFO ] [SettlementNotifier] ===== MAILER.DELIVER RESULT ===== [2026-09-02 10:25:36.232] [INFO ] [SettlementNotifier] Result: {:ok, %{id: "fe622ed2-41ed-4470-ba29-0c5a81de9e43", status: 202}} [2026-09-02 10:25:36.232] [INFO ] [SettlementNotifier] ✅ Email delivery SUCCESS [2026-09-02 10:25:36.232] [INFO ] [SettlementAdviceWorker] ✅ Advice sent to sunny@dataaegis.com for MID=E2E_M3_TEST001 [2026-09-02 10:26:18.019] [INFO ] Received status update for terminal 98251226730001 [2026-09-02 10:26:18.020] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-09-02T10:26:17Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-09-02T10:26:17Z","value":"34"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-09-02T10:26:17Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-09-02T10:26:17Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-09-02T10:26:17Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-09-02T10:26:17Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-09-02T10:26:17Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-09-02T10:26:17Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-09-02T10:26:17Z","vendor":"MoreFun"} [2026-09-02 10:26:18.020] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-09-02T10:26:17Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-09-02T10:26:17Z", "value" => "34"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-09-02T10:26:17Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-09-02T10:26:17Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-09-02T10:26:17Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-09-02T10:26:17Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-09-02T10:26:17Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-09-02T10:26:17Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-09-02T10:26:17Z", "vendor" => "MoreFun"} [2026-09-02 10:26:18.020] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-09-02 10:26:18.020] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-09-02 10:26:18.020] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-09-02 10:26:18.021] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=649.0ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-09-02 10:26:18.024] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.2ms idle=218.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-09-02 10:26:18.026] [DEBUG] QUERY OK source="parameter_template_values" db=1.7ms idle=2.7ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-09-02 10:26:18.029] [DEBUG] QUERY OK source="parameter_definitions" db=0.9ms queue=2.0ms idle=2.4ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-09-02 10:26:18.030] [DEBUG] QUERY OK source="pos_terminal" db=0.5ms idle=3.8ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-09-02 10:26:18.070] [DEBUG] QUERY OK source="pos_merchant" db=39.7ms queue=0.2ms idle=1.4ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [350] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-09-02 10:26:18.075] [DEBUG] QUERY OK db=1.4ms queue=0.8ms idle=317.5ms SELECT COALESCE(JSON_UNQUOTE(JSON_EXTRACT(mc.settings, '$.BASE_MERCHANT_NAME')), '') as base_merchant_name, COALESCE(u.name, '') as user_name, COALESCE(um.softpos_uuid, '') as softpos_uuid, COALESCE(mc.settings, '{}') as settings FROM user_metadata um LEFT JOIN merchant_configuration mc ON mc.user_id = um.user_id LEFT JOIN users u ON u.id = um.user_id WHERE um.merchant_refrence_number = ? LIMIT 1 ["667267350000000"] [2026-09-02 10:26:18.075] [INFO ] ParamsZipBuilder: Merchant info for merchantid=667267350000000 - business_name=Shubham003, QR_USE_SSL=, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-09-02 10:26:18.080] [DEBUG] QUERY OK source="pos_terminal_data" db=3.9ms idle=45.4ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["26735914"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-09-02 10:26:18.082] [DEBUG] QUERY OK source="address" db=1.5ms decode=0.6ms idle=9.4ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [639] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-09-02 10:26:18.082] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="667267350000000" [2026-09-02 10:26:18.086] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-09-02 10:26:18.173] [DEBUG] QUERY OK db=82.2ms idle=9.9ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "ef060538138e9a0d9b81c43aa1cb94d43a547219ca8340e6b141e91e612e62ba", 9218, 912, ~U[2026-09-02 10:26:18Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-09-02 10:26:18], ~N[2026-09-02 10:26:18]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-09-02 10:26:18.173] [INFO ] AutoPushService: Created push log 60534 for MF919 params.zip [2026-09-02 10:26:18.174] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4017/ota/98251226730001/params.zip", "requestId" => 9218, "type" => "tms_command", "version" => "1.0.0"} [2026-09-02 10:26:18.174] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-09-02 10:26:18.174] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-09-02 10:26:18.175] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms idle=92.5ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-09-02 10:26:18.181] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730001 at priv/ota/98251226730001/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-09-02 10:26:18.280] [DEBUG] QUERY OK db=97.0ms idle=10.8ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "cf9447bdba1fe369a8efdb6e61010443bd9c167aba30383c574024ea1aa5040b", 4707, 17947, ~U[2026-09-02 10:26:18Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-09-02 10:26:18], ~N[2026-09-02 10:26:18]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-09-02 10:26:18.280] [INFO ] AutoPushService: Created push log 60536 for MF919 l3config.zip (version: 1.0.1) [2026-09-02 10:26:18.280] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4017/ota/98251226730001/l3config.zip", "requestId" => 4707, "type" => "tms_command", "version" => "1.0.1"} [2026-09-02 10:26:18.280] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-09-02 10:26:18.281] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-09-02 10:26:18.282] [DEBUG] QUERY OK source="config_file_versions" db=1.4ms idle=106.0ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-09-02 10:26:18.282] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-09-02 10:26:18.283] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=2.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-09-02 10:26:18.284] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730001 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-09-02 10:26:18.285] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-09-02 10:26:18.285] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 10:26:18.285] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 10:26:18.287] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms idle=3.3ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-09-02 10:26:18.288] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-09-02 10:26:18.288] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-09-02 10:26:18.290] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=4.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:140 [2026-09-02 10:26:18.290] [INFO ] Terminal updated: 98251226730001 [2026-09-02 10:26:18.291] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=3.8ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) ORDER BY p0.`updated_at` DESC LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_parameter_version/2, at: lib/tms_core/terminal_management/version_compliance_checker.ex:105 [2026-09-02 10:26:18.292] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms idle=1.9ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-09-02 10:26:18.293] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms idle=1.4ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-09-02 10:26:18.293] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-09-02 10:26:18.315] [DEBUG] QUERY OK source="parameter_push_logs" db=20.4ms idle=2.7ms SELECT TRUE FROM `parameter_push_logs` AS p0 WHERE ((((p0.`terminal_id` = ?) AND (p0.`config_type` = ?)) AND (p0.`inserted_at` >= ?)) AND p0.`status` IN ('pending','sent')) LIMIT 1 [33, "application", ~N[2026-09-02 09:56:18]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-09-02 10:26:18.316] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-09-02 10:26:18.316] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-09-02 10:26:18.318] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.2ms idle=23.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-09-02 10:26:18.320] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms idle=3.7ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-09-02 10:26:18.320] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-09-02 10:26:18.321] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=0.1ms idle=2.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:1184 [2026-09-02 10:26:18.343] [DEBUG] QUERY OK source="tms_terminals" db=19.8ms queue=0.6ms idle=2.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:26:18], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:174 [2026-09-02 10:26:18.345] [DEBUG] QUERY OK source="app_upgrade_device_statuses" db=1.0ms queue=0.1ms idle=22.0ms SELECT a0.`id`, a0.`config_id`, a0.`device_id`, a0.`device_sn`, a0.`vendor`, a0.`model`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`update_result`, a0.`status`, a0.`remark`, a0.`finish_time`, a0.`pushed_time`, a0.`retry_count`, a0.`inserted_at`, a0.`updated_at` FROM `app_upgrade_device_statuses` AS a0 WHERE ((a0.`device_sn` = ?) AND a0.`status` IN ('pending','pushed')) ["98251226730001"] ↳ TmsCore.TerminalManagement.AppUpgradeService.maybe_repush_for_device/1, at: lib/tms_core/terminal_management/app_upgrade_service.ex:148 [2026-09-02 10:26:18.412] [DEBUG] QUERY OK db=66.6ms idle=2.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-09-02T10:26:17Z", ~N[2026-09-02 10:26:18], ~N[2026-09-02 10:26:18]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:179 [2026-09-02 10:26:18.413] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 105796, oid: "organization_id", upload_time: "2026-09-02T10:26:17Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:26:18], updated_at: ~N[2026-09-02 10:26:18]} [2026-09-02 10:26:18.414] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-09-02T10:26:17Z", "value" => "online"} [2026-09-02 10:26:18.501] [DEBUG] QUERY OK db=86.9ms queue=0.3ms idle=37.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-09-02T10:26:17Z", "online", "status", 105796, ~N[2026-09-02 10:26:18], ~N[2026-09-02 10:26:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:26:18.502] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084207, itemkey: "status", value: "online", timestamp: "2026-09-02T10:26:17Z", message: "Terminal status update", status_log_id: 105796, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:26:18], updated_at: ~N[2026-09-02 10:26:18]}} [2026-09-02 10:26:18.502] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-09-02 10:26:18.504] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms idle=89.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:26:18], 33] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:203 [2026-09-02 10:26:18.504] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-09-02T10:26:17Z", "value" => "34"} [2026-09-02 10:26:18.587] [DEBUG] QUERY OK db=82.3ms idle=2.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-09-02T10:26:17Z", "34", "battery", 105796, ~N[2026-09-02 10:26:18], ~N[2026-09-02 10:26:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:26:18.588] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084209, itemkey: "battery", value: "34", timestamp: "2026-09-02T10:26:17Z", message: "Battery level", status_log_id: 105796, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:26:18], updated_at: ~N[2026-09-02 10:26:18]}} [2026-09-02 10:26:18.588] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-09-02T10:26:17Z", "value" => "online"} [2026-09-02 10:26:18.646] [DEBUG] QUERY OK db=57.4ms idle=84.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-09-02T10:26:17Z", "online", "network", 105796, ~N[2026-09-02 10:26:18], ~N[2026-09-02 10:26:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:26:18.647] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084212, itemkey: "network", value: "online", timestamp: "2026-09-02T10:26:17Z", message: "Network connectivity", status_log_id: 105796, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:26:18], updated_at: ~N[2026-09-02 10:26:18]}} [2026-09-02 10:26:18.647] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-09-02 10:26:18.649] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.2ms idle=61.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:26:18], 33] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:203 [2026-09-02 10:26:18.649] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-09-02T10:26:17Z", "value" => "0"} [2026-09-02 10:26:18.740] [DEBUG] QUERY OK db=89.9ms idle=4.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-09-02T10:26:17Z", "0", "cpu", 105796, ~N[2026-09-02 10:26:18], ~N[2026-09-02 10:26:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:26:18.740] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084215, itemkey: "cpu", value: "0", timestamp: "2026-09-02T10:26:17Z", message: "CPU usage percentage", status_log_id: 105796, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:26:18], updated_at: ~N[2026-09-02 10:26:18]}} [2026-09-02 10:26:18.740] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-09-02T10:26:17Z", "value" => "1.0.0"} [2026-09-02 10:26:18.790] [DEBUG] QUERY OK db=48.9ms idle=91.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-09-02T10:26:17Z", "1.0.0", "parameter_config", 105796, ~N[2026-09-02 10:26:18], ~N[2026-09-02 10:26:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:26:18.790] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084218, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-09-02T10:26:17Z", message: "Current parameters version", status_log_id: 105796, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:26:18], updated_at: ~N[2026-09-02 10:26:18]}} [2026-09-02 10:26:18.790] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-09-02T10:26:17Z", "value" => "1.0.1"} [2026-09-02 10:26:18.846] [DEBUG] QUERY OK db=55.3ms idle=50.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-09-02T10:26:17Z", "1.0.1", "emv_config", 105796, ~N[2026-09-02 10:26:18], ~N[2026-09-02 10:26:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:26:18.846] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084221, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-09-02T10:26:17Z", message: "Current EMV config version", status_log_id: 105796, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:26:18], updated_at: ~N[2026-09-02 10:26:18]}} [2026-09-02 10:26:18.847] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-09-02T10:26:17Z", "value" => ""} [2026-09-02 10:26:18.942] [DEBUG] QUERY OK db=89.1ms queue=5.9ms idle=57.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-09-02T10:26:17Z", "keys_config", 105796, ~N[2026-09-02 10:26:18], ~N[2026-09-02 10:26:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:26:18.942] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084224, itemkey: "keys_config", value: nil, timestamp: "2026-09-02T10:26:17Z", message: "Current keys config version", status_log_id: 105796, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:26:18], updated_at: ~N[2026-09-02 10:26:18]}} [2026-09-02 10:26:18.943] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-09-02T10:26:17Z", "value" => "3.8.7.3"} [2026-09-02 10:26:18.991] [DEBUG] QUERY OK db=42.1ms queue=2.0ms idle=100.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-09-02T10:26:17Z", "3.8.7.3", "application", 105796, ~N[2026-09-02 10:26:18], ~N[2026-09-02 10:26:18]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:26:18.991] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084227, itemkey: "application", value: "3.8.7.3", timestamp: "2026-09-02T10:26:17Z", message: "Current application version", status_log_id: 105796, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:26:18], updated_at: ~N[2026-09-02 10:26:18]}} [2026-09-02 10:26:18.992] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=50.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:26:18], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:233 [2026-09-02 10:26:18.993] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-09-02T10:26:17Z"} [2026-09-02 10:26:18.994] [INFO ] Received device ACK from 98251226730001: oid= status=error [2026-09-02 10:26:18.995] [WARN ] Unhandled device ACK oid= from 98251226730001: %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-09-02T10:26:17Z"} [2026-09-02 10:26:18.995] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.0","requestId":"9218","status":"success","timestamp":1788344777697,"type":"tms_response"} [2026-09-02 10:26:18.995] [INFO ] Processing file download response for device 98251226730001, request_id: 9218 [2026-09-02 10:26:18.996] [DEBUG] QUERY OK source="file_download_logs" db=0.4ms queue=0.6ms idle=4.7ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["9218"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:26:18.996] [INFO ] No file download log for request_id 9218; response not attached to a push [2026-09-02 10:26:18.997] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:26:18.997771Z], response: %{"message" => "Already up to date: 1.0.0", "requestId" => "9218", "status" => "success", "timestamp" => 1788344777697, "type" => "tms_response"}, request_id: "9218", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:26:18.997] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.0","requestId":"248867","status":"success","timestamp":1788344777719,"type":"tms_response"} [2026-09-02 10:26:18.998] [INFO ] Processing file download response for device 98251226730001, request_id: 248867 [2026-09-02 10:26:19.002] [DEBUG] QUERY OK source="file_download_logs" db=2.5ms idle=7.0ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["248867"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:26:19.009] [INFO ] No file download log for request_id 248867; response not attached to a push [2026-09-02 10:26:19.010] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:26:19.010457Z], response: %{"message" => "Already up to date: 1.0.0", "requestId" => "248867", "status" => "success", "timestamp" => 1788344777719, "type" => "tms_response"}, request_id: "248867", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:26:19.010] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.1","requestId":"4707","status":"success","timestamp":1788344777762,"type":"tms_response"} [2026-09-02 10:26:19.010] [INFO ] Processing file download response for device 98251226730001, request_id: 4707 [2026-09-02 10:26:19.018] [DEBUG] QUERY OK source="file_download_logs" db=7.0ms idle=14.2ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["4707"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:26:19.018] [INFO ] No file download log for request_id 4707; response not attached to a push [2026-09-02 10:26:19.018] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:26:19.018469Z], response: %{"message" => "Already up to date: 1.0.1", "requestId" => "4707", "status" => "success", "timestamp" => 1788344777762, "type" => "tms_response"}, request_id: "4707", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:26:19.018] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-09-02T10:26:17Z"} [2026-09-02 10:26:19.018] [INFO ] Received device ACK from 98251226730001: oid= status=error [2026-09-02 10:26:19.021] [WARN ] Unhandled device ACK oid= from 98251226730001: %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-09-02T10:26:17Z"} [2026-09-02 10:26:19.021] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.1","requestId":"248931","status":"success","timestamp":1788344777820,"type":"tms_response"} [2026-09-02 10:26:19.022] [INFO ] Processing file download response for device 98251226730001, request_id: 248931 [2026-09-02 10:26:19.025] [DEBUG] QUERY OK source="file_download_logs" db=1.0ms queue=0.1ms idle=21.4ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["248931"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:26:19.025] [INFO ] No file download log for request_id 248931; response not attached to a push [2026-09-02 10:26:19.025] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:26:19.025473Z], response: %{"message" => "Already up to date: 1.0.1", "requestId" => "248931", "status" => "success", "timestamp" => 1788344777820, "type" => "tms_response"}, request_id: "248931", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:26:19.025] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-09-02T10:26:17Z"} [2026-09-02 10:26:19.025] [INFO ] Received device ACK from 98251226730001: oid= status=error [2026-09-02 10:26:19.039] [WARN ] Unhandled device ACK oid= from 98251226730001: %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-09-02T10:26:17Z"} [2026-09-02 10:26:19.039] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-09-02T10:26:17Z"} [2026-09-02 10:26:19.040] [INFO ] Received device ACK from 98251226730001: oid= status=error [2026-09-02 10:26:19.040] [WARN ] Unhandled device ACK oid= from 98251226730001: %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-09-02T10:26:17Z"} [2026-09-02 10:26:19.040] [WARN ] Unexpected async result [2026-09-02 10:26:19.040] [WARN ] Unexpected async result [2026-09-02 10:27:23.090] [INFO ] Received status update for terminal 98251226730001 [2026-09-02 10:27:23.091] [INFO ] Incoming JSON payload: {"oid":"18d0ca60-5d25-4860-be60-aa9dceb6380f","sn":"98251226730001","uploadTime":"2026-09-02T10:27:18Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-09-02T10:27:18Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-09-02T10:27:18Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-09-02T10:27:18Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-09-02T10:27:18Z"},{"itemkey":"ram_free_mb","value":"851","timestamp":"2026-09-02T10:27:18Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-09-02T10:27:18Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-09-02T10:27:18Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-09-02T10:27:18Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-09-02T10:27:18Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-09-02T10:27:18Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-09-02T10:27:18Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-09-02T10:27:18Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-09-02T10:27:18Z"},{"itemkey":"data_usage_mb","value":"39","timestamp":"2026-09-02T10:27:18Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-09-02T10:27:18Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-09-02 10:27:23.097] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "18d0ca60-5d25-4860-be60-aa9dceb6380f", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-09-02T10:27:18Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-09-02T10:27:18Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-09-02T10:27:18Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-09-02T10:27:18Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-09-02T10:27:18Z", "value" => "851"}, %{"itemkey" => "network_type", "timestamp" => "2026-09-02T10:27:18Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-09-02T10:27:18Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-09-02T10:27:18Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-09-02T10:27:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-09-02T10:27:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-09-02T10:27:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-09-02T10:27:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-09-02T10:27:18Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-09-02T10:27:18Z", "value" => "39"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-09-02T10:27:18Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-09-02T10:27:18Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-09-02T10:27:18Z", "vendor" => "morefun"} [2026-09-02 10:27:23.098] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-09-02 10:27:23.098] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-09-02 10:27:23.098] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-09-02 10:27:23.103] [DEBUG] QUERY OK source="parameter_templates" db=3.1ms queue=0.1ms idle=1287.0ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-09-02 10:27:23.106] [DEBUG] QUERY OK source="parameter_templates" db=2.4ms idle=445.4ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-09-02 10:27:23.107] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-09-02 10:27:23.115] [DEBUG] QUERY OK source="tms_terminals" db=3.7ms queue=0.9ms idle=5.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:140 [2026-09-02 10:27:23.184] [DEBUG] QUERY OK source="tms_terminals" db=27.4ms queue=41.1ms idle=9.3ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-09-02 10:27:23], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-09-02 10:27:23.185] [INFO ] Terminal updated: 98251226730001 [2026-09-02 10:27:23.185] [INFO ] Event published: terminal_updated [2026-09-02 10:27:23.187] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.7ms queue=0.8ms idle=71.7ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-09-02 10:27:23], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-09-02 10:27:23.189] [DEBUG] Processing terminal event: terminal_updated [2026-09-02 10:27:23.189] [INFO ] Processing terminal_updated event for terminal 33 [2026-09-02 10:27:23.189] [INFO ] Changed fields: [:vendor, :model] [2026-09-02 10:27:23.191] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms idle=3.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-09-02 10:27:23.192] [DEBUG] QUERY OK source="terminal_group_rules" db=1.1ms idle=1.3ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-09-02 10:27:23.192] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-09-02 10:27:23.259] [DEBUG] QUERY OK source="tms_terminals" db=29.4ms queue=41.9ms idle=0.3ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "kiosk_launcher", "morefun", nil, nil, nil, nil, ~N[2026-09-02 10:27:23], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:164 [2026-09-02 10:27:23.259] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-09-02 10:27:23.260] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=67.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:1184 [2026-09-02 10:27:23.332] [DEBUG] QUERY OK source="tms_terminals" db=30.3ms queue=40.9ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:27:23], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:174 [2026-09-02 10:27:23.333] [DEBUG] QUERY OK source="app_upgrade_device_statuses" db=1.1ms idle=71.9ms SELECT a0.`id`, a0.`config_id`, a0.`device_id`, a0.`device_sn`, a0.`vendor`, a0.`model`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`update_result`, a0.`status`, a0.`remark`, a0.`finish_time`, a0.`pushed_time`, a0.`retry_count`, a0.`inserted_at`, a0.`updated_at` FROM `app_upgrade_device_statuses` AS a0 WHERE ((a0.`device_sn` = ?) AND a0.`status` IN ('pending','pushed')) ["98251226730001"] ↳ TmsCore.TerminalManagement.AppUpgradeService.maybe_repush_for_device/1, at: lib/tms_core/terminal_management/app_upgrade_service.ex:148 [2026-09-02 10:27:23.426] [DEBUG] QUERY OK db=92.5ms idle=1.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "18d0ca60-5d25-4860-be60-aa9dceb6380f", "2026-09-02T10:27:18Z", ~N[2026-09-02 10:27:23], ~N[2026-09-02 10:27:23]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:179 [2026-09-02 10:27:23.426] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 105799, oid: "18d0ca60-5d25-4860-be60-aa9dceb6380f", upload_time: "2026-09-02T10:27:18Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:27:23], updated_at: ~N[2026-09-02 10:27:23]} [2026-09-02 10:27:23.427] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-09-02T10:27:18Z", "value" => "morefun"} [2026-09-02 10:27:23.504] [DEBUG] QUERY OK db=33.1ms queue=43.4ms idle=93.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:27:18Z", "morefun", "vendor", 105799, ~N[2026-09-02 10:27:23], ~N[2026-09-02 10:27:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:27:23.504] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084233, itemkey: "vendor", value: "morefun", timestamp: "2026-09-02T10:27:18Z", message: nil, status_log_id: 105799, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:27:23], updated_at: ~N[2026-09-02 10:27:23]}} [2026-09-02 10:27:23.504] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-09-02T10:27:18Z", "value" => "kiosk_launcher"} [2026-09-02 10:27:23.605] [DEBUG] QUERY OK db=98.3ms queue=1.9ms idle=79.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:27:18Z", "kiosk_launcher", "model", 105799, ~N[2026-09-02 10:27:23], ~N[2026-09-02 10:27:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:27:23.605] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084236, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-09-02T10:27:18Z", message: nil, status_log_id: 105799, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:27:23], updated_at: ~N[2026-09-02 10:27:23]}} [2026-09-02 10:27:23.607] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-09-02T10:27:18Z", "value" => "1.0"} [2026-09-02 10:27:23.656] [DEBUG] QUERY OK db=47.8ms idle=104.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:27:18Z", "1.0", "app_version", 105799, ~N[2026-09-02 10:27:23], ~N[2026-09-02 10:27:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:27:23.657] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084239, itemkey: "app_version", value: "1.0", timestamp: "2026-09-02T10:27:18Z", message: nil, status_log_id: 105799, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:27:23], updated_at: ~N[2026-09-02 10:27:23]}} [2026-09-02 10:27:23.657] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-09-02T10:27:18Z", "value" => "13"} [2026-09-02 10:27:23.725] [DEBUG] QUERY OK db=66.4ms queue=1.2ms idle=52.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:27:18Z", "13", "android_version", 105799, ~N[2026-09-02 10:27:23], ~N[2026-09-02 10:27:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:27:23.725] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084242, itemkey: "android_version", value: "13", timestamp: "2026-09-02T10:27:18Z", message: nil, status_log_id: 105799, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:27:23], updated_at: ~N[2026-09-02 10:27:23]}} [2026-09-02 10:27:23.726] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-09-02T10:27:18Z", "value" => "851"} [2026-09-02 10:27:23.758] [DEBUG] QUERY OK db=32.6ms idle=65.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:27:18Z", "851", "ram_free_mb", 105799, ~N[2026-09-02 10:27:23], ~N[2026-09-02 10:27:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:27:23.759] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084245, itemkey: "ram_free_mb", value: "851", timestamp: "2026-09-02T10:27:18Z", message: nil, status_log_id: 105799, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:27:23], updated_at: ~N[2026-09-02 10:27:23]}} [2026-09-02 10:27:23.759] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-09-02T10:27:18Z", "value" => "WIFI"} [2026-09-02 10:27:23.809] [DEBUG] QUERY OK db=50.0ms idle=34.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:27:18Z", "WIFI", "network_type", 105799, ~N[2026-09-02 10:27:23], ~N[2026-09-02 10:27:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:27:23.810] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084248, itemkey: "network_type", value: "WIFI", timestamp: "2026-09-02T10:27:18Z", message: nil, status_log_id: 105799, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:27:23], updated_at: ~N[2026-09-02 10:27:23]}} [2026-09-02 10:27:23.810] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-09-02T10:27:18Z", "value" => "true"} [2026-09-02 10:27:23.887] [DEBUG] QUERY OK db=77.1ms idle=51.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:27:18Z", "true", "kiosk_active", 105799, ~N[2026-09-02 10:27:23], ~N[2026-09-02 10:27:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:27:23.887] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084251, itemkey: "kiosk_active", value: "true", timestamp: "2026-09-02T10:27:18Z", message: nil, status_log_id: 105799, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:27:23], updated_at: ~N[2026-09-02 10:27:23]}} [2026-09-02 10:27:23.890] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-09-02T10:27:18Z", "value" => ""} [2026-09-02 10:27:23.961] [DEBUG] QUERY OK db=70.8ms queue=0.1ms idle=80.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-09-02T10:27:18Z", "sim_operator", 105799, ~N[2026-09-02 10:27:23], ~N[2026-09-02 10:27:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:27:23.961] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084254, itemkey: "sim_operator", value: nil, timestamp: "2026-09-02T10:27:18Z", message: nil, status_log_id: 105799, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:27:23], updated_at: ~N[2026-09-02 10:27:23]}} [2026-09-02 10:27:23.961] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-09-02T10:27:18Z", "value" => "UNKNOWN"} [2026-09-02 10:27:24.042] [DEBUG] QUERY OK db=79.5ms idle=75.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:27:18Z", "UNKNOWN", "sim_number", 105799, ~N[2026-09-02 10:27:23], ~N[2026-09-02 10:27:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:27:24.042] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084257, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-09-02T10:27:18Z", message: nil, status_log_id: 105799, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:27:23], updated_at: ~N[2026-09-02 10:27:23]}} [2026-09-02 10:27:24.042] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-09-02T10:27:18Z", "value" => "UNKNOWN"} [2026-09-02 10:27:24.092] [DEBUG] QUERY OK db=49.7ms idle=0.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:27:18Z", "UNKNOWN", "sim_iccid", 105799, ~N[2026-09-02 10:27:24], ~N[2026-09-02 10:27:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:27:24.093] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084260, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-09-02T10:27:18Z", message: nil, status_log_id: 105799, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:27:24], updated_at: ~N[2026-09-02 10:27:24]}} [2026-09-02 10:27:24.093] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-09-02T10:27:18Z", "value" => "UNKNOWN"} [2026-09-02 10:27:24.148] [DEBUG] QUERY OK db=54.7ms idle=39.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:27:18Z", "UNKNOWN", "sim_imsi", 105799, ~N[2026-09-02 10:27:24], ~N[2026-09-02 10:27:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:27:24.157] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084263, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-09-02T10:27:18Z", message: nil, status_log_id: 105799, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:27:24], updated_at: ~N[2026-09-02 10:27:24]}} [2026-09-02 10:27:24.157] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-09-02T10:27:18Z", "value" => "UNKNOWN"} [2026-09-02 10:27:24.213] [DEBUG] QUERY OK db=55.8ms idle=65.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:27:18Z", "UNKNOWN", "sim_iccid2", 105799, ~N[2026-09-02 10:27:24], ~N[2026-09-02 10:27:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:27:24.215] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084266, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-09-02T10:27:18Z", message: nil, status_log_id: 105799, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:27:24], updated_at: ~N[2026-09-02 10:27:24]}} [2026-09-02 10:27:24.215] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-09-02T10:27:18Z", "value" => "UNKNOWN"} [2026-09-02 10:27:24.267] [DEBUG] QUERY OK db=51.5ms idle=67.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:27:18Z", "UNKNOWN", "sim_imsi2", 105799, ~N[2026-09-02 10:27:24], ~N[2026-09-02 10:27:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:27:24.267] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084268, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-09-02T10:27:18Z", message: nil, status_log_id: 105799, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:27:24], updated_at: ~N[2026-09-02 10:27:24]}} [2026-09-02 10:27:24.267] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-09-02T10:27:18Z", "value" => "39"} [2026-09-02 10:27:24.354] [DEBUG] QUERY OK db=81.1ms queue=5.4ms idle=54.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:27:18Z", "39", "data_usage_mb", 105799, ~N[2026-09-02 10:27:24], ~N[2026-09-02 10:27:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:27:24.356] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084271, itemkey: "data_usage_mb", value: "39", timestamp: "2026-09-02T10:27:18Z", message: nil, status_log_id: 105799, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:27:24], updated_at: ~N[2026-09-02 10:27:24]}} [2026-09-02 10:27:24.356] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-09-02T10:27:18Z", "value" => "0"} [2026-09-02 10:27:24.427] [DEBUG] QUERY OK db=70.4ms idle=89.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:27:18Z", "0", "mobile_data_mb", 105799, ~N[2026-09-02 10:27:24], ~N[2026-09-02 10:27:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:27:24.431] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084274, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-09-02T10:27:18Z", message: nil, status_log_id: 105799, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:27:24], updated_at: ~N[2026-09-02 10:27:24]}} [2026-09-02 10:27:24.432] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-09-02T10:27:18Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-09-02 10:27:24.499] [DEBUG] QUERY OK db=65.8ms idle=77.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:27:18Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 105799, ~N[2026-09-02 10:27:24], ~N[2026-09-02 10:27:24]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:27:24.500] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084277, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-09-02T10:27:18Z", message: nil, status_log_id: 105799, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:27:24], updated_at: ~N[2026-09-02 10:27:24]}} [2026-09-02 10:27:33.786] [DEBUG] QUERY OK source="payout_items" db=0.5ms idle=87.8ms SELECT p0.`id`, p0.`payout_batch_id`, p0.`settlement_mis_id`, p0.`settlement_date`, p0.`merchant_mid`, p0.`merchant_id`, p0.`merchant_name`, p0.`merchant_ref_number`, p0.`bank_name`, p0.`iban`, p0.`account_number`, p0.`bank_code`, p0.`currency`, p0.`gross_amount`, p0.`total_deductions`, p0.`payout_amount`, p0.`transaction_count`, p0.`net_settlement_amount`, p0.`total_adjustments_credit`, p0.`total_adjustments_debit`, p0.`final_payout_amount`, p0.`total_gross_amount`, p0.`total_mdr_amount`, p0.`total_vat_amount`, p0.`status`, p0.`bank_transfer_ref`, p0.`confirmed_at`, p0.`rejection_reason`, p0.`rejected_at`, p0.`re_initiated_at`, p0.`re_initiated_batch_id`, p0.`inserted_at`, p0.`updated_at` FROM `payout_items` AS p0 WHERE (p0.`id` = ?) [271] ↳ SettlementCore.Workers.VatMisDistributionWorker.send_merchant_vat_mis/1, at: lib/settlement_core/workers/vat_mis_distribution_worker.ex:122 [2026-09-02 10:27:33.787] [DEBUG] QUERY OK source="tid_masters" db=0.6ms idle=1.1ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` = ?) ["425590250000000"] ↳ SettlementCore.Workers.VatMisDistributionWorker.send_merchant_vat_mis/1, at: lib/settlement_core/workers/vat_mis_distribution_worker.ex:123 [2026-09-02 10:27:33.788] [INFO ] [VatMisGenerator] Generating VAT MIS Excel for 2026-09-01 merchant="425590250000000" [2026-09-02 10:27:33.789] [DEBUG] QUERY OK source="vat_invoices" db=1.5ms idle=1.2ms SELECT v0.`invoice_number`, coalesce(t1.`merchant_name_legal`, t1.`merchant_name_dba`), v0.`merchant_mid`, v0.`merchant_id`, v0.`settlement_date`, v0.`invoice_date`, v0.`gross_amount`, v0.`mdr_amount`, v0.`vat_amount`, a4.`line1`, a4.`city`, a4.`country`, t1.`spare_fields` FROM `vat_invoices` AS v0 LEFT OUTER JOIN `tid_masters` AS t1 ON t1.`mid` = v0.`merchant_mid` LEFT OUTER JOIN `brands` AS b2 ON b2.`merchant_reference_id` COLLATE utf8mb4_unicode_ci = t1.`merchant_ref_number` COLLATE utf8mb4_unicode_ci LEFT OUTER JOIN `stores` AS s3 ON s3.`brand_id` = b2.`id` LEFT OUTER JOIN `addresses` AS a4 ON a4.`id` = s3.`address_id` WHERE (v0.`settlement_date` = ?) AND (v0.`merchant_mid` = ?) ORDER BY v0.`merchant_mid`, v0.`invoice_number` [~D[2026-09-01], "425590250000000"] ↳ SettlementCore.VatMisGenerator.generate_excel/2, at: lib/settlement_core/vat_mis_generator.ex:80 [2026-09-02 10:27:33.791] [INFO ] [SettlementNotifier] Sending VAT MIS to ["sunny@dataaegis.com"] for date 2026-09-01 [2026-09-02 10:27:33.791] [INFO ] [SettlementNotifier] ===== CALLING MAILER.DELIVER ===== [2026-09-02 10:27:33.791] [INFO ] [SettlementNotifier] Email TO: [{"", "sunny@dataaegis.com"}] [2026-09-02 10:27:33.791] [INFO ] [SettlementNotifier] Email FROM: {"", "donotreply@shukria.ae"} [2026-09-02 10:27:33.791] [INFO ] [SettlementNotifier] Email SUBJECT: VAT MIS Report — 2026-09-01 [2026-09-02 10:27:33.791] [INFO ] [AzureCommunicationServices] ===== STARTING EMAIL DELIVERY ===== [2026-09-02 10:27:33.792] [INFO ] [AzureCommunicationServices] Email recipients: [{"", "sunny@dataaegis.com"}] [2026-09-02 10:27:33.793] [INFO ] [AzureCommunicationServices] Email subject: VAT MIS Report — 2026-09-01 [2026-09-02 10:27:33.793] [INFO ] [AzureCommunicationServices] Config values: [2026-09-02 10:27:33.793] [INFO ] - sender: donotreply@shukria.ae [2026-09-02 10:27:33.793] [INFO ] - endpoint: https://shukria-commserv-merchants.uae.communication.azure.com [2026-09-02 10:27:33.793] [INFO ] - api_version: 2025-09-01 [2026-09-02 10:27:33.793] [INFO ] [AzureCommunicationServices] Request URL: https://shukria-commserv-merchants.uae.communication.azure.com/emails:send?api-version=2025-09-01 [2026-09-02 10:27:33.793] [INFO ] [AzureCommunicationServices] Host extracted: shukria-commserv-merchants.uae.communication.azure.com [2026-09-02 10:27:33.793] [INFO ] [AzureCommunicationServices] Path and query: /emails:send?api-version=2025-09-01 [2026-09-02 10:27:33.794] [INFO ] [AzureCommunicationServices] ===== PREPARE_BODY STARTING ===== [2026-09-02 10:27:33.794] [INFO ] [AzureCommunicationServices] email.attachments count: 1 [2026-09-02 10:27:33.795] [INFO ] [AzureCommunicationServices] First attachment is %Swoosh.Attachment{}: true [2026-09-02 10:27:33.795] [INFO ] [AzureCommunicationServices] First attachment data type: <<80, 75, 3, 4, 20, 0, 0, 0, 8, 0, 97, 83, 34, 93, 33, 175, 77, 49, 200, 0, 0, 0, 85, 1, 0, 0, 16, 0, 0, 0, 100, 111, 99, 80, 114, 111, 112, 115, 47, 97, 112, 112, 46, 120, 109, 108, 157, 144, 205, 110, ...>> [2026-09-02 10:27:33.795] [INFO ] [AzureCommunicationServices] First attachment filename: VAT_MIS_425590250000000_2026-09-01.xlsx [2026-09-02 10:27:33.795] [INFO ] [AzureCommunicationServices] Processing attachment: VAT_MIS_425590250000000_2026-09-01.xlsx [2026-09-02 10:27:33.795] [INFO ] [AzureCommunicationServices] Attachment data type: <<80, 75, 3, 4, 20, 0, 0, 0, 8, 0, 97, 83, 34, 93, 33, 175, 77, 49, 200, 0, 0, 0, 85, 1, 0, 0, 16, 0, 0, 0, 100, 111, 99, 80, 114, 111, 112, 115, 47, 97, 112, 112, 46, 120, 109, 108, 157, 144, 205, 110, ...>> [2026-09-02 10:27:33.795] [INFO ] [AzureCommunicationServices] Direct binary size: 4156 bytes [2026-09-02 10:27:33.795] [INFO ] [AzureCommunicationServices] Base64 encoded size: 5544 chars [2026-09-02 10:27:33.801] [INFO ] [AzureCommunicationServices] Attachment struct created: %{"contentInBase64" => "UEsDBBQAAAAIAGFTIl0hr00xyAAAAFUBAAAQAAAAZG9jUHJvcHMvYXBwLnhtbJ2QzW4CIRSF9/MUhL0DdWGMYTAmtWsXo3sCd5QEuARuzfj2Ym1r112en3w5OWo7x8CuUKrHNPC3XnIGyaLz6Tzw4/ixWHNWySRnAiYY+A0q3+pOHQpmKOShskZIdeAXorwRotoLRFP7FqeWTFiioSbLWeA0eQvvaD8jJBJLKVcCZoLkwC3yL5A/iZsr/Rfq0D721dN4y42nO8bUiGTC6CNoqcRLPKJdzsFbQ+0CvQ9+DnVW4q/5XTo9b9KyX8mvwo/RKfH6Q3d3UEsDBBQAAAAIAGFTIl2rlTQCLwEAAFoCAAARAAAAZG9jUHJvcHMvY29yZS54bWylksFuwjAMhu99iij3NmkrsS1qy2ETp02aBGjTblFqSrQmjZJA4e2XdlBg4raj8//+7Ngu5gfVoj1YJztd4jShGIEWXS11U+L1ahE/YuQ81zVvOw0lPoLD8yoqhGGis/BuOwPWS3AogLRjwpR4671hhDixBcVdEhw6iJvOKu5DaBtiuPjmDZCM0hlR4HnNPScDMDYTEZ+QtZiQZmfbEVALAi0o0N6RNEnJxevBKnc3YVSunEr6o4G71rM4uQ9OTsa+75M+H62h/5R8vr0ux6/GUg+jEoCrCKHi1AsTFriHGgUG+614Vj7y55fVAlcZzWYxfYpptkopyx5Ynn8V5E/+iclarptdGF4FOl4vB9vl6bqsCkvcyH/UPQNGati3hb0czqRKC3IdRmN4ew1V9ANQSwMEFAAAAAgAYVMiXcsHwd3eAAAAPwIAAAsAAABfcmVscy8ucmVsc62Sz07DMAyH73uKyPfV3ZAQQst2QUi7ITQewCRuG7WJoyRAeXsiDvyZ2LQDxyQ/f/5sZbOb/aReOWUnQcOqaUFxMGJd6DU8He6XN7DbLjaPPFGpkTy4mFWtCVnDUEq8RcxmYE+5kcihvnSSPJV6TD1GMiP1jOu2vcb0kwFHULW3GtLerkAd3iNfApeuc4bvxLx4DuWPHkeJSqbUc9EwT/gmaXwWGZsKBTwhs75c5vSk6LmQpUJoJPEyplqdiuP87WPFPNTr/Jk4a3T1n+vhuXCwbM87UYxfSvjrH2wXH1BLAwQUAAAACABhUyJdZjdOSCwBAACbAgAADQAAAHhsL3N0eWxlcy54bWytUstOwzAQvOcrLN+p00gghJJUXCpxbpG4mmTzkOy1ZbuQ/D0bxy2FXjgg5bA7nhnPblzuJq3YBzg/Gqz4dpNzBtiYdsS+4q/H/d0jZz5IbKUyCBWfwfNdnZU+zAoOA0Bg5IC+4kMI9kkI3wygpd8YC0gnnXFaBmpdL7x1IFu/iLQSRZ4/CC1H5HXGGH1lZzB41pgTBooS4YQysTYLS0RaHQWjUhdBcREQWpdWhgAO99SwVB9nSxMgzcFFTT4L70+S3sl5W9z/Uq1hlggxzLtxLe3xJv+K/5ggUaOsAaUOyzLfulvt1LGV+9JWnH4NnvReh9QsV59LWkkqpbVqflZjjxquvchNnlH26aQ9whSPU7BSTF0MJK4TXSL+U7qpW4vrbSR7elTi+1XV2RdQSwMEFAAAAAgAYVMiXbJy14qvAQAAzQYAABQAAAB4bC9zaGFyZWRTdHJpbmdzLnhtbJ2VTW/bMAyG7/sVhE7bIZGbAkVX2C6CZC0CdFmReL0zMhsLkyVPkoPk309ut+4DO9A5SuLDlx+ilN8eWwMH8kE7W4iLaSaArHK1tvtCfK3uJtcCQkRbo3GWCnGiIG7Ld3kIERJqQyGaGLsbKYNqqMUwdR3ZdPLsfIsxLf1ehs4T1qEhiq2Rsyy7ki1qK0C53sZCXCbV3urvPS3eNgYNXeYvKjehQ5XEk5tA/kCi/ExeNWgjrLGlXMYyl4M1h5jXddoMLOhTqz1GCnKh44lFvCTgebZvIVWbNRvo/Qkqb1n2FR5hZQ9OK4K1m7KYX/aP5LWrRyHLVKpxia+WvDxcRAPV0cK8HerLE1lu4I54AVUebUAV0xDwmdeg/iZ51+ppXo3J5P9K8H5llemHSYXk8APL1ZZiNNRSqj072g0997aGR+9UmptBjluiRYN+TztU39jItt8F5XV3Riu+xIY8P61/obPq+bM1eMSdofE9Pesi3HsXwhjs3pmaLGzTKx5gQxG1gYeHBYvlPQDrp8ksm11Nsiy7vGYh2YXMPsoBgsrB7xULnsGWOvjTWKb/qPwBUEsDBBQAAAAIAGFTIl0470saKwEAAOsBAAAPAAAAeGwvd29ya2Jvb2sueG1sjZFNTwIxEIbv/Iqmd7eFgzGEhRCICYmoicjVDN0p29CPTVsW/ffO7sbVo7d23vbpM9PF6tNZ1mJMJviSTwvJGXoVKuPPJX8/PN49cJYy+Aps8FjyL0x8tZwsbiFeTiFcGN33qeR1zs1ciKRqdJCK0KCnRIfoINM2nkVqIkKVasTsrJhJeS8cGM8Hwjz+hxG0Ngq3QV0d+jxAIlrIZJ9q0yROatpYPA4dMWiaZ3DkvQGruKC0kz4avKXlhLGxja7CQGXT4gFOJZf9WfHn8KI3HxfM99jj+vCx373RjLrirqIR9vPKlLUmmZNFzuLcUBB31WygjiRFUq+R6au1nd+LfwowIEzGSJBNuPpMBUnfElHvQ0Xc9W9ecg024bjfos1A9oWU0+GtnwaXk29QSwMEFAAAAAgAYVMiXQAiPnfZAAAALAIAABoAAAB4bC9fcmVscy93b3JrYm9vay54bWwucmVsc62RwU7DMAyG732KyHeadpMQQkt3QUi7svEAUeo21doksg3b3p4gYHQIJA47RbaT7//ze7U+TqN6ReIhBgN1WYHC4GI7hN7A8+7x5g7WTbF6wtFKvsJ+SKzym8AGvEi615qdx8lyGROGPOkiTVZySb1O1u1tj3pRVbea5gxoCqUusGrTGqBNW4PanRL+Bx+7bnD4EN3LhEF+UdEspxE5Ey31KAY+6jJzQP/41pf+4pr6h0h79ojybeHcyu7ej/rTzR9xLK8ah7eE7VYor3eeyrx9DkdfLL0p3gBQSwMEFAAAAAgAYVMiXd+h2mxUAwAAgQ8AABgAAAB4bC93b3Jrc2hlZXRzL3NoZWV0MS54bWyNl11X4jAQhu/5FTm9X9qEb4/gWUX8WhUV/LqrJYUe24Ztorj/ftPSADZzZG6A0OfNpDNvps3h0VcSk0+eyUikfYfWPYfwNBCzKJ33nelk9KvrEKn8dObHIuV95x+XztGgdrgS2btccK6IniCVfWeh1PLAdWWw4Ikv62LJU30lFFniKz3M5q5cZtyfFaIkdpnntd3Ej1JnPcNBhplDhGEU8KEIPhKeqvUkGY99pZcvF9FSOnptRYhxRsIoVjy7FjO97tCPJdcXCTlc+nP+wNV0WSBqIsb6D0O4Wu+WE+ifs0jHyXNDMh72nd+0AIrrjxFfyd0ByXPyJsR7PriY9R3PqeXXecyDfH2E+Pr7k5/wOC6mIvKvmZW4gzJsLt6s4VuMUZEHvegZD/2PWN2L1TmP5gul68bqXaeWLy0QsRzknySJ8oI6JPG/iu9VNFOLvsPaDgk+pBLJ0/qPdfCNgpUKtlE0mj8rGqWisVHQ7s+KZqlobhXsZ0WrVLTQMdqloo1WdEpFB63oloruNrt77qNXKnrbGHvqQT1TQm+r2VMRuik7xccxhacMH8eUnjbwcUzxaROdZ2rKT1v4tRkD0K0D2L44xgK0g78fYwKKdwE1NqB4HzDjA+ah88aMDxjeB2zTAPA+YMYHbOsDtk9jfMDwPmDGB6yFvx/jA7a3E7jr5lk026GvfN1OM7EiWXG9eHQE+UC365rMuzvRnbd44HwOvEP3M+/aQd6Cc+gYgGgVOgEgVoWGANSoQqcA1KxCIwBqVaEzAGpXoXMA6lShCwDqVqFLAOpVoSsomVbK/0CUlfNriLKSfgNRVtZvIcpK+xiirLzfQZSV+HuIsjL/AFFW6icQZeV+CnnUyv0jKhNP0FxWhZ4hyqrQC0RZFXqFqJ116U+9xbcbnX3b6AwQW4U7hiircCcoaoiiTlHUCEWdQZRlqHOIsgx1AVGWoS53" <> ..., "contentType" => "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "name" => "VAT_MIS_425590250000000_2026-09-01.xlsx"} [2026-09-02 10:27:33.801] [INFO ] [AzureCommunicationServices] Final JSON body size: 7298 bytes [2026-09-02 10:27:33.801] [INFO ] [AzureCommunicationServices] JSON first 500 chars: {"attachments":[{"contentInBase64":"UEsDBBQAAAAIAGFTIl0hr00xyAAAAFUBAAAQAAAAZG9jUHJvcHMvYXBwLnhtbJ2QzW4CIRSF9/MUhL0DdWGMYTAmtWsXo3sCd5QEuARuzfj2Ym1r112en3w5OWo7x8CuUKrHNPC3XnIGyaLz6Tzw4/ixWHNWySRnAiYY+A0q3+pOHQpmKOShskZIdeAXorwRotoLRFP7FqeWTFiioSbLWeA0eQvvaD8jJBJLKVcCZoLkwC3yL5A/iZsr/Rfq0D721dN4y42nO8bUiGTC6CNoqcRLPKJdzsFbQ+0CvQ9+DnVW4q/5XTo9b9KyX8mvwo/RKfH6Q3d3UEsDBBQAAAAIAGFTIl2rlTQCLwEAAFoCAAARAAAAZG9jUHJvcHMvY29yZS54bWylksFuwjAMhu99iij3NmkrsS1qy2ETp02aBGjTblFqSrQmjZJA4e2XdlBg4raj8//+7Ngu5gfV [2026-09-02 10:27:33.801] [INFO ] [AzureCommunicationServices] ✅ First attachment contentInBase64 present: 5544 chars (non-empty: true) [2026-09-02 10:27:33.801] [INFO ] [AzureCommunicationServices] Content SHA256: nVZL9geXZIJXDB7JmBXK... [2026-09-02 10:27:33.801] [INFO ] [AzureCommunicationServices] Signature (first 20 chars): QvzjOeDkyV9K23rnT08/... [2026-09-02 10:27:33.801] [INFO ] [AzureCommunicationServices] Auth: HMAC-SHA256 signature authentication [2026-09-02 10:27:33.801] [INFO ] [AzureCommunicationServices] Headers: Authorization, x-ms-date, host, x-ms-content-sha256 [2026-09-02 10:27:33.801] [DEBUG] [AzureCommunicationServices] Request body prepared [2026-09-02 10:27:33.802] [INFO ] [AzureCommunicationServices] Sending HTTP request to Azure... [2026-09-02 10:27:33.802] [DEBUG] [AzureCommunicationServices] Building HTTP request... [2026-09-02 10:27:33.806] [DEBUG] [AzureCommunicationServices] Executing HTTP request via Finch... [2026-09-02 10:27:34.726] [INFO ] [AzureCommunicationServices] HTTP Response: 202 (Success) [2026-09-02 10:27:34.726] [INFO ] [AzureCommunicationServices] Response body: {"id":"12db6add-efbc-47da-a9be-c25236e603be","status":"Running","error":null} [2026-09-02 10:27:34.726] [INFO ] [AzureCommunicationServices] Parsed response: %{"error" => nil, "id" => "12db6add-efbc-47da-a9be-c25236e603be", "status" => "Running"} [2026-09-02 10:27:34.726] [INFO ] [AzureCommunicationServices] ✅ Email sent successfully to [{"", "sunny@dataaegis.com"}] [2026-09-02 10:27:34.727] [INFO ] [SettlementNotifier] ===== MAILER.DELIVER RESULT ===== [2026-09-02 10:27:34.727] [INFO ] [SettlementNotifier] Result: {:ok, %{id: "12db6add-efbc-47da-a9be-c25236e603be", status: 202}} [2026-09-02 10:27:34.727] [INFO ] [SettlementNotifier] ✅ Email delivery SUCCESS [2026-09-02 10:27:34.727] [INFO ] Merchant VAT MIS sent to sunny@dataaegis.com for MID=425590250000000 [2026-09-02 10:28:36.665] [INFO ] Received status update for terminal 98251226730001 [2026-09-02 10:28:36.665] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-09-02T10:28:35Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-09-02T10:28:35Z","value":"34"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-09-02T10:28:35Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-09-02T10:28:35Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-09-02T10:28:35Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-09-02T10:28:35Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-09-02T10:28:35Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-09-02T10:28:35Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-09-02T10:28:35Z","vendor":"MoreFun"} [2026-09-02 10:28:36.667] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-09-02T10:28:35Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-09-02T10:28:35Z", "value" => "34"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-09-02T10:28:35Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-09-02T10:28:35Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-09-02T10:28:35Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-09-02T10:28:35Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-09-02T10:28:35Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-09-02T10:28:35Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-09-02T10:28:35Z", "vendor" => "MoreFun"} [2026-09-02 10:28:36.667] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-09-02 10:28:36.672] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-09-02 10:28:36.672] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-09-02 10:28:36.675] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=693.0ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-09-02 10:28:36.679] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms idle=567.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-09-02 10:28:36.680] [DEBUG] QUERY OK source="parameter_template_values" db=0.8ms queue=0.4ms idle=5.9ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-09-02 10:28:36.683] [DEBUG] QUERY OK source="parameter_definitions" db=0.9ms queue=1.0ms idle=1.9ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-09-02 10:28:36.684] [DEBUG] QUERY OK source="pos_terminal" db=0.5ms idle=2.8ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-09-02 10:28:36.724] [DEBUG] QUERY OK source="pos_merchant" db=39.9ms queue=0.1ms idle=1.2ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [350] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-09-02 10:28:36.727] [DEBUG] QUERY OK db=0.9ms queue=2.0ms idle=957.4ms SELECT COALESCE(JSON_UNQUOTE(JSON_EXTRACT(mc.settings, '$.BASE_MERCHANT_NAME')), '') as base_merchant_name, COALESCE(u.name, '') as user_name, COALESCE(um.softpos_uuid, '') as softpos_uuid, COALESCE(mc.settings, '{}') as settings FROM user_metadata um LEFT JOIN merchant_configuration mc ON mc.user_id = um.user_id LEFT JOIN users u ON u.id = um.user_id WHERE um.merchant_refrence_number = ? LIMIT 1 ["667267350000000"] [2026-09-02 10:28:36.727] [INFO ] ParamsZipBuilder: Merchant info for merchantid=667267350000000 - business_name=Shubham003, QR_USE_SSL=, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-09-02 10:28:36.728] [DEBUG] QUERY OK source="pos_terminal_data" db=0.4ms queue=0.1ms idle=43.7ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["26735914"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-09-02 10:28:36.729] [DEBUG] QUERY OK source="address" db=0.7ms idle=4.2ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [639] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-09-02 10:28:36.729] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="667267350000000" [2026-09-02 10:28:36.733] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-09-02 10:28:36.836] [DEBUG] QUERY OK db=99.4ms idle=8.1ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "0bbfe14a7574fe3d3f1cc316846ed88c01a5eedada4adbcffa7d67ad0f987f4d", 2052, 912, ~U[2026-09-02 10:28:36Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-09-02 10:28:36], ~N[2026-09-02 10:28:36]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-09-02 10:28:36.836] [INFO ] AutoPushService: Created push log 60539 for MF919 params.zip [2026-09-02 10:28:36.836] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4017/ota/98251226730001/params.zip", "requestId" => 2052, "type" => "tms_command", "version" => "1.0.0"} [2026-09-02 10:28:36.836] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-09-02 10:28:36.836] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-09-02 10:28:36.837] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms idle=107.7ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-09-02 10:28:36.842] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730001 at priv/ota/98251226730001/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-09-02 10:28:36.934] [DEBUG] QUERY OK db=87.5ms queue=2.4ms idle=8.1ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "39a7666d6d02c26a97bb9ad8c0e8255cfebbb87f4bd870db826ab97b29312b1c", 2116, 17947, ~U[2026-09-02 10:28:36Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-09-02 10:28:36], ~N[2026-09-02 10:28:36]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-09-02 10:28:36.936] [INFO ] AutoPushService: Created push log 60541 for MF919 l3config.zip (version: 1.0.1) [2026-09-02 10:28:36.936] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4017/ota/98251226730001/l3config.zip", "requestId" => 2116, "type" => "tms_command", "version" => "1.0.1"} [2026-09-02 10:28:36.936] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-09-02 10:28:36.936] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-09-02 10:28:36.940] [DEBUG] QUERY OK source="config_file_versions" db=2.7ms queue=0.5ms idle=99.9ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-09-02 10:28:36.941] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-09-02 10:28:36.947] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms queue=2.4ms idle=8.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-09-02 10:28:36.947] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730001 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-09-02 10:28:36.951] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-09-02 10:28:36.951] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 10:28:36.952] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 10:28:36.955] [DEBUG] QUERY OK source="config_file_versions" db=2.7ms idle=11.3ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-09-02 10:28:36.956] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-09-02 10:28:36.956] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-09-02 10:28:36.957] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=10.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:140 [2026-09-02 10:28:36.957] [INFO ] Terminal updated: 98251226730001 [2026-09-02 10:28:37.001] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=42.7ms idle=2.8ms UPDATE `tms_terminals` SET `status` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "3.8.7.3", "1.0.0", "1.0.1", "1.0.0", ~N[2026-09-02 10:28:36], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:164 [2026-09-02 10:28:37.005] [DEBUG] QUERY OK source="parameter_templates" db=2.5ms idle=17.2ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) ORDER BY p0.`updated_at` DESC LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_parameter_version/2, at: lib/tms_core/terminal_management/version_compliance_checker.ex:105 [2026-09-02 10:28:37.008] [DEBUG] QUERY OK source="config_file_versions" db=2.4ms idle=4.9ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-09-02 10:28:37.013] [DEBUG] QUERY OK source="config_file_versions" db=4.1ms idle=2.9ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-09-02 10:28:37.013] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-09-02 10:28:37.106] [DEBUG] QUERY OK source="parameter_push_logs" db=91.3ms queue=1.0ms idle=4.9ms SELECT TRUE FROM `parameter_push_logs` AS p0 WHERE ((((p0.`terminal_id` = ?) AND (p0.`config_type` = ?)) AND (p0.`inserted_at` >= ?)) AND p0.`status` IN ('pending','sent')) LIMIT 1 [33, "application", ~N[2026-09-02 09:58:37]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-09-02 10:28:37.108] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-09-02 10:28:37.108] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-09-02 10:28:37.111] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=2.0ms idle=95.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-09-02 10:28:37.113] [DEBUG] QUERY OK source="config_file_versions" db=1.6ms idle=5.8ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-09-02 10:28:37.114] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-09-02 10:28:37.115] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms idle=2.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:1184 [2026-09-02 10:28:37.206] [DEBUG] QUERY OK source="tms_terminals" db=48.7ms queue=42.0ms idle=2.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:28:37], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:174 [2026-09-02 10:28:37.210] [DEBUG] QUERY OK source="app_upgrade_device_statuses" db=0.6ms queue=1.2ms idle=92.6ms SELECT a0.`id`, a0.`config_id`, a0.`device_id`, a0.`device_sn`, a0.`vendor`, a0.`model`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`update_result`, a0.`status`, a0.`remark`, a0.`finish_time`, a0.`pushed_time`, a0.`retry_count`, a0.`inserted_at`, a0.`updated_at` FROM `app_upgrade_device_statuses` AS a0 WHERE ((a0.`device_sn` = ?) AND a0.`status` IN ('pending','pushed')) ["98251226730001"] ↳ TmsCore.TerminalManagement.AppUpgradeService.maybe_repush_for_device/1, at: lib/tms_core/terminal_management/app_upgrade_service.ex:148 [2026-09-02 10:28:37.254] [DEBUG] QUERY OK db=40.2ms queue=2.3ms idle=4.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-09-02T10:28:35Z", ~N[2026-09-02 10:28:37], ~N[2026-09-02 10:28:37]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:179 [2026-09-02 10:28:37.254] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 105803, oid: "organization_id", upload_time: "2026-09-02T10:28:35Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:28:37], updated_at: ~N[2026-09-02 10:28:37]} [2026-09-02 10:28:37.257] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-09-02T10:28:35Z", "value" => "online"} [2026-09-02 10:28:37.335] [DEBUG] QUERY OK db=77.5ms queue=0.1ms idle=47.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-09-02T10:28:35Z", "online", "status", 105803, ~N[2026-09-02 10:28:37], ~N[2026-09-02 10:28:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:28:37.336] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084280, itemkey: "status", value: "online", timestamp: "2026-09-02T10:28:35Z", message: "Terminal status update", status_log_id: 105803, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:28:37], updated_at: ~N[2026-09-02 10:28:37]}} [2026-09-02 10:28:37.336] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-09-02 10:28:37.337] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-09-02T10:28:35Z", "value" => "34"} [2026-09-02 10:28:37.380] [DEBUG] QUERY OK db=43.5ms idle=83.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-09-02T10:28:35Z", "34", "battery", 105803, ~N[2026-09-02 10:28:37], ~N[2026-09-02 10:28:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:28:37.381] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084283, itemkey: "battery", value: "34", timestamp: "2026-09-02T10:28:35Z", message: "Battery level", status_log_id: 105803, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:28:37], updated_at: ~N[2026-09-02 10:28:37]}} [2026-09-02 10:28:37.381] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-09-02T10:28:35Z", "value" => "online"} [2026-09-02 10:28:37.463] [DEBUG] QUERY OK db=81.2ms idle=46.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-09-02T10:28:35Z", "online", "network", 105803, ~N[2026-09-02 10:28:37], ~N[2026-09-02 10:28:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:28:37.463] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084286, itemkey: "network", value: "online", timestamp: "2026-09-02T10:28:35Z", message: "Network connectivity", status_log_id: 105803, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:28:37], updated_at: ~N[2026-09-02 10:28:37]}} [2026-09-02 10:28:37.463] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-09-02 10:28:37.464] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-09-02T10:28:35Z", "value" => "0"} [2026-09-02 10:28:37.563] [DEBUG] QUERY OK db=97.7ms idle=84.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-09-02T10:28:35Z", "0", "cpu", 105803, ~N[2026-09-02 10:28:37], ~N[2026-09-02 10:28:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:28:37.565] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084289, itemkey: "cpu", value: "0", timestamp: "2026-09-02T10:28:35Z", message: "CPU usage percentage", status_log_id: 105803, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:28:37], updated_at: ~N[2026-09-02 10:28:37]}} [2026-09-02 10:28:37.565] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-09-02T10:28:35Z", "value" => "1.0.0"} [2026-09-02 10:28:37.633] [DEBUG] QUERY OK db=65.9ms queue=0.1ms idle=102.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-09-02T10:28:35Z", "1.0.0", "parameter_config", 105803, ~N[2026-09-02 10:28:37], ~N[2026-09-02 10:28:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:28:37.633] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084292, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-09-02T10:28:35Z", message: "Current parameters version", status_log_id: 105803, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:28:37], updated_at: ~N[2026-09-02 10:28:37]}} [2026-09-02 10:28:37.634] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-09-02T10:28:35Z", "value" => "1.0.1"} [2026-09-02 10:28:37.701] [DEBUG] QUERY OK db=65.5ms queue=1.3ms idle=71.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-09-02T10:28:35Z", "1.0.1", "emv_config", 105803, ~N[2026-09-02 10:28:37], ~N[2026-09-02 10:28:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:28:37.702] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084295, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-09-02T10:28:35Z", message: "Current EMV config version", status_log_id: 105803, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:28:37], updated_at: ~N[2026-09-02 10:28:37]}} [2026-09-02 10:28:37.702] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-09-02T10:28:35Z", "value" => ""} [2026-09-02 10:28:37.772] [DEBUG] QUERY OK db=67.3ms queue=2.0ms idle=70.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-09-02T10:28:35Z", "keys_config", 105803, ~N[2026-09-02 10:28:37], ~N[2026-09-02 10:28:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:28:37.773] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084298, itemkey: "keys_config", value: nil, timestamp: "2026-09-02T10:28:35Z", message: "Current keys config version", status_log_id: 105803, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:28:37], updated_at: ~N[2026-09-02 10:28:37]}} [2026-09-02 10:28:37.774] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-09-02T10:28:35Z", "value" => "3.8.7.3"} [2026-09-02 10:28:37.828] [DEBUG] QUERY OK db=53.8ms idle=73.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-09-02T10:28:35Z", "3.8.7.3", "application", 105803, ~N[2026-09-02 10:28:37], ~N[2026-09-02 10:28:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:28:37.828] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084301, itemkey: "application", value: "3.8.7.3", timestamp: "2026-09-02T10:28:35Z", message: "Current application version", status_log_id: 105803, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:28:37], updated_at: ~N[2026-09-02 10:28:37]}} [2026-09-02 10:28:37.828] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-09-02T10:28:36Z"} [2026-09-02 10:28:37.832] [INFO ] Received device ACK from 98251226730001: oid= status=error [2026-09-02 10:28:37.833] [WARN ] Unhandled device ACK oid= from 98251226730001: %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-09-02T10:28:36Z"} [2026-09-02 10:28:37.833] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.0","requestId":"281634","status":"success","timestamp":1788344916345,"type":"tms_response"} [2026-09-02 10:28:37.833] [INFO ] Processing file download response for device 98251226730001, request_id: 281634 [2026-09-02 10:28:37.841] [DEBUG] QUERY OK source="file_download_logs" db=0.9ms queue=2.4ms idle=65.4ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["281634"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:28:37.841] [INFO ] No file download log for request_id 281634; response not attached to a push [2026-09-02 10:28:37.841] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:28:37.841815Z], response: %{"message" => "Already up to date: 1.0.0", "requestId" => "281634", "status" => "success", "timestamp" => 1788344916345, "type" => "tms_response"}, request_id: "281634", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:28:37.842] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-09-02T10:28:36Z"} [2026-09-02 10:28:37.842] [INFO ] Received device ACK from 98251226730001: oid= status=error [2026-09-02 10:28:37.842] [WARN ] Unhandled device ACK oid= from 98251226730001: %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-09-02T10:28:36Z"} [2026-09-02 10:28:37.842] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-09-02T10:28:36Z"} [2026-09-02 10:28:37.842] [INFO ] Received device ACK from 98251226730001: oid= status=error [2026-09-02 10:28:37.842] [WARN ] Unhandled device ACK oid= from 98251226730001: %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-09-02T10:28:36Z"} [2026-09-02 10:28:37.842] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.0","requestId":"2052","status":"success","timestamp":1788344916364,"type":"tms_response"} [2026-09-02 10:28:37.842] [INFO ] Processing file download response for device 98251226730001, request_id: 2052 [2026-09-02 10:28:37.843] [DEBUG] QUERY OK source="file_download_logs" db=0.5ms idle=14.9ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["2052"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:28:37.844] [INFO ] No file download log for request_id 2052; response not attached to a push [2026-09-02 10:28:37.844] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:28:37.844197Z], response: %{"message" => "Already up to date: 1.0.0", "requestId" => "2052", "status" => "success", "timestamp" => 1788344916364, "type" => "tms_response"}, request_id: "2052", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:28:37.844] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-09-02T10:28:36Z"} [2026-09-02 10:28:37.844] [INFO ] Received device ACK from 98251226730001: oid= status=error [2026-09-02 10:28:37.844] [WARN ] Unhandled device ACK oid= from 98251226730001: %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-09-02T10:28:36Z"} [2026-09-02 10:28:37.871] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.1","requestId":"249539","status":"success","timestamp":1788344916380,"type":"tms_response"} [2026-09-02 10:28:37.871] [INFO ] Processing file download response for device 98251226730001, request_id: 249539 [2026-09-02 10:28:37.874] [DEBUG] QUERY OK source="file_download_logs" db=3.0ms idle=29.9ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["249539"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:28:37.874] [INFO ] No file download log for request_id 249539; response not attached to a push [2026-09-02 10:28:37.875] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:28:37.875235Z], response: %{"message" => "Already up to date: 1.0.1", "requestId" => "249539", "status" => "success", "timestamp" => 1788344916380, "type" => "tms_response"}, request_id: "249539", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:28:37.876] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.1","requestId":"2116","status":"success","timestamp":1788344916419,"type":"tms_response"} [2026-09-02 10:28:37.876] [INFO ] Processing file download response for device 98251226730001, request_id: 2116 [2026-09-02 10:28:37.877] [DEBUG] QUERY OK source="file_download_logs" db=0.7ms idle=33.4ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["2116"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:28:37.877] [INFO ] No file download log for request_id 2116; response not attached to a push [2026-09-02 10:28:37.878] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:28:37.878081Z], response: %{"message" => "Already up to date: 1.0.1", "requestId" => "2116", "status" => "success", "timestamp" => 1788344916419, "type" => "tms_response"}, request_id: "2116", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:28:37.878] [WARN ] Unexpected async result [2026-09-02 10:28:37.878] [WARN ] Unexpected async result [2026-09-02 10:29:12.445] [INFO ] Performing scheduled filter cache refresh... [2026-09-02 10:29:12.447] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=293.8ms SELECT t0.`area`, t0.`vendor`, t0.`model` FROM `tms_terminals` AS t0 WHERE ((NOT (t0.`area` IS NULL) OR NOT (t0.`vendor` IS NULL)) OR NOT (t0.`model` IS NULL)) [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_terminal_filter_data/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:153 [2026-09-02 10:29:12.448] [DEBUG] QUERY OK source="filter_usage" db=0.8ms idle=127.4ms SELECT f0.`filter_type`, f0.`filter_value`, coalesce(sum(f0.`usage_count`), 0) FROM `filter_usage` AS f0 GROUP BY f0.`filter_type`, f0.`filter_value` [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_usage_statistics/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:190 [2026-09-02 10:29:12.448] [INFO ] Filter cache rebuilt: 0 areas, 5 vendors, 8 models [2026-09-02 10:29:12.633] [INFO ] Running offline device check... [2026-09-02 10:29:12.633] [INFO ] Starting offline device check... [2026-09-02 10:29:12.635] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms idle=186.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1234 [2026-09-02 10:29:12.637] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=188.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [1] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:29:12.639] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:29:12.640] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:29:12.641] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:29:12.642] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:29:12.643] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:29:12.644] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:29:12.645] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:29:12.646] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:29:12.648] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:29:12.652] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms queue=0.4ms idle=4.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:29:12.655] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms idle=4.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:29:12.659] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms queue=0.5ms idle=4.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:29:12.660] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=4.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:29:12.661] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=0.1ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:29:12.663] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.3ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:29:12.664] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:29:12.665] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:29:12.666] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:29:12.667] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:29:12.668] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:29:12.669] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:29:12.670] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:29:12.671] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:29:12.672] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:29:12.673] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.1ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:29:12.674] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:29:12.674] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:29:12.675] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:29:12.676] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:29:12.678] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:29:12.679] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:29:12.680] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:29:12.681] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:29:12.682] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:29:12.683] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:29:12.684] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:29:12.685] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:29:12.686] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:29:12.687] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:29:12.688] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:29:12.689] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:29:12.690] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:29:12.691] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:29:12.692] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:29:12.693] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:29:12.693] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:29:12.694] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.2ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:29:12.695] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:29:12.696] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:29:12.696] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:29:12.697] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:29:12.698] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [82] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:29:12.699] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [83] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:29:12.699] [INFO ] Offline device check completed. Found 50 offline devices, updated 0 statuses. [2026-09-02 10:29:12.699] [INFO ] Offline device check completed successfully [2026-09-02 10:30:16.534] [INFO ] Received status update for terminal 61250415798001 [2026-09-02 10:30:16.534] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61250415798001","vendor":"MoreFun","model":"SR600","uploadTime":"3800091-09-30T21:19:50Z","org.device":[{"itemkey":"status","value":"online","timestamp":"3800091-09-30T21:19:50Z","message":"Device Connected"}]} [2026-09-02 10:30:16.534] [INFO ] Decoded JSON: %{"model" => "SR600", "oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "status", "message" => "Device Connected", "timestamp" => "3800091-09-30T21:19:50Z", "value" => "online"}], "sn" => "61250415798001", "uploadTime" => "3800091-09-30T21:19:50Z", "vendor" => "MoreFun"} [2026-09-02 10:30:16.534] [INFO ] Extracted versions for 61250415798001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-09-02 10:30:16.534] [INFO ] Detected missing versions for 61250415798001, triggering auto-push [2026-09-02 10:30:16.534] [INFO ] AutoPushService: Triggering auto-push for 61250415798001 (MoreFun SR600) - missing version [2026-09-02 10:30:16.539] [DEBUG] QUERY OK source="parameter_templates" db=4.7ms idle=761.7ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["MoreFun", "SR600"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-09-02 10:30:16.541] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms idle=21.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-09-02 10:30:16.543] [DEBUG] QUERY OK source="parameter_template_values" db=0.8ms idle=2.2ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [7] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-09-02 10:30:16.654] [DEBUG] QUERY OK db=110.6ms idle=1.5ms INSERT INTO `parameter_push_logs` (`status`,`request_id`,`log_time`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", 2308, ~U[2026-09-02 10:30:16Z], 1, "parameter", "SR600", "MoreFun", %{}, "full", 7, "missing_version", "1.0.0", ~N[2026-09-02 10:30:16], ~N[2026-09-02 10:30:16]] ↳ TmsCore.TerminalManagement.AutoPushService.push_generic_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:235 [2026-09-02 10:30:16.654] [INFO ] AutoPushService: Created push log 60543 for parameters (template: 7) [2026-09-02 10:30:16.655] [INFO ] SR600 MQTT Command: %{"command" => "file_download", "merchant_config" => "true", "request_id" => 2308, "retry_count" => "3", "version" => "1.0.0"} [2026-09-02 10:30:16.655] [INFO ] AutoPushService: Sending parameter push to 61250415798001 on topic: /ota/pFppbioOCKlo5c8E/61250415798001/update [2026-09-02 10:30:16.655] [INFO ] AutoPushService: Parameter push sent successfully to 61250415798001 [2026-09-02 10:30:16.725] [DEBUG] QUERY OK db=69.2ms idle=112.7ms INSERT INTO `parameter_push_logs` (`status`,`request_id`,`log_time`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?) ["pending", 2372, ~U[2026-09-02 10:30:16Z], 1, "emv_config", "SR600", "MoreFun", "full", "missing_version", ~N[2026-09-02 10:30:16], ~N[2026-09-02 10:30:16]] ↳ TmsCore.TerminalManagement.AutoPushService.push_regular_config/5, at: lib/tms_core/terminal_management/auto_push_service.ex:427 [2026-09-02 10:30:16.725] [INFO ] AutoPushService: Created push log for emv_config [2026-09-02 10:30:16.726] [INFO ] SR600 MQTT Command: %{"command" => "file_download", "merchant_config" => "true", "request_id" => 2372, "retry_count" => "3"} [2026-09-02 10:30:16.726] [INFO ] AutoPushService: Sending emv_config push to 61250415798001 on topic: /ota/pFppbioOCKlo5c8E/61250415798001/update [2026-09-02 10:30:16.726] [INFO ] AutoPushService: emv_config push sent successfully to 61250415798001 [2026-09-02 10:30:16.728] [DEBUG] QUERY OK source="config_file_versions" db=2.0ms idle=72.5ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "SR600"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-09-02 10:30:16.730] [INFO ] KeysConfigService: Generating keys.json for 61250415798001 (SR600) [2026-09-02 10:30:16.732] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms idle=5.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-09-02 10:30:16.735] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 61250415798001 with params: %{"kekKcv" => "112233", "model" => "SR600", "serialNumber" => "61250415798001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-09-02 10:30:16.739] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-09-02 10:30:16.739] [ERROR] KeysConfigService: Failed to generate keys for 61250415798001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 10:30:16.740] [ERROR] AutoPushService: Failed to generate keys.json for 61250415798001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 10:30:16.856] [DEBUG] QUERY OK db=115.2ms idle=12.4ms INSERT INTO `parameter_push_logs` (`status`,`request_id`,`log_time`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?) ["pending", 5027, ~U[2026-09-02 10:30:16Z], 1, "application", "SR600", "MoreFun", "full", "missing_version", ~N[2026-09-02 10:30:16], ~N[2026-09-02 10:30:16]] ↳ TmsCore.TerminalManagement.AutoPushService.push_regular_config/5, at: lib/tms_core/terminal_management/auto_push_service.ex:427 [2026-09-02 10:30:16.856] [INFO ] AutoPushService: Created push log for application [2026-09-02 10:30:16.858] [INFO ] SR600 MQTT Command: %{"command" => "file_download", "merchant_config" => "true", "request_id" => 5027, "retry_count" => "3"} [2026-09-02 10:30:16.858] [INFO ] AutoPushService: Sending application push to 61250415798001 on topic: /ota/pFppbioOCKlo5c8E/61250415798001/update [2026-09-02 10:30:16.858] [INFO ] AutoPushService: application push sent successfully to 61250415798001 [2026-09-02 10:30:16.858] [INFO ] AutoPushService: Auto-push completed for 61250415798001 [2026-09-02 10:30:16.876] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms idle=142.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:140 [2026-09-02 10:30:16.876] [INFO ] Terminal updated: 61250415798001 [2026-09-02 10:30:16.891] [DEBUG] QUERY OK source="tms_terminals" db=14.2ms idle=20.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-09-02 10:30:16], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:164 [2026-09-02 10:30:16.891] [DEBUG] VersionComplianceChecker: 61250415798001 — all versions compliant [2026-09-02 10:30:16.900] [DEBUG] QUERY OK source="tms_terminals" db=3.1ms idle=21.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:1184 [2026-09-02 10:30:17.004] [DEBUG] QUERY OK source="tms_terminals" db=101.9ms idle=11.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:30:16], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:174 [2026-09-02 10:30:17.011] [DEBUG] QUERY OK source="app_upgrade_device_statuses" db=6.6ms idle=104.4ms SELECT a0.`id`, a0.`config_id`, a0.`device_id`, a0.`device_sn`, a0.`vendor`, a0.`model`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`update_result`, a0.`status`, a0.`remark`, a0.`finish_time`, a0.`pushed_time`, a0.`retry_count`, a0.`inserted_at`, a0.`updated_at` FROM `app_upgrade_device_statuses` AS a0 WHERE ((a0.`device_sn` = ?) AND a0.`status` IN ('pending','pushed')) ["61250415798001"] ↳ TmsCore.TerminalManagement.AppUpgradeService.maybe_repush_for_device/1, at: lib/tms_core/terminal_management/app_upgrade_service.ex:148 [2026-09-02 10:30:17.080] [DEBUG] QUERY OK db=65.8ms idle=10.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [1, "org-id-placeholder", "3800091-09-30T21:19:50Z", ~N[2026-09-02 10:30:17], ~N[2026-09-02 10:30:17]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:179 [2026-09-02 10:30:17.080] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 105805, oid: "org-id-placeholder", upload_time: "3800091-09-30T21:19:50Z", terminal_id: 1, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:30:17], updated_at: ~N[2026-09-02 10:30:17]} [2026-09-02 10:30:17.080] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Device Connected", "timestamp" => "3800091-09-30T21:19:50Z", "value" => "online"} [2026-09-02 10:30:17.170] [DEBUG] QUERY OK db=89.6ms idle=69.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Device Connected", "3800091-09-30T21:19:50Z", "online", "status", 105805, ~N[2026-09-02 10:30:17], ~N[2026-09-02 10:30:17]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:30:17.171] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084303, itemkey: "status", value: "online", timestamp: "3800091-09-30T21:19:50Z", message: "Device Connected", status_log_id: 105805, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:30:17], updated_at: ~N[2026-09-02 10:30:17]}} [2026-09-02 10:30:17.171] [INFO ] Setting terminal 61250415798001 status to 'online' from status itemkey [2026-09-02 10:30:17.171] [WARN ] Unexpected async result [2026-09-02 10:30:17.171] [WARN ] Unexpected async result [2026-09-02 10:30:17.171] [WARN ] Unexpected async result [2026-09-02 10:31:13.955] [INFO ] Received status update for terminal 98251226730001 [2026-09-02 10:31:13.955] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-09-02T10:31:13Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-09-02T10:31:13Z","value":"34"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-09-02T10:31:13Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-09-02T10:31:13Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-09-02T10:31:13Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-09-02T10:31:13Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-09-02T10:31:13Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-09-02T10:31:13Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-09-02T10:31:13Z","vendor":"MoreFun"} [2026-09-02 10:31:13.955] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-09-02T10:31:13Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-09-02T10:31:13Z", "value" => "34"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-09-02T10:31:13Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-09-02T10:31:13Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-09-02T10:31:13Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-09-02T10:31:13Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-09-02T10:31:13Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-09-02T10:31:13Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-09-02T10:31:13Z", "vendor" => "MoreFun"} [2026-09-02 10:31:13.956] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-09-02 10:31:13.956] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-09-02 10:31:13.956] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-09-02 10:31:13.959] [DEBUG] QUERY OK source="parameter_templates" db=2.4ms idle=652.4ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-09-02 10:31:13.960] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.7ms idle=25.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-09-02 10:31:13.962] [DEBUG] QUERY OK source="parameter_template_values" db=1.2ms idle=1.8ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-09-02 10:31:13.969] [DEBUG] QUERY OK source="parameter_definitions" db=1.9ms queue=0.8ms idle=6.2ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-09-02 10:31:13.978] [DEBUG] QUERY OK source="pos_terminal" db=1.8ms queue=0.9ms idle=13.0ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-09-02 10:31:14.011] [DEBUG] QUERY OK source="pos_merchant" db=33.2ms idle=8.5ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [350] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-09-02 10:31:14.014] [DEBUG] QUERY OK db=0.5ms queue=1.8ms idle=196.0ms SELECT COALESCE(JSON_UNQUOTE(JSON_EXTRACT(mc.settings, '$.BASE_MERCHANT_NAME')), '') as base_merchant_name, COALESCE(u.name, '') as user_name, COALESCE(um.softpos_uuid, '') as softpos_uuid, COALESCE(mc.settings, '{}') as settings FROM user_metadata um LEFT JOIN merchant_configuration mc ON mc.user_id = um.user_id LEFT JOIN users u ON u.id = um.user_id WHERE um.merchant_refrence_number = ? LIMIT 1 ["667267350000000"] [2026-09-02 10:31:14.014] [INFO ] ParamsZipBuilder: Merchant info for merchantid=667267350000000 - business_name=Shubham003, QR_USE_SSL=, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-09-02 10:31:14.016] [DEBUG] QUERY OK source="pos_terminal_data" db=1.5ms idle=36.5ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["26735914"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-09-02 10:31:14.017] [DEBUG] QUERY OK source="address" db=0.8ms idle=4.8ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [639] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-09-02 10:31:14.017] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="667267350000000" [2026-09-02 10:31:14.021] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-09-02 10:31:14.081] [DEBUG] QUERY OK db=58.6ms idle=6.2ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "2f9770e7955107300eb3acbc73654c38be5edd1a918e919677d5406b1f127198", 5187, 912, ~U[2026-09-02 10:31:14Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-09-02 10:31:14], ~N[2026-09-02 10:31:14]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-09-02 10:31:14.081] [INFO ] AutoPushService: Created push log 60551 for MF919 params.zip [2026-09-02 10:31:14.081] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4017/ota/98251226730001/params.zip", "requestId" => 5187, "type" => "tms_command", "version" => "1.0.0"} [2026-09-02 10:31:14.081] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-09-02 10:31:14.082] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-09-02 10:31:14.082] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms idle=65.3ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-09-02 10:31:14.086] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730001 at priv/ota/98251226730001/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-09-02 10:31:14.138] [DEBUG] QUERY OK db=51.2ms idle=6.2ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "071f2c206af886606eb018dea990097902baca1ecfd7a6d421ee91bb86fb7ba5", 5251, 17947, ~U[2026-09-02 10:31:14Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-09-02 10:31:14], ~N[2026-09-02 10:31:14]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-09-02 10:31:14.138] [INFO ] AutoPushService: Created push log 60553 for MF919 l3config.zip (version: 1.0.1) [2026-09-02 10:31:14.139] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4017/ota/98251226730001/l3config.zip", "requestId" => 5251, "type" => "tms_command", "version" => "1.0.1"} [2026-09-02 10:31:14.139] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-09-02 10:31:14.139] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-09-02 10:31:14.140] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms idle=56.4ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-09-02 10:31:14.140] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-09-02 10:31:14.141] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=2.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-09-02 10:31:14.141] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730001 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-09-02 10:31:14.144] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-09-02 10:31:14.145] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 10:31:14.145] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 10:31:14.148] [DEBUG] QUERY OK source="config_file_versions" db=2.1ms idle=4.9ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-09-02 10:31:14.148] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-09-02 10:31:14.149] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-09-02 10:31:14.153] [DEBUG] QUERY OK source="tms_terminals" db=4.3ms idle=7.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:140 [2026-09-02 10:31:14.153] [INFO ] Terminal updated: 98251226730001 [2026-09-02 10:31:14.219] [DEBUG] QUERY OK source="tms_terminals" db=24.1ms queue=40.8ms idle=6.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-09-02 10:31:14], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:164 [2026-09-02 10:31:14.220] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=65.8ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) ORDER BY p0.`updated_at` DESC LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_parameter_version/2, at: lib/tms_core/terminal_management/version_compliance_checker.ex:105 [2026-09-02 10:31:14.223] [DEBUG] QUERY OK source="config_file_versions" db=2.8ms idle=1.2ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-09-02 10:31:14.229] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms idle=8.6ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-09-02 10:31:14.230] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-09-02 10:31:14.290] [DEBUG] QUERY OK source="parameter_push_logs" db=59.3ms idle=7.1ms SELECT TRUE FROM `parameter_push_logs` AS p0 WHERE ((((p0.`terminal_id` = ?) AND (p0.`config_type` = ?)) AND (p0.`inserted_at` >= ?)) AND p0.`status` IN ('pending','sent')) LIMIT 1 [33, "application", ~N[2026-09-02 10:01:14]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-09-02 10:31:14.290] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-09-02 10:31:14.291] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-09-02 10:31:14.293] [DEBUG] QUERY OK source="tms_terminals" db=2.3ms idle=61.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-09-02 10:31:14.295] [DEBUG] QUERY OK source="config_file_versions" db=1.5ms idle=4.2ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-09-02 10:31:14.298] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-09-02 10:31:14.299] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=4.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:1184 [2026-09-02 10:31:14.378] [DEBUG] QUERY OK source="tms_terminals" db=78.9ms idle=3.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:31:14], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:174 [2026-09-02 10:31:14.379] [DEBUG] QUERY OK source="app_upgrade_device_statuses" db=0.5ms queue=0.3ms idle=79.6ms SELECT a0.`id`, a0.`config_id`, a0.`device_id`, a0.`device_sn`, a0.`vendor`, a0.`model`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`update_result`, a0.`status`, a0.`remark`, a0.`finish_time`, a0.`pushed_time`, a0.`retry_count`, a0.`inserted_at`, a0.`updated_at` FROM `app_upgrade_device_statuses` AS a0 WHERE ((a0.`device_sn` = ?) AND a0.`status` IN ('pending','pushed')) ["98251226730001"] ↳ TmsCore.TerminalManagement.AppUpgradeService.maybe_repush_for_device/1, at: lib/tms_core/terminal_management/app_upgrade_service.ex:148 [2026-09-02 10:31:14.453] [DEBUG] QUERY OK db=72.8ms queue=0.3ms idle=1.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-09-02T10:31:13Z", ~N[2026-09-02 10:31:14], ~N[2026-09-02 10:31:14]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:179 [2026-09-02 10:31:14.453] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 105809, oid: "organization_id", upload_time: "2026-09-02T10:31:13Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:31:14], updated_at: ~N[2026-09-02 10:31:14]} [2026-09-02 10:31:14.453] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-09-02T10:31:13Z", "value" => "online"} [2026-09-02 10:31:14.520] [DEBUG] QUERY OK db=65.7ms idle=74.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-09-02T10:31:13Z", "online", "status", 105809, ~N[2026-09-02 10:31:14], ~N[2026-09-02 10:31:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:31:14.520] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084305, itemkey: "status", value: "online", timestamp: "2026-09-02T10:31:13Z", message: "Terminal status update", status_log_id: 105809, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:31:14], updated_at: ~N[2026-09-02 10:31:14]}} [2026-09-02 10:31:14.520] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-09-02 10:31:14.521] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-09-02T10:31:13Z", "value" => "34"} [2026-09-02 10:31:14.600] [DEBUG] QUERY OK db=78.8ms queue=0.1ms idle=68.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-09-02T10:31:13Z", "34", "battery", 105809, ~N[2026-09-02 10:31:14], ~N[2026-09-02 10:31:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:31:14.600] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084308, itemkey: "battery", value: "34", timestamp: "2026-09-02T10:31:13Z", message: "Battery level", status_log_id: 105809, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:31:14], updated_at: ~N[2026-09-02 10:31:14]}} [2026-09-02 10:31:14.601] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-09-02T10:31:13Z", "value" => "online"} [2026-09-02 10:31:14.713] [DEBUG] QUERY OK db=111.9ms idle=81.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-09-02T10:31:13Z", "online", "network", 105809, ~N[2026-09-02 10:31:14], ~N[2026-09-02 10:31:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:31:14.713] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084311, itemkey: "network", value: "online", timestamp: "2026-09-02T10:31:13Z", message: "Network connectivity", status_log_id: 105809, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:31:14], updated_at: ~N[2026-09-02 10:31:14]}} [2026-09-02 10:31:14.713] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-09-02 10:31:14.713] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-09-02T10:31:13Z", "value" => "0"} [2026-09-02 10:31:14.784] [DEBUG] QUERY OK db=70.2ms queue=0.1ms idle=113.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-09-02T10:31:13Z", "0", "cpu", 105809, ~N[2026-09-02 10:31:14], ~N[2026-09-02 10:31:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:31:14.784] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084314, itemkey: "cpu", value: "0", timestamp: "2026-09-02T10:31:13Z", message: "CPU usage percentage", status_log_id: 105809, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:31:14], updated_at: ~N[2026-09-02 10:31:14]}} [2026-09-02 10:31:14.784] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-09-02T10:31:13Z", "value" => "1.0.0"} [2026-09-02 10:31:14.858] [DEBUG] QUERY OK db=73.6ms idle=71.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-09-02T10:31:13Z", "1.0.0", "parameter_config", 105809, ~N[2026-09-02 10:31:14], ~N[2026-09-02 10:31:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:31:14.859] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084317, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-09-02T10:31:13Z", message: "Current parameters version", status_log_id: 105809, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:31:14], updated_at: ~N[2026-09-02 10:31:14]}} [2026-09-02 10:31:14.859] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-09-02T10:31:13Z", "value" => "1.0.1"} [2026-09-02 10:31:14.927] [DEBUG] QUERY OK db=66.7ms queue=0.9ms idle=75.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-09-02T10:31:13Z", "1.0.1", "emv_config", 105809, ~N[2026-09-02 10:31:14], ~N[2026-09-02 10:31:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:31:14.927] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084319, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-09-02T10:31:13Z", message: "Current EMV config version", status_log_id: 105809, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:31:14], updated_at: ~N[2026-09-02 10:31:14]}} [2026-09-02 10:31:14.927] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-09-02T10:31:13Z", "value" => ""} [2026-09-02 10:31:14.980] [DEBUG] QUERY OK db=50.1ms queue=2.3ms idle=69.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-09-02T10:31:13Z", "keys_config", 105809, ~N[2026-09-02 10:31:14], ~N[2026-09-02 10:31:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:31:14.980] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084322, itemkey: "keys_config", value: nil, timestamp: "2026-09-02T10:31:13Z", message: "Current keys config version", status_log_id: 105809, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:31:14], updated_at: ~N[2026-09-02 10:31:14]}} [2026-09-02 10:31:14.981] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-09-02T10:31:13Z", "value" => "3.8.7.3"} [2026-09-02 10:31:15.034] [DEBUG] QUERY OK db=52.8ms idle=45.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-09-02T10:31:13Z", "3.8.7.3", "application", 105809, ~N[2026-09-02 10:31:14], ~N[2026-09-02 10:31:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:31:15.034] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084325, itemkey: "application", value: "3.8.7.3", timestamp: "2026-09-02T10:31:13Z", message: "Current application version", status_log_id: 105809, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:31:14], updated_at: ~N[2026-09-02 10:31:14]}} [2026-09-02 10:31:15.041] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-09-02T10:31:13Z"} [2026-09-02 10:31:15.043] [INFO ] Received device ACK from 98251226730001: oid= status=error [2026-09-02 10:31:15.045] [WARN ] Unhandled device ACK oid= from 98251226730001: %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-09-02T10:31:13Z"} [2026-09-02 10:31:15.045] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.0","requestId":"5187","status":"success","timestamp":1788345073568,"type":"tms_response"} [2026-09-02 10:31:15.045] [INFO ] Processing file download response for device 98251226730001, request_id: 5187 [2026-09-02 10:31:15.052] [DEBUG] QUERY OK source="file_download_logs" db=6.7ms idle=65.0ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["5187"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:31:15.052] [INFO ] No file download log for request_id 5187; response not attached to a push [2026-09-02 10:31:15.052] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:31:15.052671Z], response: %{"message" => "Already up to date: 1.0.0", "requestId" => "5187", "status" => "success", "timestamp" => 1788345073568, "type" => "tms_response"}, request_id: "5187", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:31:15.052] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-09-02T10:31:13Z"} [2026-09-02 10:31:15.052] [INFO ] Received device ACK from 98251226730001: oid= status=error [2026-09-02 10:31:15.053] [WARN ] Unhandled device ACK oid= from 98251226730001: %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-09-02T10:31:13Z"} [2026-09-02 10:31:15.053] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-09-02T10:31:13Z"} [2026-09-02 10:31:15.053] [INFO ] Received device ACK from 98251226730001: oid= status=error [2026-09-02 10:31:15.053] [WARN ] Unhandled device ACK oid= from 98251226730001: %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-09-02T10:31:13Z"} [2026-09-02 10:31:15.064] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-09-02T10:31:13Z"} [2026-09-02 10:31:15.068] [INFO ] Received device ACK from 98251226730001: oid= status=error [2026-09-02 10:31:15.069] [WARN ] Unhandled device ACK oid= from 98251226730001: %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-09-02T10:31:13Z"} [2026-09-02 10:31:15.069] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.0","requestId":"250179","status":"success","timestamp":1788345073589,"type":"tms_response"} [2026-09-02 10:31:15.069] [INFO ] Processing file download response for device 98251226730001, request_id: 250179 [2026-09-02 10:31:15.087] [DEBUG] QUERY OK source="file_download_logs" db=14.0ms idle=35.3ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["250179"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:31:15.087] [INFO ] No file download log for request_id 250179; response not attached to a push [2026-09-02 10:31:15.088] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:31:15.088100Z], response: %{"message" => "Already up to date: 1.0.0", "requestId" => "250179", "status" => "success", "timestamp" => 1788345073589, "type" => "tms_response"}, request_id: "250179", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:31:15.088] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.1","requestId":"5251","status":"success","timestamp":1788345073628,"type":"tms_response"} [2026-09-02 10:31:15.090] [INFO ] Processing file download response for device 98251226730001, request_id: 5251 [2026-09-02 10:31:15.096] [DEBUG] QUERY OK source="file_download_logs" db=4.5ms idle=38.6ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["5251"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:31:15.096] [INFO ] No file download log for request_id 5251; response not attached to a push [2026-09-02 10:31:15.096] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:31:15.096765Z], response: %{"message" => "Already up to date: 1.0.1", "requestId" => "5251", "status" => "success", "timestamp" => 1788345073628, "type" => "tms_response"}, request_id: "5251", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:31:15.096] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.1","requestId":"250243","status":"success","timestamp":1788345073648,"type":"tms_response"} [2026-09-02 10:31:15.097] [INFO ] Processing file download response for device 98251226730001, request_id: 250243 [2026-09-02 10:31:15.106] [DEBUG] QUERY OK source="file_download_logs" db=8.8ms queue=0.1ms idle=13.6ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["250243"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:31:15.106] [INFO ] No file download log for request_id 250243; response not attached to a push [2026-09-02 10:31:15.108] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:31:15.107568Z], response: %{"message" => "Already up to date: 1.0.1", "requestId" => "250243", "status" => "success", "timestamp" => 1788345073648, "type" => "tms_response"}, request_id: "250243", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:31:15.108] [WARN ] Unexpected async result [2026-09-02 10:31:15.108] [WARN ] Unexpected async result [2026-09-02 10:32:13.693] [INFO ] Received status update for terminal 98251226730001 [2026-09-02 10:32:13.693] [INFO ] Incoming JSON payload: {"oid":"5692a5f1-d139-4a94-8e2d-355d8041fa07","sn":"98251226730001","uploadTime":"2026-09-02T10:32:11Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-09-02T10:32:11Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-09-02T10:32:11Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-09-02T10:32:11Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-09-02T10:32:11Z"},{"itemkey":"ram_free_mb","value":"847","timestamp":"2026-09-02T10:32:11Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-09-02T10:32:11Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-09-02T10:32:11Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-09-02T10:32:11Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-09-02T10:32:11Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-09-02T10:32:11Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-09-02T10:32:11Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-09-02T10:32:11Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-09-02T10:32:11Z"},{"itemkey":"data_usage_mb","value":"39","timestamp":"2026-09-02T10:32:11Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-09-02T10:32:11Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-09-02 10:32:13.695] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "5692a5f1-d139-4a94-8e2d-355d8041fa07", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-09-02T10:32:11Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-09-02T10:32:11Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-09-02T10:32:11Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-09-02T10:32:11Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-09-02T10:32:11Z", "value" => "847"}, %{"itemkey" => "network_type", "timestamp" => "2026-09-02T10:32:11Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-09-02T10:32:11Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-09-02T10:32:11Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-09-02T10:32:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-09-02T10:32:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-09-02T10:32:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-09-02T10:32:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-09-02T10:32:11Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-09-02T10:32:11Z", "value" => "39"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-09-02T10:32:11Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-09-02T10:32:11Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-09-02T10:32:11Z", "vendor" => "morefun"} [2026-09-02 10:32:13.695] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-09-02 10:32:13.695] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-09-02 10:32:13.696] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-09-02 10:32:13.698] [DEBUG] QUERY OK source="parameter_templates" db=2.7ms idle=1085.6ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-09-02 10:32:13.703] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms queue=0.2ms idle=438.9ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-09-02 10:32:13.704] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-09-02 10:32:13.707] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=1.9ms idle=6.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:140 [2026-09-02 10:32:13.767] [DEBUG] QUERY OK source="tms_terminals" db=17.1ms queue=42.4ms idle=4.4ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-09-02 10:32:13], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-09-02 10:32:13.770] [INFO ] Terminal updated: 98251226730001 [2026-09-02 10:32:13.770] [INFO ] Event published: terminal_updated [2026-09-02 10:32:13.770] [DEBUG] Processing terminal event: terminal_updated [2026-09-02 10:32:13.770] [INFO ] Processing terminal_updated event for terminal 33 [2026-09-02 10:32:13.770] [INFO ] Changed fields: [:vendor, :model] [2026-09-02 10:32:13.771] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.6ms queue=0.4ms idle=63.0ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-09-02 10:32:13], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-09-02 10:32:13.775] [DEBUG] QUERY OK source="tms_terminals" db=3.1ms queue=0.1ms idle=4.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-09-02 10:32:13.778] [DEBUG] QUERY OK source="terminal_group_rules" db=0.6ms queue=0.1ms idle=2.6ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-09-02 10:32:13.778] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-09-02 10:32:13.844] [DEBUG] QUERY OK source="tms_terminals" db=31.2ms queue=41.0ms idle=0.3ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "kiosk_launcher", "morefun", nil, nil, nil, nil, ~N[2026-09-02 10:32:13], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:164 [2026-09-02 10:32:13.844] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-09-02 10:32:13.845] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=66.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:1184 [2026-09-02 10:32:13.921] [DEBUG] QUERY OK source="tms_terminals" db=34.6ms queue=40.8ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:32:13], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:174 [2026-09-02 10:32:13.922] [DEBUG] QUERY OK source="app_upgrade_device_statuses" db=0.4ms idle=76.7ms SELECT a0.`id`, a0.`config_id`, a0.`device_id`, a0.`device_sn`, a0.`vendor`, a0.`model`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`update_result`, a0.`status`, a0.`remark`, a0.`finish_time`, a0.`pushed_time`, a0.`retry_count`, a0.`inserted_at`, a0.`updated_at` FROM `app_upgrade_device_statuses` AS a0 WHERE ((a0.`device_sn` = ?) AND a0.`status` IN ('pending','pushed')) ["98251226730001"] ↳ TmsCore.TerminalManagement.AppUpgradeService.maybe_repush_for_device/1, at: lib/tms_core/terminal_management/app_upgrade_service.ex:148 [2026-09-02 10:32:13.973] [DEBUG] QUERY OK db=50.4ms idle=1.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "5692a5f1-d139-4a94-8e2d-355d8041fa07", "2026-09-02T10:32:11Z", ~N[2026-09-02 10:32:13], ~N[2026-09-02 10:32:13]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:179 [2026-09-02 10:32:13.973] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 105811, oid: "5692a5f1-d139-4a94-8e2d-355d8041fa07", upload_time: "2026-09-02T10:32:11Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:32:13], updated_at: ~N[2026-09-02 10:32:13]} [2026-09-02 10:32:13.973] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-09-02T10:32:11Z", "value" => "morefun"} [2026-09-02 10:32:14.072] [DEBUG] QUERY OK db=57.9ms queue=40.9ms idle=51.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:32:11Z", "morefun", "vendor", 105811, ~N[2026-09-02 10:32:13], ~N[2026-09-02 10:32:13]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:32:14.073] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084330, itemkey: "vendor", value: "morefun", timestamp: "2026-09-02T10:32:11Z", message: nil, status_log_id: 105811, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:32:13], updated_at: ~N[2026-09-02 10:32:13]}} [2026-09-02 10:32:14.073] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-09-02T10:32:11Z", "value" => "kiosk_launcher"} [2026-09-02 10:32:14.161] [DEBUG] QUERY OK db=86.8ms queue=0.5ms idle=100.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:32:11Z", "kiosk_launcher", "model", 105811, ~N[2026-09-02 10:32:14], ~N[2026-09-02 10:32:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:32:14.161] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084333, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-09-02T10:32:11Z", message: nil, status_log_id: 105811, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:32:14], updated_at: ~N[2026-09-02 10:32:14]}} [2026-09-02 10:32:14.162] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-09-02T10:32:11Z", "value" => "1.0"} [2026-09-02 10:32:14.227] [DEBUG] QUERY OK db=64.8ms idle=89.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:32:11Z", "1.0", "app_version", 105811, ~N[2026-09-02 10:32:14], ~N[2026-09-02 10:32:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:32:14.227] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084336, itemkey: "app_version", value: "1.0", timestamp: "2026-09-02T10:32:11Z", message: nil, status_log_id: 105811, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:32:14], updated_at: ~N[2026-09-02 10:32:14]}} [2026-09-02 10:32:14.228] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-09-02T10:32:11Z", "value" => "13"} [2026-09-02 10:32:14.279] [DEBUG] QUERY OK db=51.4ms idle=66.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:32:11Z", "13", "android_version", 105811, ~N[2026-09-02 10:32:14], ~N[2026-09-02 10:32:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:32:14.280] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084339, itemkey: "android_version", value: "13", timestamp: "2026-09-02T10:32:11Z", message: nil, status_log_id: 105811, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:32:14], updated_at: ~N[2026-09-02 10:32:14]}} [2026-09-02 10:32:14.280] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-09-02T10:32:11Z", "value" => "847"} [2026-09-02 10:32:14.323] [DEBUG] QUERY OK db=43.0ms idle=14.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:32:11Z", "847", "ram_free_mb", 105811, ~N[2026-09-02 10:32:14], ~N[2026-09-02 10:32:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:32:14.324] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084342, itemkey: "ram_free_mb", value: "847", timestamp: "2026-09-02T10:32:11Z", message: nil, status_log_id: 105811, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:32:14], updated_at: ~N[2026-09-02 10:32:14]}} [2026-09-02 10:32:14.324] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-09-02T10:32:11Z", "value" => "WIFI"} [2026-09-02 10:32:14.384] [DEBUG] QUERY OK db=59.9ms idle=44.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:32:11Z", "WIFI", "network_type", 105811, ~N[2026-09-02 10:32:14], ~N[2026-09-02 10:32:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:32:14.384] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084344, itemkey: "network_type", value: "WIFI", timestamp: "2026-09-02T10:32:11Z", message: nil, status_log_id: 105811, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:32:14], updated_at: ~N[2026-09-02 10:32:14]}} [2026-09-02 10:32:14.384] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-09-02T10:32:11Z", "value" => "true"} [2026-09-02 10:32:14.471] [DEBUG] QUERY OK db=86.5ms idle=61.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:32:11Z", "true", "kiosk_active", 105811, ~N[2026-09-02 10:32:14], ~N[2026-09-02 10:32:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:32:14.471] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084347, itemkey: "kiosk_active", value: "true", timestamp: "2026-09-02T10:32:11Z", message: nil, status_log_id: 105811, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:32:14], updated_at: ~N[2026-09-02 10:32:14]}} [2026-09-02 10:32:14.472] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-09-02T10:32:11Z", "value" => ""} [2026-09-02 10:32:14.521] [DEBUG] QUERY OK db=48.7ms idle=88.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-09-02T10:32:11Z", "sim_operator", 105811, ~N[2026-09-02 10:32:14], ~N[2026-09-02 10:32:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:32:14.521] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084350, itemkey: "sim_operator", value: nil, timestamp: "2026-09-02T10:32:11Z", message: nil, status_log_id: 105811, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:32:14], updated_at: ~N[2026-09-02 10:32:14]}} [2026-09-02 10:32:14.521] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-09-02T10:32:11Z", "value" => "UNKNOWN"} [2026-09-02 10:32:14.604] [DEBUG] QUERY OK db=82.8ms idle=50.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:32:11Z", "UNKNOWN", "sim_number", 105811, ~N[2026-09-02 10:32:14], ~N[2026-09-02 10:32:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:32:14.606] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084353, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-09-02T10:32:11Z", message: nil, status_log_id: 105811, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:32:14], updated_at: ~N[2026-09-02 10:32:14]}} [2026-09-02 10:32:14.606] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-09-02T10:32:11Z", "value" => "UNKNOWN"} [2026-09-02 10:32:14.669] [DEBUG] QUERY OK db=61.8ms idle=85.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:32:11Z", "UNKNOWN", "sim_iccid", 105811, ~N[2026-09-02 10:32:14], ~N[2026-09-02 10:32:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:32:14.669] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084356, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-09-02T10:32:11Z", message: nil, status_log_id: 105811, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:32:14], updated_at: ~N[2026-09-02 10:32:14]}} [2026-09-02 10:32:14.669] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-09-02T10:32:11Z", "value" => "UNKNOWN"} [2026-09-02 10:32:14.758] [DEBUG] QUERY OK db=88.3ms idle=65.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:32:11Z", "UNKNOWN", "sim_imsi", 105811, ~N[2026-09-02 10:32:14], ~N[2026-09-02 10:32:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:32:14.758] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084359, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-09-02T10:32:11Z", message: nil, status_log_id: 105811, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:32:14], updated_at: ~N[2026-09-02 10:32:14]}} [2026-09-02 10:32:14.759] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-09-02T10:32:11Z", "value" => "UNKNOWN"} [2026-09-02 10:32:14.840] [DEBUG] QUERY OK db=81.3ms queue=0.1ms idle=90.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:32:11Z", "UNKNOWN", "sim_iccid2", 105811, ~N[2026-09-02 10:32:14], ~N[2026-09-02 10:32:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:32:14.841] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084361, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-09-02T10:32:11Z", message: nil, status_log_id: 105811, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:32:14], updated_at: ~N[2026-09-02 10:32:14]}} [2026-09-02 10:32:14.841] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-09-02T10:32:11Z", "value" => "UNKNOWN"} [2026-09-02 10:32:14.906] [DEBUG] QUERY OK db=65.1ms idle=82.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:32:11Z", "UNKNOWN", "sim_imsi2", 105811, ~N[2026-09-02 10:32:14], ~N[2026-09-02 10:32:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:32:14.907] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084364, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-09-02T10:32:11Z", message: nil, status_log_id: 105811, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:32:14], updated_at: ~N[2026-09-02 10:32:14]}} [2026-09-02 10:32:14.907] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-09-02T10:32:11Z", "value" => "39"} [2026-09-02 10:32:15.011] [DEBUG] QUERY OK db=103.9ms idle=66.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:32:11Z", "39", "data_usage_mb", 105811, ~N[2026-09-02 10:32:14], ~N[2026-09-02 10:32:14]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:32:15.012] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084367, itemkey: "data_usage_mb", value: "39", timestamp: "2026-09-02T10:32:11Z", message: nil, status_log_id: 105811, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:32:14], updated_at: ~N[2026-09-02 10:32:14]}} [2026-09-02 10:32:15.012] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-09-02T10:32:11Z", "value" => "0"} [2026-09-02 10:32:15.056] [DEBUG] QUERY OK db=43.7ms idle=106.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:32:11Z", "0", "mobile_data_mb", 105811, ~N[2026-09-02 10:32:15], ~N[2026-09-02 10:32:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:32:15.057] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084370, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-09-02T10:32:11Z", message: nil, status_log_id: 105811, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:32:15], updated_at: ~N[2026-09-02 10:32:15]}} [2026-09-02 10:32:15.058] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-09-02T10:32:11Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-09-02 10:32:15.165] [DEBUG] QUERY OK db=104.0ms queue=0.3ms idle=49.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:32:11Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 105811, ~N[2026-09-02 10:32:15], ~N[2026-09-02 10:32:15]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:32:15.166] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084373, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-09-02T10:32:11Z", message: nil, status_log_id: 105811, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:32:15], updated_at: ~N[2026-09-02 10:32:15]}} [2026-09-02 10:33:32.409] [INFO ] Received status update for terminal 98251226730001 [2026-09-02 10:33:32.409] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-09-02T10:33:31Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-09-02T10:33:31Z","value":"34"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-09-02T10:33:31Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-09-02T10:33:31Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-09-02T10:33:31Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-09-02T10:33:31Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-09-02T10:33:31Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-09-02T10:33:31Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-09-02T10:33:31Z","vendor":"MoreFun"} [2026-09-02 10:33:32.410] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-09-02T10:33:31Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-09-02T10:33:31Z", "value" => "34"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-09-02T10:33:31Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-09-02T10:33:31Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-09-02T10:33:31Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-09-02T10:33:31Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-09-02T10:33:31Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-09-02T10:33:31Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-09-02T10:33:31Z", "vendor" => "MoreFun"} [2026-09-02 10:33:32.410] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-09-02 10:33:32.410] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-09-02 10:33:32.410] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-09-02 10:33:32.412] [DEBUG] QUERY OK source="parameter_templates" db=1.2ms idle=767.4ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-09-02 10:33:32.413] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=515.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-09-02 10:33:32.415] [DEBUG] QUERY OK source="parameter_template_values" db=1.9ms idle=1.0ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-09-02 10:33:32.421] [DEBUG] QUERY OK source="parameter_definitions" db=3.3ms queue=2.4ms idle=2.5ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-09-02 10:33:32.423] [DEBUG] QUERY OK source="pos_terminal" db=1.7ms idle=6.7ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-09-02 10:33:32.463] [DEBUG] QUERY OK source="pos_merchant" db=38.7ms idle=2.5ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [350] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-09-02 10:33:32.464] [DEBUG] QUERY OK db=0.7ms queue=0.6ms idle=628.0ms SELECT COALESCE(JSON_UNQUOTE(JSON_EXTRACT(mc.settings, '$.BASE_MERCHANT_NAME')), '') as base_merchant_name, COALESCE(u.name, '') as user_name, COALESCE(um.softpos_uuid, '') as softpos_uuid, COALESCE(mc.settings, '{}') as settings FROM user_metadata um LEFT JOIN merchant_configuration mc ON mc.user_id = um.user_id LEFT JOIN users u ON u.id = um.user_id WHERE um.merchant_refrence_number = ? LIMIT 1 ["667267350000000"] [2026-09-02 10:33:32.464] [INFO ] ParamsZipBuilder: Merchant info for merchantid=667267350000000 - business_name=Shubham003, QR_USE_SSL=, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-09-02 10:33:32.466] [DEBUG] QUERY OK source="pos_terminal_data" db=0.5ms queue=0.9ms idle=40.9ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["26735914"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-09-02 10:33:32.467] [DEBUG] QUERY OK source="address" db=0.5ms idle=4.0ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [639] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-09-02 10:33:32.467] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="667267350000000" [2026-09-02 10:33:32.509] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-09-02 10:33:32.636] [DEBUG] QUERY OK db=126.5ms idle=43.5ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "91fb99c23380a8e64cb962185214df2fce99ec8456caa8d465cdd8a4cf545780", 5667, 912, ~U[2026-09-02 10:33:32Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-09-02 10:33:32], ~N[2026-09-02 10:33:32]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-09-02 10:33:32.636] [INFO ] AutoPushService: Created push log 60555 for MF919 params.zip [2026-09-02 10:33:32.637] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4017/ota/98251226730001/params.zip", "requestId" => 5667, "type" => "tms_command", "version" => "1.0.0"} [2026-09-02 10:33:32.637] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-09-02 10:33:32.637] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-09-02 10:33:32.640] [DEBUG] QUERY OK source="config_file_versions" db=1.4ms idle=170.3ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-09-02 10:33:32.649] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730001 at priv/ota/98251226730001/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-09-02 10:33:32.722] [DEBUG] QUERY OK db=70.1ms idle=13.2ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "4a8d611146d31251bebb6e01400a574a6415a36c9b3714f0f4dae323a3a7bc96", 2564, 17947, ~U[2026-09-02 10:33:32Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-09-02 10:33:32], ~N[2026-09-02 10:33:32]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-09-02 10:33:32.723] [INFO ] AutoPushService: Created push log 60558 for MF919 l3config.zip (version: 1.0.1) [2026-09-02 10:33:32.723] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4017/ota/98251226730001/l3config.zip", "requestId" => 2564, "type" => "tms_command", "version" => "1.0.1"} [2026-09-02 10:33:32.723] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-09-02 10:33:32.723] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-09-02 10:33:32.725] [DEBUG] QUERY OK source="config_file_versions" db=1.1ms idle=68.5ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-09-02 10:33:32.725] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-09-02 10:33:32.728] [DEBUG] QUERY OK source="tms_terminals" db=2.0ms idle=3.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-09-02 10:33:32.728] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730001 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-09-02 10:33:32.730] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-09-02 10:33:32.730] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 10:33:32.731] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 10:33:32.732] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms queue=0.1ms idle=6.8ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-09-02 10:33:32.733] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-09-02 10:33:32.733] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-09-02 10:33:32.734] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=4.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:140 [2026-09-02 10:33:32.734] [INFO ] Terminal updated: 98251226730001 [2026-09-02 10:33:32.734] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=1.8ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) ORDER BY p0.`updated_at` DESC LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_parameter_version/2, at: lib/tms_core/terminal_management/version_compliance_checker.ex:105 [2026-09-02 10:33:32.735] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms idle=1.0ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-09-02 10:33:32.737] [DEBUG] QUERY OK source="config_file_versions" db=1.6ms idle=1.1ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-09-02 10:33:32.737] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-09-02 10:33:32.772] [DEBUG] QUERY OK source="parameter_push_logs" db=33.4ms idle=2.6ms SELECT TRUE FROM `parameter_push_logs` AS p0 WHERE ((((p0.`terminal_id` = ?) AND (p0.`config_type` = ?)) AND (p0.`inserted_at` >= ?)) AND p0.`status` IN ('pending','sent')) LIMIT 1 [33, "application", ~N[2026-09-02 10:03:32]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-09-02 10:33:32.772] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-09-02 10:33:32.772] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-09-02 10:33:32.773] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.1ms idle=34.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-09-02 10:33:32.774] [DEBUG] QUERY OK source="config_file_versions" db=1.1ms idle=1.7ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-09-02 10:33:32.776] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-09-02 10:33:32.777] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=2.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:1184 [2026-09-02 10:33:32.878] [DEBUG] QUERY OK source="tms_terminals" db=100.2ms queue=0.9ms idle=2.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:33:32], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:174 [2026-09-02 10:33:32.880] [DEBUG] QUERY OK source="app_upgrade_device_statuses" db=1.3ms queue=0.1ms idle=102.0ms SELECT a0.`id`, a0.`config_id`, a0.`device_id`, a0.`device_sn`, a0.`vendor`, a0.`model`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`update_result`, a0.`status`, a0.`remark`, a0.`finish_time`, a0.`pushed_time`, a0.`retry_count`, a0.`inserted_at`, a0.`updated_at` FROM `app_upgrade_device_statuses` AS a0 WHERE ((a0.`device_sn` = ?) AND a0.`status` IN ('pending','pushed')) ["98251226730001"] ↳ TmsCore.TerminalManagement.AppUpgradeService.maybe_repush_for_device/1, at: lib/tms_core/terminal_management/app_upgrade_service.ex:148 [2026-09-02 10:33:33.001] [DEBUG] QUERY OK db=120.7ms idle=2.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-09-02T10:33:31Z", ~N[2026-09-02 10:33:32], ~N[2026-09-02 10:33:32]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:179 [2026-09-02 10:33:33.002] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 105813, oid: "organization_id", upload_time: "2026-09-02T10:33:31Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:33:32], updated_at: ~N[2026-09-02 10:33:32]} [2026-09-02 10:33:33.002] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-09-02T10:33:31Z", "value" => "online"} [2026-09-02 10:33:33.076] [DEBUG] QUERY OK db=74.0ms idle=121.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-09-02T10:33:31Z", "online", "status", 105813, ~N[2026-09-02 10:33:33], ~N[2026-09-02 10:33:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:33:33.076] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084377, itemkey: "status", value: "online", timestamp: "2026-09-02T10:33:31Z", message: "Terminal status update", status_log_id: 105813, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:33:33], updated_at: ~N[2026-09-02 10:33:33]}} [2026-09-02 10:33:33.076] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-09-02 10:33:33.129] [DEBUG] QUERY OK source="tms_terminals" db=52.3ms queue=0.1ms idle=75.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:33:33], 33] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:203 [2026-09-02 10:33:33.129] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-09-02T10:33:31Z", "value" => "34"} [2026-09-02 10:33:33.189] [DEBUG] QUERY OK db=59.4ms idle=53.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-09-02T10:33:31Z", "34", "battery", 105813, ~N[2026-09-02 10:33:33], ~N[2026-09-02 10:33:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:33:33.189] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084382, itemkey: "battery", value: "34", timestamp: "2026-09-02T10:33:31Z", message: "Battery level", status_log_id: 105813, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:33:33], updated_at: ~N[2026-09-02 10:33:33]}} [2026-09-02 10:33:33.190] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-09-02T10:33:31Z", "value" => "online"} [2026-09-02 10:33:33.258] [DEBUG] QUERY OK db=68.5ms idle=60.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-09-02T10:33:31Z", "online", "network", 105813, ~N[2026-09-02 10:33:33], ~N[2026-09-02 10:33:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:33:33.259] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084385, itemkey: "network", value: "online", timestamp: "2026-09-02T10:33:31Z", message: "Network connectivity", status_log_id: 105813, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:33:33], updated_at: ~N[2026-09-02 10:33:33]}} [2026-09-02 10:33:33.259] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-09-02 10:33:33.260] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.5ms idle=69.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:33:33], 33] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:203 [2026-09-02 10:33:33.260] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-09-02T10:33:31Z", "value" => "0"} [2026-09-02 10:33:33.317] [DEBUG] QUERY OK db=56.8ms idle=2.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-09-02T10:33:31Z", "0", "cpu", 105813, ~N[2026-09-02 10:33:33], ~N[2026-09-02 10:33:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:33:33.318] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084388, itemkey: "cpu", value: "0", timestamp: "2026-09-02T10:33:31Z", message: "CPU usage percentage", status_log_id: 105813, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:33:33], updated_at: ~N[2026-09-02 10:33:33]}} [2026-09-02 10:33:33.318] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-09-02T10:33:31Z", "value" => "1.0.0"} [2026-09-02 10:33:33.365] [DEBUG] QUERY OK db=45.9ms idle=58.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-09-02T10:33:31Z", "1.0.0", "parameter_config", 105813, ~N[2026-09-02 10:33:33], ~N[2026-09-02 10:33:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:33:33.365] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084391, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-09-02T10:33:31Z", message: "Current parameters version", status_log_id: 105813, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:33:33], updated_at: ~N[2026-09-02 10:33:33]}} [2026-09-02 10:33:33.365] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-09-02T10:33:31Z", "value" => "1.0.1"} [2026-09-02 10:33:33.469] [DEBUG] QUERY OK db=103.8ms idle=48.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-09-02T10:33:31Z", "1.0.1", "emv_config", 105813, ~N[2026-09-02 10:33:33], ~N[2026-09-02 10:33:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:33:33.470] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084394, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-09-02T10:33:31Z", message: "Current EMV config version", status_log_id: 105813, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:33:33], updated_at: ~N[2026-09-02 10:33:33]}} [2026-09-02 10:33:33.470] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-09-02T10:33:31Z", "value" => ""} [2026-09-02 10:33:33.512] [DEBUG] QUERY OK db=40.5ms queue=1.3ms idle=105.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-09-02T10:33:31Z", "keys_config", 105813, ~N[2026-09-02 10:33:33], ~N[2026-09-02 10:33:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:33:33.513] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084397, itemkey: "keys_config", value: nil, timestamp: "2026-09-02T10:33:31Z", message: "Current keys config version", status_log_id: 105813, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:33:33], updated_at: ~N[2026-09-02 10:33:33]}} [2026-09-02 10:33:33.513] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-09-02T10:33:31Z", "value" => "3.8.7.3"} [2026-09-02 10:33:33.572] [DEBUG] QUERY OK db=59.0ms idle=43.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-09-02T10:33:31Z", "3.8.7.3", "application", 105813, ~N[2026-09-02 10:33:33], ~N[2026-09-02 10:33:33]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:33:33.572] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084400, itemkey: "application", value: "3.8.7.3", timestamp: "2026-09-02T10:33:31Z", message: "Current application version", status_log_id: 105813, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:33:33], updated_at: ~N[2026-09-02 10:33:33]}} [2026-09-02 10:33:33.573] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=60.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:33:33], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:233 [2026-09-02 10:33:33.574] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-09-02T10:33:32Z"} [2026-09-02 10:33:33.574] [INFO ] Received device ACK from 98251226730001: oid= status=error [2026-09-02 10:33:33.574] [WARN ] Unhandled device ACK oid= from 98251226730001: %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-09-02T10:33:32Z"} [2026-09-02 10:33:33.575] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.0","requestId":"5667","status":"success","timestamp":1788345212123,"type":"tms_response"} [2026-09-02 10:33:33.575] [INFO ] Processing file download response for device 98251226730001, request_id: 5667 [2026-09-02 10:33:33.576] [DEBUG] QUERY OK source="file_download_logs" db=0.6ms idle=2.8ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["5667"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:33:33.576] [INFO ] No file download log for request_id 5667; response not attached to a push [2026-09-02 10:33:33.576] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:33:33.576266Z], response: %{"message" => "Already up to date: 1.0.0", "requestId" => "5667", "status" => "success", "timestamp" => 1788345212123, "type" => "tms_response"}, request_id: "5667", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:33:33.576] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-09-02T10:33:32Z"} [2026-09-02 10:33:33.576] [INFO ] Received device ACK from 98251226730001: oid= status=error [2026-09-02 10:33:33.577] [WARN ] Unhandled device ACK oid= from 98251226730001: %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-09-02T10:33:32Z"} [2026-09-02 10:33:33.577] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-09-02T10:33:32Z"} [2026-09-02 10:33:33.577] [INFO ] Received device ACK from 98251226730001: oid= status=error [2026-09-02 10:33:33.577] [WARN ] Unhandled device ACK oid= from 98251226730001: %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-09-02T10:33:32Z"} [2026-09-02 10:33:33.577] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-09-02T10:33:32Z"} [2026-09-02 10:33:33.577] [INFO ] Received device ACK from 98251226730001: oid= status=error [2026-09-02 10:33:33.577] [WARN ] Unhandled device ACK oid= from 98251226730001: %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-09-02T10:33:32Z"} [2026-09-02 10:33:33.577] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.0","requestId":"101093","status":"success","timestamp":1788345212143,"type":"tms_response"} [2026-09-02 10:33:33.577] [INFO ] Processing file download response for device 98251226730001, request_id: 101093 [2026-09-02 10:33:33.578] [DEBUG] QUERY OK source="file_download_logs" db=0.4ms queue=0.3ms idle=4.1ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["101093"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:33:33.578] [INFO ] No file download log for request_id 101093; response not attached to a push [2026-09-02 10:33:33.579] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:33:33.578968Z], response: %{"message" => "Already up to date: 1.0.0", "requestId" => "101093", "status" => "success", "timestamp" => 1788345212143, "type" => "tms_response"}, request_id: "101093", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:33:33.579] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.1","requestId":"101157","status":"success","timestamp":1788345212182,"type":"tms_response"} [2026-09-02 10:33:33.579] [INFO ] Processing file download response for device 98251226730001, request_id: 101157 [2026-09-02 10:33:33.581] [DEBUG] QUERY OK source="file_download_logs" db=0.6ms queue=0.2ms idle=4.1ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["101157"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:33:33.581] [INFO ] No file download log for request_id 101157; response not attached to a push [2026-09-02 10:33:33.581] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:33:33.581598Z], response: %{"message" => "Already up to date: 1.0.1", "requestId" => "101157", "status" => "success", "timestamp" => 1788345212182, "type" => "tms_response"}, request_id: "101157", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:33:33.581] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.1","requestId":"2564","status":"success","timestamp":1788345212202,"type":"tms_response"} [2026-09-02 10:33:33.582] [INFO ] Processing file download response for device 98251226730001, request_id: 2564 [2026-09-02 10:33:33.583] [DEBUG] QUERY OK source="file_download_logs" db=0.3ms idle=3.9ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["2564"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:33:33.583] [INFO ] No file download log for request_id 2564; response not attached to a push [2026-09-02 10:33:33.583] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:33:33.583355Z], response: %{"message" => "Already up to date: 1.0.1", "requestId" => "2564", "status" => "success", "timestamp" => 1788345212202, "type" => "tms_response"}, request_id: "2564", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:33:33.583] [WARN ] Unexpected async result [2026-09-02 10:33:33.583] [WARN ] Unexpected async result [2026-09-02 10:33:55.191] [DEBUG] MOUNT PlatformWeb.SettlementLive.MisApproval Parameters: %{} Session: %{"_csrf_token" => "YeYg4ja_TxPQt2mrMADPt56F", "live_socket_id" => "users_sessions:1SCMkuUViXFyTH5BPBDsb34g_qe7I7Ttdm5i6LAnpjM=", "user_token" => <<213, 32, 140, 146, 229, 21, 137, 113, 114, 76, 126, 65, 60, 16, 236, 111, 126, 32, 254, 167, 187, 35, 180, 237, 118, 110, 98, 232, 176, 39, 166, 51>>} [2026-09-02 10:33:55.192] [DEBUG] QUERY OK source="users_tokens" db=0.9ms idle=1440.7ms SELECT u1.`id`, u1.`email`, u1.`hashed_password`, u1.`confirmed_at`, u1.`role`, u1.`name`, u1.`first_name`, u1.`last_name`, u1.`data`, u1.`inserted_at`, u1.`updated_at` FROM `users_tokens` AS u0 INNER JOIN `users` AS u1 ON u1.`id` = u0.`user_id` WHERE ((u0.`token` = ?) AND (u0.`context` = ?)) AND (u0.`inserted_at` > date_add(?, INTERVAL -(60) day)) [<<213, 32, 140, 146, 229, 21, 137, 113, 114, 76, 126, 65, 60, 16, 236, 111, 126, 32, 254, 167, 187, 35, 180, 237, 118, 110, 98, 232, 176, 39, 166, 51>>, "session", ~U[2026-09-02 10:33:55.191552Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-09-02 10:33:55.194] [DEBUG] QUERY OK source="settlement_mis" db=1.9ms idle=467.4ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 ORDER BY s0.`mis_date` DESC LIMIT 100 [] ↳ PlatformWeb.SettlementLive.MisApproval.load_mis_rows/1, at: lib/platform_web/live/settlement_live/mis_approval.ex:505 [2026-09-02 10:33:55.196] [DEBUG] Replied in 5ms [2026-09-02 10:33:57.822] [DEBUG] HANDLE EVENT "mis_row_clicked" in PlatformWeb.SettlementLive.MisApproval Parameters: %{"id" => 326} [2026-09-02 10:33:57.822] [DEBUG] QUERY OK source="settlement_mis" db=0.6ms idle=924.8ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 WHERE (s0.`id` = ?) [326] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:284 [2026-09-02 10:33:57.824] [DEBUG] QUERY OK source="settlement_mis_items" db=0.7ms queue=0.2ms idle=88.3ms SELECT s0.`merchant_mid`, s0.`merchant_id`, MAX(s0.`merchant_name`), sum(s0.`transaction_count`), sum(s0.`total_gross_amount`), sum(s0.`total_mdr_amount`), sum(s0.`total_vat_amount`), sum(s0.`total_interchange_fee`), sum(s0.`net_payable`), GROUP_CONCAT(DISTINCT s0.`scheme_name` SEPARATOR ', '), GROUP_CONCAT(DISTINCT s0.`card_type_code` SEPARATOR ', ') FROM `settlement_mis_items` AS s0 WHERE (s0.`settlement_mis_id` = ?) GROUP BY s0.`merchant_mid`, s0.`merchant_id` [326] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:285 [2026-09-02 10:33:57.825] [DEBUG] QUERY OK source="merchant_adjustments" db=1.0ms queue=0.1ms idle=1.4ms SELECT m0.`id`, m0.`merchant_mid`, m0.`merchant_name`, m0.`adjustment_date`, m0.`debit_credit`, m0.`amount`, m0.`currency`, m0.`adjustment_type`, m0.`description`, m0.`settlement_mis_id`, m0.`status`, m0.`applied_at`, m0.`cancelled_at`, m0.`cancel_reason`, m0.`approval_status`, m0.`level1_reviewed_by`, m0.`level1_reviewed_at`, m0.`level2_approved_by`, m0.`level2_approved_at`, m0.`rejected_by`, m0.`rejected_at`, m0.`rejection_reason`, m0.`created_by`, m0.`updated_by`, m0.`inserted_at`, m0.`updated_at` FROM `merchant_adjustments` AS m0 WHERE (m0.`adjustment_date` = ?) AND (m0.`approval_status` = 'approved') [~D[2026-08-31]] ↳ SettlementCore.Context.list_approved_adjustments_by_date/1, at: lib/settlement_core/context.ex:971 [2026-09-02 10:33:57.827] [DEBUG] QUERY OK source="core_transactions" db=1.3ms idle=1.7ms SELECT DISTINCT c0.`merchant_mid`, coalesce(t1.`merchant_name_legal`, t1.`merchant_name_dba`) FROM `core_transactions` AS c0 INNER JOIN `tid_masters` AS t1 ON t1.`mid` = c0.`merchant_mid` WHERE (DATE(c0.`transaction_datetime`) = ?) AND ((c0.`risk_hold` = TRUE) OR (c0.`settlement_status` = 'exception_hold')) AND (NOT (c0.`merchant_mid` IN (SELECT DISTINCT ss0.`merchant_mid` FROM `settlement_mis_items` AS ss0 WHERE (ss0.`settlement_mis_id` = ?)))) [~D[2026-08-31], 326] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:302 [2026-09-02 10:33:57.827] [DEBUG] Replied in 5ms [2026-09-02 10:34:06.575] [DEBUG] HANDLE EVENT "expand_merchant" in PlatformWeb.SettlementLive.MisApproval Parameters: %{"mid" => "425590250000000"} [2026-09-02 10:34:06.577] [DEBUG] QUERY OK source="settlement_mis_items" db=2.2ms idle=677.3ms SELECT s0.`id`, s0.`settlement_mis_id`, s0.`core_transaction_id`, s0.`merchant_mid`, s0.`merchant_id`, s0.`merchant_name`, s0.`merchant_ref_number`, s0.`bank_name`, s0.`iban`, s0.`account_number`, s0.`settlement_date`, s0.`rrn`, s0.`tid`, s0.`auth_number`, s0.`transaction_date`, s0.`transaction_type`, s0.`scheme_name`, s0.`card_type_code`, s0.`gross_amount`, s0.`mdr_percentage_rate`, s0.`mdr_amount`, s0.`vat_rate`, s0.`vat_amount`, s0.`interchange_fee`, s0.`adjustment_amount`, s0.`ar_recovery`, s0.`net_payable`, s0.`transaction_count`, s0.`total_gross_amount`, s0.`total_mdr_amount`, s0.`total_vat_amount`, s0.`total_interchange_fee`, s0.`total_net_settlement_amount`, s0.`risk_status`, s0.`exception_type`, s0.`mpr_sent`, s0.`margin_contribution`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis_items` AS s0 WHERE ((s0.`settlement_mis_id` = ?) AND (s0.`merchant_mid` = ?)) ORDER BY s0.`card_type_code` [326, "425590250000000"] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:319 [2026-09-02 10:34:06.581] [DEBUG] QUERY OK source="merchant_adjustments" db=3.0ms queue=0.6ms idle=224.3ms SELECT m0.`id`, m0.`merchant_mid`, m0.`merchant_name`, m0.`adjustment_date`, m0.`debit_credit`, m0.`amount`, m0.`currency`, m0.`adjustment_type`, m0.`description`, m0.`settlement_mis_id`, m0.`status`, m0.`applied_at`, m0.`cancelled_at`, m0.`cancel_reason`, m0.`approval_status`, m0.`level1_reviewed_by`, m0.`level1_reviewed_at`, m0.`level2_approved_by`, m0.`level2_approved_at`, m0.`rejected_by`, m0.`rejected_at`, m0.`rejection_reason`, m0.`created_by`, m0.`updated_by`, m0.`inserted_at`, m0.`updated_at` FROM `merchant_adjustments` AS m0 WHERE (m0.`adjustment_date` = ?) AND (m0.`approval_status` = 'approved') [~D[2026-08-31]] ↳ SettlementCore.Context.list_approved_adjustments_by_date/1, at: lib/settlement_core/context.ex:971 [2026-09-02 10:34:06.582] [DEBUG] QUERY OK source="core_transactions" db=0.6ms idle=4.1ms SELECT c0.`id`, c0.`source_type`, c0.`source_ref_id`, c0.`settlement_batch_id`, c0.`rrn`, c0.`tid`, c0.`auth_number`, c0.`stan`, c0.`invoice_number`, c0.`batch_number`, c0.`merchant_mid`, c0.`merchant_id`, c0.`merchant_ref_number`, c0.`transaction_amount`, c0.`transaction_currency`, c0.`transaction_type`, c0.`transaction_datetime`, c0.`masked_pan`, c0.`scheme_name`, c0.`card_holder_name`, c0.`customer_mobile`, c0.`customer_country`, c0.`mcc_code`, c0.`card_type_id`, c0.`card_type_code`, c0.`mdr_template_id`, c0.`mdr_percentage_rate`, c0.`mdr_fixed_fee`, c0.`mdr_minimum_fee`, c0.`mdr_maximum_fee`, c0.`mdr_amount`, c0.`vat_rate`, c0.`vat_amount`, c0.`interchange_fee`, c0.`interchange_template_id`, c0.`gross_amount`, c0.`net_settlement_amount`, c0.`settlement_status`, c0.`switch_settled_date`, c0.`released_for_settlement_date`, c0.`risk_hold`, c0.`risk_rule_name`, c0.`chargeback_hold`, c0.`exception_type`, c0.`refund_status`, c0.`refund_date`, c0.`reversal_status`, c0.`reversal_date`, c0.`store_id`, c0.`dr_cr`, c0.`qr_tag`, c0.`bank_transfer_reference`, c0.`bank_transfer_date`, c0.`spare_fields`, c0.`inserted_at`, c0.`updated_at` FROM `core_transactions` AS c0 WHERE (DATE(c0.`transaction_datetime`) = ?) AND ((c0.`risk_hold` = TRUE) OR (c0.`settlement_status` = 'exception_hold')) AND (c0.`merchant_mid` = ?) ORDER BY c0.`merchant_mid`, c0.`transaction_datetime` [~D[2026-08-31], "425590250000000"] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:328 [2026-09-02 10:34:06.582] [DEBUG] Replied in 7ms [2026-09-02 10:34:12.700] [INFO ] Running offline device check... [2026-09-02 10:34:12.700] [INFO ] Starting offline device check... [2026-09-02 10:34:12.702] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms idle=904.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1234 [2026-09-02 10:34:12.705] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=806.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [1] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:34:12.706] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=2.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:34:12.707] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:34:12.708] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms queue=0.1ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:34:12.709] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:34:12.710] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.1ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:34:12.711] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:34:12.713] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms queue=0.7ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:34:12.714] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:34:12.715] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:34:12.716] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:34:12.717] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:34:12.718] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:34:12.719] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:34:12.720] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:34:12.720] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:34:12.721] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:34:12.722] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:34:12.723] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:34:12.723] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:34:12.724] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:34:12.725] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:34:12.726] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.2ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:34:12.727] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:34:12.728] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:34:12.729] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:34:12.730] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.4ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:34:12.731] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:34:12.732] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:34:12.733] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.1ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:34:12.737] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.4ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:34:12.739] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.8ms idle=3.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:34:12.740] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:34:12.751] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.6ms idle=6.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:34:12.752] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.1ms idle=11.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:34:12.758] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.3ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:34:12.759] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=5.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:34:12.763] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.1ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:34:12.764] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=3.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:34:12.768] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=4.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:34:12.769] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.4ms idle=4.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:34:12.771] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:34:12.772] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:34:12.775] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.9ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:34:12.776] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=3.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:34:12.777] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:34:12.778] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.1ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:34:12.778] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:34:12.781] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.5ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:34:12.782] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=3.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:34:12.782] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:34:12.783] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:34:12.784] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [82] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:34:12.785] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [83] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:34:12.785] [INFO ] Offline device check completed. Found 50 offline devices, updated 0 statuses. [2026-09-02 10:34:12.785] [INFO ] Offline device check completed successfully [2026-09-02 10:34:27.198] [DEBUG] HANDLE EVENT "close_detail" in PlatformWeb.SettlementLive.MisApproval Parameters: %{"value" => ""} [2026-09-02 10:34:27.198] [DEBUG] Replied in 195µs [2026-09-02 10:34:33.097] [DEBUG] HANDLE EVENT "mis_row_clicked" in PlatformWeb.SettlementLive.MisApproval Parameters: %{"id" => 322} [2026-09-02 10:34:33.098] [DEBUG] QUERY OK source="settlement_mis" db=0.6ms queue=0.1ms idle=1199.5ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 WHERE (s0.`id` = ?) [322] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:284 [2026-09-02 10:34:33.099] [DEBUG] QUERY OK source="settlement_mis_items" db=0.9ms idle=229.3ms SELECT s0.`merchant_mid`, s0.`merchant_id`, MAX(s0.`merchant_name`), sum(s0.`transaction_count`), sum(s0.`total_gross_amount`), sum(s0.`total_mdr_amount`), sum(s0.`total_vat_amount`), sum(s0.`total_interchange_fee`), sum(s0.`net_payable`), GROUP_CONCAT(DISTINCT s0.`scheme_name` SEPARATOR ', '), GROUP_CONCAT(DISTINCT s0.`card_type_code` SEPARATOR ', ') FROM `settlement_mis_items` AS s0 WHERE (s0.`settlement_mis_id` = ?) GROUP BY s0.`merchant_mid`, s0.`merchant_id` [322] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:285 [2026-09-02 10:34:33.100] [DEBUG] QUERY OK source="merchant_adjustments" db=0.6ms idle=1.4ms SELECT m0.`id`, m0.`merchant_mid`, m0.`merchant_name`, m0.`adjustment_date`, m0.`debit_credit`, m0.`amount`, m0.`currency`, m0.`adjustment_type`, m0.`description`, m0.`settlement_mis_id`, m0.`status`, m0.`applied_at`, m0.`cancelled_at`, m0.`cancel_reason`, m0.`approval_status`, m0.`level1_reviewed_by`, m0.`level1_reviewed_at`, m0.`level2_approved_by`, m0.`level2_approved_at`, m0.`rejected_by`, m0.`rejected_at`, m0.`rejection_reason`, m0.`created_by`, m0.`updated_by`, m0.`inserted_at`, m0.`updated_at` FROM `merchant_adjustments` AS m0 WHERE (m0.`adjustment_date` = ?) AND (m0.`approval_status` = 'approved') [~D[2026-08-17]] ↳ SettlementCore.Context.list_approved_adjustments_by_date/1, at: lib/settlement_core/context.ex:971 [2026-09-02 10:34:33.102] [DEBUG] QUERY OK source="core_transactions" db=1.8ms idle=1.1ms SELECT DISTINCT c0.`merchant_mid`, coalesce(t1.`merchant_name_legal`, t1.`merchant_name_dba`) FROM `core_transactions` AS c0 INNER JOIN `tid_masters` AS t1 ON t1.`mid` = c0.`merchant_mid` WHERE (DATE(c0.`transaction_datetime`) = ?) AND ((c0.`risk_hold` = TRUE) OR (c0.`settlement_status` = 'exception_hold')) AND (NOT (c0.`merchant_mid` IN (SELECT DISTINCT ss0.`merchant_mid` FROM `settlement_mis_items` AS ss0 WHERE (ss0.`settlement_mis_id` = ?)))) [~D[2026-08-17], 322] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:302 [2026-09-02 10:34:33.103] [DEBUG] Replied in 5ms [2026-09-02 10:34:49.975] [DEBUG] HANDLE EVENT "close_detail" in PlatformWeb.SettlementLive.MisApproval Parameters: %{"value" => ""} [2026-09-02 10:34:49.975] [DEBUG] Replied in 188µs [2026-09-02 10:34:53.266] [DEBUG] HANDLE EVENT "mis_row_clicked" in PlatformWeb.SettlementLive.MisApproval Parameters: %{"id" => 326} [2026-09-02 10:34:53.267] [DEBUG] QUERY OK source="settlement_mis" db=0.6ms idle=369.1ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 WHERE (s0.`id` = ?) [326] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:284 [2026-09-02 10:34:53.268] [DEBUG] QUERY OK source="settlement_mis_items" db=0.5ms idle=294.6ms SELECT s0.`merchant_mid`, s0.`merchant_id`, MAX(s0.`merchant_name`), sum(s0.`transaction_count`), sum(s0.`total_gross_amount`), sum(s0.`total_mdr_amount`), sum(s0.`total_vat_amount`), sum(s0.`total_interchange_fee`), sum(s0.`net_payable`), GROUP_CONCAT(DISTINCT s0.`scheme_name` SEPARATOR ', '), GROUP_CONCAT(DISTINCT s0.`card_type_code` SEPARATOR ', ') FROM `settlement_mis_items` AS s0 WHERE (s0.`settlement_mis_id` = ?) GROUP BY s0.`merchant_mid`, s0.`merchant_id` [326] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:285 [2026-09-02 10:34:53.270] [DEBUG] QUERY OK source="merchant_adjustments" db=1.3ms idle=1.0ms SELECT m0.`id`, m0.`merchant_mid`, m0.`merchant_name`, m0.`adjustment_date`, m0.`debit_credit`, m0.`amount`, m0.`currency`, m0.`adjustment_type`, m0.`description`, m0.`settlement_mis_id`, m0.`status`, m0.`applied_at`, m0.`cancelled_at`, m0.`cancel_reason`, m0.`approval_status`, m0.`level1_reviewed_by`, m0.`level1_reviewed_at`, m0.`level2_approved_by`, m0.`level2_approved_at`, m0.`rejected_by`, m0.`rejected_at`, m0.`rejection_reason`, m0.`created_by`, m0.`updated_by`, m0.`inserted_at`, m0.`updated_at` FROM `merchant_adjustments` AS m0 WHERE (m0.`adjustment_date` = ?) AND (m0.`approval_status` = 'approved') [~D[2026-08-31]] ↳ SettlementCore.Context.list_approved_adjustments_by_date/1, at: lib/settlement_core/context.ex:971 [2026-09-02 10:34:53.271] [DEBUG] QUERY OK source="core_transactions" db=1.0ms idle=1.9ms SELECT DISTINCT c0.`merchant_mid`, coalesce(t1.`merchant_name_legal`, t1.`merchant_name_dba`) FROM `core_transactions` AS c0 INNER JOIN `tid_masters` AS t1 ON t1.`mid` = c0.`merchant_mid` WHERE (DATE(c0.`transaction_datetime`) = ?) AND ((c0.`risk_hold` = TRUE) OR (c0.`settlement_status` = 'exception_hold')) AND (NOT (c0.`merchant_mid` IN (SELECT DISTINCT ss0.`merchant_mid` FROM `settlement_mis_items` AS ss0 WHERE (ss0.`settlement_mis_id` = ?)))) [~D[2026-08-31], 326] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:302 [2026-09-02 10:34:53.271] [DEBUG] Replied in 4ms [2026-09-02 10:34:58.591] [DEBUG] HANDLE EVENT "expand_merchant" in PlatformWeb.SettlementLive.MisApproval Parameters: %{"mid" => "425590250000000"} [2026-09-02 10:34:58.592] [DEBUG] QUERY OK source="settlement_mis_items" db=0.9ms idle=1607.0ms SELECT s0.`id`, s0.`settlement_mis_id`, s0.`core_transaction_id`, s0.`merchant_mid`, s0.`merchant_id`, s0.`merchant_name`, s0.`merchant_ref_number`, s0.`bank_name`, s0.`iban`, s0.`account_number`, s0.`settlement_date`, s0.`rrn`, s0.`tid`, s0.`auth_number`, s0.`transaction_date`, s0.`transaction_type`, s0.`scheme_name`, s0.`card_type_code`, s0.`gross_amount`, s0.`mdr_percentage_rate`, s0.`mdr_amount`, s0.`vat_rate`, s0.`vat_amount`, s0.`interchange_fee`, s0.`adjustment_amount`, s0.`ar_recovery`, s0.`net_payable`, s0.`transaction_count`, s0.`total_gross_amount`, s0.`total_mdr_amount`, s0.`total_vat_amount`, s0.`total_interchange_fee`, s0.`total_net_settlement_amount`, s0.`risk_status`, s0.`exception_type`, s0.`mpr_sent`, s0.`margin_contribution`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis_items` AS s0 WHERE ((s0.`settlement_mis_id` = ?) AND (s0.`merchant_mid` = ?)) ORDER BY s0.`card_type_code` [326, "425590250000000"] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:319 [2026-09-02 10:34:58.593] [DEBUG] QUERY OK source="merchant_adjustments" db=1.0ms idle=605.9ms SELECT m0.`id`, m0.`merchant_mid`, m0.`merchant_name`, m0.`adjustment_date`, m0.`debit_credit`, m0.`amount`, m0.`currency`, m0.`adjustment_type`, m0.`description`, m0.`settlement_mis_id`, m0.`status`, m0.`applied_at`, m0.`cancelled_at`, m0.`cancel_reason`, m0.`approval_status`, m0.`level1_reviewed_by`, m0.`level1_reviewed_at`, m0.`level2_approved_by`, m0.`level2_approved_at`, m0.`rejected_by`, m0.`rejected_at`, m0.`rejection_reason`, m0.`created_by`, m0.`updated_by`, m0.`inserted_at`, m0.`updated_at` FROM `merchant_adjustments` AS m0 WHERE (m0.`adjustment_date` = ?) AND (m0.`approval_status` = 'approved') [~D[2026-08-31]] ↳ SettlementCore.Context.list_approved_adjustments_by_date/1, at: lib/settlement_core/context.ex:971 [2026-09-02 10:34:58.595] [DEBUG] QUERY OK source="core_transactions" db=0.9ms idle=1.7ms SELECT c0.`id`, c0.`source_type`, c0.`source_ref_id`, c0.`settlement_batch_id`, c0.`rrn`, c0.`tid`, c0.`auth_number`, c0.`stan`, c0.`invoice_number`, c0.`batch_number`, c0.`merchant_mid`, c0.`merchant_id`, c0.`merchant_ref_number`, c0.`transaction_amount`, c0.`transaction_currency`, c0.`transaction_type`, c0.`transaction_datetime`, c0.`masked_pan`, c0.`scheme_name`, c0.`card_holder_name`, c0.`customer_mobile`, c0.`customer_country`, c0.`mcc_code`, c0.`card_type_id`, c0.`card_type_code`, c0.`mdr_template_id`, c0.`mdr_percentage_rate`, c0.`mdr_fixed_fee`, c0.`mdr_minimum_fee`, c0.`mdr_maximum_fee`, c0.`mdr_amount`, c0.`vat_rate`, c0.`vat_amount`, c0.`interchange_fee`, c0.`interchange_template_id`, c0.`gross_amount`, c0.`net_settlement_amount`, c0.`settlement_status`, c0.`switch_settled_date`, c0.`released_for_settlement_date`, c0.`risk_hold`, c0.`risk_rule_name`, c0.`chargeback_hold`, c0.`exception_type`, c0.`refund_status`, c0.`refund_date`, c0.`reversal_status`, c0.`reversal_date`, c0.`store_id`, c0.`dr_cr`, c0.`qr_tag`, c0.`bank_transfer_reference`, c0.`bank_transfer_date`, c0.`spare_fields`, c0.`inserted_at`, c0.`updated_at` FROM `core_transactions` AS c0 WHERE (DATE(c0.`transaction_datetime`) = ?) AND ((c0.`risk_hold` = TRUE) OR (c0.`settlement_status` = 'exception_hold')) AND (c0.`merchant_mid` = ?) ORDER BY c0.`merchant_mid`, c0.`transaction_datetime` [~D[2026-08-31], "425590250000000"] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:328 [2026-09-02 10:34:58.595] [DEBUG] Replied in 4ms [2026-09-02 10:35:21.052] [INFO ] Received status update for terminal 61250415798001 [2026-09-02 10:35:21.052] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61250415798001","vendor":"MoreFun","model":"SR600","uploadTime":"2715085-11-04T09:43:03Z","org.device":[{"itemkey":"status","value":"online","timestamp":"2715085-11-04T09:43:03Z","message":"Device Connected"}]} [2026-09-02 10:35:21.052] [INFO ] Decoded JSON: %{"model" => "SR600", "oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "status", "message" => "Device Connected", "timestamp" => "2715085-11-04T09:43:03Z", "value" => "online"}], "sn" => "61250415798001", "uploadTime" => "2715085-11-04T09:43:03Z", "vendor" => "MoreFun"} [2026-09-02 10:35:21.053] [INFO ] Extracted versions for 61250415798001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-09-02 10:35:21.053] [INFO ] Detected missing versions for 61250415798001, triggering auto-push [2026-09-02 10:35:21.053] [INFO ] AutoPushService: Triggering auto-push for 61250415798001 (MoreFun SR600) - missing version [2026-09-02 10:35:21.055] [DEBUG] QUERY OK source="parameter_templates" db=1.4ms idle=973.1ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["MoreFun", "SR600"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-09-02 10:35:21.058] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=154.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-09-02 10:35:21.060] [DEBUG] QUERY OK source="parameter_template_values" db=0.3ms queue=0.1ms idle=4.7ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [7] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-09-02 10:35:21.119] [DEBUG] QUERY OK db=58.1ms queue=0.1ms idle=3.1ms INSERT INTO `parameter_push_logs` (`status`,`request_id`,`log_time`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", 9506, ~U[2026-09-02 10:35:21Z], 1, "parameter", "SR600", "MoreFun", %{}, "full", 7, "missing_version", "1.0.0", ~N[2026-09-02 10:35:21], ~N[2026-09-02 10:35:21]] ↳ TmsCore.TerminalManagement.AutoPushService.push_generic_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:235 [2026-09-02 10:35:21.119] [INFO ] AutoPushService: Created push log 60560 for parameters (template: 7) [2026-09-02 10:35:21.119] [INFO ] SR600 MQTT Command: %{"command" => "file_download", "merchant_config" => "true", "request_id" => 9506, "retry_count" => "3", "version" => "1.0.0"} [2026-09-02 10:35:21.120] [INFO ] AutoPushService: Sending parameter push to 61250415798001 on topic: /ota/pFppbioOCKlo5c8E/61250415798001/update [2026-09-02 10:35:21.120] [INFO ] AutoPushService: Parameter push sent successfully to 61250415798001 [2026-09-02 10:35:21.172] [DEBUG] QUERY OK db=52.2ms queue=0.1ms idle=36.3ms INSERT INTO `parameter_push_logs` (`status`,`request_id`,`log_time`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?) ["pending", 9570, ~U[2026-09-02 10:35:21Z], 1, "emv_config", "SR600", "MoreFun", "full", "missing_version", ~N[2026-09-02 10:35:21], ~N[2026-09-02 10:35:21]] ↳ TmsCore.TerminalManagement.AutoPushService.push_regular_config/5, at: lib/tms_core/terminal_management/auto_push_service.ex:427 [2026-09-02 10:35:21.173] [INFO ] AutoPushService: Created push log for emv_config [2026-09-02 10:35:21.173] [INFO ] SR600 MQTT Command: %{"command" => "file_download", "merchant_config" => "true", "request_id" => 9570, "retry_count" => "3"} [2026-09-02 10:35:21.173] [INFO ] AutoPushService: Sending emv_config push to 61250415798001 on topic: /ota/pFppbioOCKlo5c8E/61250415798001/update [2026-09-02 10:35:21.174] [INFO ] AutoPushService: emv_config push sent successfully to 61250415798001 [2026-09-02 10:35:21.175] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms idle=55.6ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "SR600"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-09-02 10:35:21.175] [INFO ] KeysConfigService: Generating keys.json for 61250415798001 (SR600) [2026-09-02 10:35:21.177] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=3.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-09-02 10:35:21.177] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 61250415798001 with params: %{"kekKcv" => "112233", "model" => "SR600", "serialNumber" => "61250415798001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-09-02 10:35:21.186] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-09-02 10:35:21.187] [ERROR] KeysConfigService: Failed to generate keys for 61250415798001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 10:35:21.187] [ERROR] AutoPushService: Failed to generate keys.json for 61250415798001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 10:35:21.243] [DEBUG] QUERY OK db=55.6ms idle=12.1ms INSERT INTO `parameter_push_logs` (`status`,`request_id`,`log_time`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?) ["pending", 2724, ~U[2026-09-02 10:35:21Z], 1, "application", "SR600", "MoreFun", "full", "missing_version", ~N[2026-09-02 10:35:21], ~N[2026-09-02 10:35:21]] ↳ TmsCore.TerminalManagement.AutoPushService.push_regular_config/5, at: lib/tms_core/terminal_management/auto_push_service.ex:427 [2026-09-02 10:35:21.243] [INFO ] AutoPushService: Created push log for application [2026-09-02 10:35:21.243] [INFO ] SR600 MQTT Command: %{"command" => "file_download", "merchant_config" => "true", "request_id" => 2724, "retry_count" => "3"} [2026-09-02 10:35:21.243] [INFO ] AutoPushService: Sending application push to 61250415798001 on topic: /ota/pFppbioOCKlo5c8E/61250415798001/update [2026-09-02 10:35:21.246] [INFO ] AutoPushService: application push sent successfully to 61250415798001 [2026-09-02 10:35:21.246] [INFO ] AutoPushService: Auto-push completed for 61250415798001 [2026-09-02 10:35:21.247] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=70.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:140 [2026-09-02 10:35:21.248] [INFO ] Terminal updated: 61250415798001 [2026-09-02 10:35:21.250] [DEBUG] VersionComplianceChecker: 61250415798001 — all versions compliant [2026-09-02 10:35:21.252] [DEBUG] QUERY OK source="tms_terminals" db=1.9ms idle=7.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:1184 [2026-09-02 10:35:21.288] [DEBUG] QUERY OK source="tms_terminals" db=35.2ms idle=5.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:35:21], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:174 [2026-09-02 10:35:21.289] [DEBUG] QUERY OK source="app_upgrade_device_statuses" db=0.5ms idle=36.7ms SELECT a0.`id`, a0.`config_id`, a0.`device_id`, a0.`device_sn`, a0.`vendor`, a0.`model`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`update_result`, a0.`status`, a0.`remark`, a0.`finish_time`, a0.`pushed_time`, a0.`retry_count`, a0.`inserted_at`, a0.`updated_at` FROM `app_upgrade_device_statuses` AS a0 WHERE ((a0.`device_sn` = ?) AND a0.`status` IN ('pending','pushed')) ["61250415798001"] ↳ TmsCore.TerminalManagement.AppUpgradeService.maybe_repush_for_device/1, at: lib/tms_core/terminal_management/app_upgrade_service.ex:148 [2026-09-02 10:35:21.335] [DEBUG] QUERY OK db=44.4ms queue=0.1ms idle=1.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [1, "org-id-placeholder", "2715085-11-04T09:43:03Z", ~N[2026-09-02 10:35:21], ~N[2026-09-02 10:35:21]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:179 [2026-09-02 10:35:21.335] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 105817, oid: "org-id-placeholder", upload_time: "2715085-11-04T09:43:03Z", terminal_id: 1, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:35:21], updated_at: ~N[2026-09-02 10:35:21]} [2026-09-02 10:35:21.335] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Device Connected", "timestamp" => "2715085-11-04T09:43:03Z", "value" => "online"} [2026-09-02 10:35:21.420] [DEBUG] QUERY OK db=82.4ms idle=47.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Device Connected", "2715085-11-04T09:43:03Z", "online", "status", 105817, ~N[2026-09-02 10:35:21], ~N[2026-09-02 10:35:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:35:21.420] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084403, itemkey: "status", value: "online", timestamp: "2715085-11-04T09:43:03Z", message: "Device Connected", status_log_id: 105817, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:35:21], updated_at: ~N[2026-09-02 10:35:21]}} [2026-09-02 10:35:21.420] [INFO ] Setting terminal 61250415798001 status to 'online' from status itemkey [2026-09-02 10:35:21.421] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=85.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:35:21], 1] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:203 [2026-09-02 10:35:21.422] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=1.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:35:21], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:233 [2026-09-02 10:35:21.422] [WARN ] Unexpected async result [2026-09-02 10:35:21.422] [WARN ] Unexpected async result [2026-09-02 10:35:21.423] [WARN ] Unexpected async result [2026-09-02 10:37:03.343] [INFO ] Received status update for terminal 98251226730001 [2026-09-02 10:37:03.343] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-09-02T10:37:02Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-09-02T10:37:02Z","value":"34"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-09-02T10:37:02Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-09-02T10:37:02Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-09-02T10:37:02Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-09-02T10:37:02Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-09-02T10:37:02Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-09-02T10:37:02Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-09-02T10:37:02Z","vendor":"MoreFun"} [2026-09-02 10:37:03.344] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-09-02T10:37:02Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-09-02T10:37:02Z", "value" => "34"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-09-02T10:37:02Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-09-02T10:37:02Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-09-02T10:37:02Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-09-02T10:37:02Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-09-02T10:37:02Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-09-02T10:37:02Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-09-02T10:37:02Z", "vendor" => "MoreFun"} [2026-09-02 10:37:03.344] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-09-02 10:37:03.345] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-09-02 10:37:03.345] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-09-02 10:37:03.349] [DEBUG] QUERY OK source="parameter_templates" db=3.6ms idle=1434.6ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-09-02 10:37:03.353] [DEBUG] QUERY OK source="tms_terminals" db=3.6ms idle=883.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-09-02 10:37:03.358] [DEBUG] QUERY OK source="parameter_template_values" db=4.8ms idle=4.2ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-09-02 10:37:03.364] [DEBUG] QUERY OK source="parameter_definitions" db=1.7ms queue=3.2ms idle=5.8ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-09-02 10:37:03.369] [DEBUG] QUERY OK source="pos_terminal" db=4.6ms idle=6.3ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-09-02 10:37:03.407] [DEBUG] QUERY OK source="pos_merchant" db=37.6ms idle=5.6ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [350] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-09-02 10:37:03.411] [DEBUG] QUERY OK db=3.1ms queue=0.5ms idle=1561.0ms SELECT COALESCE(JSON_UNQUOTE(JSON_EXTRACT(mc.settings, '$.BASE_MERCHANT_NAME')), '') as base_merchant_name, COALESCE(u.name, '') as user_name, COALESCE(um.softpos_uuid, '') as softpos_uuid, COALESCE(mc.settings, '{}') as settings FROM user_metadata um LEFT JOIN merchant_configuration mc ON mc.user_id = um.user_id LEFT JOIN users u ON u.id = um.user_id WHERE um.merchant_refrence_number = ? LIMIT 1 ["667267350000000"] [2026-09-02 10:37:03.411] [INFO ] ParamsZipBuilder: Merchant info for merchantid=667267350000000 - business_name=Shubham003, QR_USE_SSL=, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-09-02 10:37:03.414] [DEBUG] QUERY OK source="pos_terminal_data" db=2.6ms queue=0.1ms idle=42.2ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["26735914"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-09-02 10:37:03.418] [DEBUG] QUERY OK source="address" db=0.8ms queue=0.7ms idle=9.2ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [639] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-09-02 10:37:03.418] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="667267350000000" [2026-09-02 10:37:03.426] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-09-02 10:37:03.470] [DEBUG] QUERY OK db=42.8ms idle=13.0ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "22b139b596ea110f8a7089cdc0b4bd96d2045cd48e44ef20fa83310c044642ff", 2341, 912, ~U[2026-09-02 10:37:03Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-09-02 10:37:03], ~N[2026-09-02 10:37:03]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-09-02 10:37:03.470] [INFO ] AutoPushService: Created push log 60568 for MF919 params.zip [2026-09-02 10:37:03.473] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4017/ota/98251226730001/params.zip", "requestId" => 2341, "type" => "tms_command", "version" => "1.0.0"} [2026-09-02 10:37:03.473] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-09-02 10:37:03.473] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-09-02 10:37:03.480] [DEBUG] QUERY OK source="config_file_versions" db=7.1ms idle=3.1ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-09-02 10:37:03.508] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730001 at priv/ota/98251226730001/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-09-02 10:37:03.572] [DEBUG] QUERY OK db=62.0ms idle=29.6ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "14d6ee8ef95377eae5329696ceb77547c364a2fa1893e2c9732b68650c96ca80", 10018, 17947, ~U[2026-09-02 10:37:03Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-09-02 10:37:03], ~N[2026-09-02 10:37:03]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-09-02 10:37:03.572] [INFO ] AutoPushService: Created push log 60569 for MF919 l3config.zip (version: 1.0.1) [2026-09-02 10:37:03.572] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4017/ota/98251226730001/l3config.zip", "requestId" => 10018, "type" => "tms_command", "version" => "1.0.1"} [2026-09-02 10:37:03.577] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-09-02 10:37:03.578] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-09-02 10:37:03.580] [DEBUG] QUERY OK source="config_file_versions" db=0.9ms idle=98.7ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-09-02 10:37:03.580] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-09-02 10:37:03.583] [DEBUG] QUERY OK source="tms_terminals" db=2.4ms idle=8.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-09-02 10:37:03.583] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730001 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-09-02 10:37:03.588] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-09-02 10:37:03.588] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 10:37:03.589] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 10:37:03.593] [DEBUG] QUERY OK source="config_file_versions" db=4.2ms idle=8.6ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-09-02 10:37:03.594] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-09-02 10:37:03.594] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-09-02 10:37:03.600] [DEBUG] QUERY OK source="tms_terminals" db=3.3ms idle=13.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:140 [2026-09-02 10:37:03.600] [INFO ] Terminal updated: 98251226730001 [2026-09-02 10:37:03.610] [DEBUG] QUERY OK source="tms_terminals" db=9.1ms idle=7.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-09-02 10:37:03], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:164 [2026-09-02 10:37:03.615] [DEBUG] QUERY OK source="parameter_templates" db=4.1ms idle=10.0ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) ORDER BY p0.`updated_at` DESC LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_parameter_version/2, at: lib/tms_core/terminal_management/version_compliance_checker.ex:105 [2026-09-02 10:37:03.629] [DEBUG] QUERY OK source="config_file_versions" db=14.0ms idle=4.9ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-09-02 10:37:03.649] [DEBUG] QUERY OK source="config_file_versions" db=12.3ms queue=0.1ms idle=14.6ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-09-02 10:37:03.654] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-09-02 10:37:03.714] [DEBUG] QUERY OK source="parameter_push_logs" db=58.8ms idle=25.9ms SELECT TRUE FROM `parameter_push_logs` AS p0 WHERE ((((p0.`terminal_id` = ?) AND (p0.`config_type` = ?)) AND (p0.`inserted_at` >= ?)) AND p0.`status` IN ('pending','sent')) LIMIT 1 [33, "application", ~N[2026-09-02 10:07:03]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-09-02 10:37:03.714] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-09-02 10:37:03.714] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-09-02 10:37:03.716] [DEBUG] QUERY OK source="tms_terminals" db=2.1ms idle=72.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-09-02 10:37:03.724] [DEBUG] QUERY OK source="config_file_versions" db=7.3ms idle=2.9ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-09-02 10:37:03.738] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-09-02 10:37:03.744] [DEBUG] QUERY OK source="tms_terminals" db=4.8ms idle=22.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:1184 [2026-09-02 10:37:03.770] [DEBUG] QUERY OK source="tms_terminals" db=9.9ms queue=15.9ms idle=19.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:37:03], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:174 [2026-09-02 10:37:03.773] [DEBUG] QUERY OK source="app_upgrade_device_statuses" db=2.7ms idle=26.7ms SELECT a0.`id`, a0.`config_id`, a0.`device_id`, a0.`device_sn`, a0.`vendor`, a0.`model`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`update_result`, a0.`status`, a0.`remark`, a0.`finish_time`, a0.`pushed_time`, a0.`retry_count`, a0.`inserted_at`, a0.`updated_at` FROM `app_upgrade_device_statuses` AS a0 WHERE ((a0.`device_sn` = ?) AND a0.`status` IN ('pending','pushed')) ["98251226730001"] ↳ TmsCore.TerminalManagement.AppUpgradeService.maybe_repush_for_device/1, at: lib/tms_core/terminal_management/app_upgrade_service.ex:148 [2026-09-02 10:37:03.833] [DEBUG] QUERY OK db=59.2ms idle=3.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-09-02T10:37:02Z", ~N[2026-09-02 10:37:03], ~N[2026-09-02 10:37:03]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:179 [2026-09-02 10:37:03.833] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 105820, oid: "organization_id", upload_time: "2026-09-02T10:37:02Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:37:03], updated_at: ~N[2026-09-02 10:37:03]} [2026-09-02 10:37:03.833] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-09-02T10:37:02Z", "value" => "online"} [2026-09-02 10:37:03.917] [DEBUG] QUERY OK db=83.6ms idle=60.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-09-02T10:37:02Z", "online", "status", 105820, ~N[2026-09-02 10:37:03], ~N[2026-09-02 10:37:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:37:03.918] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084405, itemkey: "status", value: "online", timestamp: "2026-09-02T10:37:02Z", message: "Terminal status update", status_log_id: 105820, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:37:03], updated_at: ~N[2026-09-02 10:37:03]}} [2026-09-02 10:37:03.918] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-09-02 10:37:03.918] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-09-02T10:37:02Z", "value" => "34"} [2026-09-02 10:37:03.965] [DEBUG] QUERY OK db=47.2ms idle=85.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-09-02T10:37:02Z", "34", "battery", 105820, ~N[2026-09-02 10:37:03], ~N[2026-09-02 10:37:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:37:03.966] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084407, itemkey: "battery", value: "34", timestamp: "2026-09-02T10:37:02Z", message: "Battery level", status_log_id: 105820, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:37:03], updated_at: ~N[2026-09-02 10:37:03]}} [2026-09-02 10:37:03.966] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-09-02T10:37:02Z", "value" => "online"} [2026-09-02 10:37:04.091] [DEBUG] QUERY OK db=114.8ms idle=58.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-09-02T10:37:02Z", "online", "network", 105820, ~N[2026-09-02 10:37:03], ~N[2026-09-02 10:37:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:37:04.091] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084409, itemkey: "network", value: "online", timestamp: "2026-09-02T10:37:02Z", message: "Network connectivity", status_log_id: 105820, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:37:03], updated_at: ~N[2026-09-02 10:37:03]}} [2026-09-02 10:37:04.091] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-09-02 10:37:04.092] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-09-02T10:37:02Z", "value" => "0"} [2026-09-02 10:37:04.199] [DEBUG] QUERY OK db=100.4ms idle=133.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-09-02T10:37:02Z", "0", "cpu", 105820, ~N[2026-09-02 10:37:04], ~N[2026-09-02 10:37:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:37:04.199] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084411, itemkey: "cpu", value: "0", timestamp: "2026-09-02T10:37:02Z", message: "CPU usage percentage", status_log_id: 105820, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:37:04], updated_at: ~N[2026-09-02 10:37:04]}} [2026-09-02 10:37:04.200] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-09-02T10:37:02Z", "value" => "1.0.0"} [2026-09-02 10:37:04.291] [DEBUG] QUERY OK db=91.5ms idle=109.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-09-02T10:37:02Z", "1.0.0", "parameter_config", 105820, ~N[2026-09-02 10:37:04], ~N[2026-09-02 10:37:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:37:04.292] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084413, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-09-02T10:37:02Z", message: "Current parameters version", status_log_id: 105820, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:37:04], updated_at: ~N[2026-09-02 10:37:04]}} [2026-09-02 10:37:04.297] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-09-02T10:37:02Z", "value" => "1.0.1"} [2026-09-02 10:37:04.511] [DEBUG] QUERY OK db=213.0ms idle=98.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-09-02T10:37:02Z", "1.0.1", "emv_config", 105820, ~N[2026-09-02 10:37:04], ~N[2026-09-02 10:37:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:37:04.519] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084415, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-09-02T10:37:02Z", message: "Current EMV config version", status_log_id: 105820, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:37:04], updated_at: ~N[2026-09-02 10:37:04]}} [2026-09-02 10:37:04.519] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-09-02T10:37:02Z", "value" => ""} [2026-09-02 10:37:04.621] [DEBUG] QUERY OK db=52.0ms queue=49.0ms idle=15.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-09-02T10:37:02Z", "keys_config", 105820, ~N[2026-09-02 10:37:04], ~N[2026-09-02 10:37:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:37:04.621] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084420, itemkey: "keys_config", value: nil, timestamp: "2026-09-02T10:37:02Z", message: "Current keys config version", status_log_id: 105820, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:37:04], updated_at: ~N[2026-09-02 10:37:04]}} [2026-09-02 10:37:04.623] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-09-02T10:37:02Z", "value" => "3.8.7.3"} [2026-09-02 10:37:04.683] [DEBUG] QUERY OK db=60.4ms idle=112.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-09-02T10:37:02Z", "3.8.7.3", "application", 105820, ~N[2026-09-02 10:37:04], ~N[2026-09-02 10:37:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:37:04.684] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084421, itemkey: "application", value: "3.8.7.3", timestamp: "2026-09-02T10:37:02Z", message: "Current application version", status_log_id: 105820, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:37:04], updated_at: ~N[2026-09-02 10:37:04]}} [2026-09-02 10:37:04.684] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.0","requestId":"2341","status":"success","timestamp":1788345423026,"type":"tms_response"} [2026-09-02 10:37:04.684] [INFO ] Processing file download response for device 98251226730001, request_id: 2341 [2026-09-02 10:37:04.685] [DEBUG] QUERY OK source="file_download_logs" db=0.9ms idle=63.4ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["2341"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:37:04.685] [INFO ] No file download log for request_id 2341; response not attached to a push [2026-09-02 10:37:04.686] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:37:04.686081Z], response: %{"message" => "Already up to date: 1.0.0", "requestId" => "2341", "status" => "success", "timestamp" => 1788345423026, "type" => "tms_response"}, request_id: "2341", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:37:04.686] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.1","requestId":"10018","status":"success","timestamp":1788345423069,"type":"tms_response"} [2026-09-02 10:37:04.686] [INFO ] Processing file download response for device 98251226730001, request_id: 10018 [2026-09-02 10:37:04.699] [DEBUG] QUERY OK source="file_download_logs" db=8.2ms idle=7.7ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["10018"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:37:04.700] [INFO ] No file download log for request_id 10018; response not attached to a push [2026-09-02 10:37:04.700] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:37:04.700107Z], response: %{"message" => "Already up to date: 1.0.1", "requestId" => "10018", "status" => "success", "timestamp" => 1788345423069, "type" => "tms_response"}, request_id: "10018", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:37:04.700] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.0","requestId":"251139","status":"success","timestamp":1788345423114,"type":"tms_response"} [2026-09-02 10:37:04.727] [INFO ] Processing file download response for device 98251226730001, request_id: 251139 [2026-09-02 10:37:04.734] [DEBUG] QUERY OK source="file_download_logs" db=3.9ms queue=3.1ms idle=41.8ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["251139"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:37:04.734] [INFO ] No file download log for request_id 251139; response not attached to a push [2026-09-02 10:37:04.734] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:37:04.734764Z], response: %{"message" => "Already up to date: 1.0.0", "requestId" => "251139", "status" => "success", "timestamp" => 1788345423114, "type" => "tms_response"}, request_id: "251139", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:37:04.734] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.1","requestId":"283106","status":"success","timestamp":1788345423224,"type":"tms_response"} [2026-09-02 10:37:04.735] [INFO ] Processing file download response for device 98251226730001, request_id: 283106 [2026-09-02 10:37:04.739] [DEBUG] QUERY OK source="file_download_logs" db=2.6ms queue=1.7ms idle=35.5ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["283106"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:37:04.739] [INFO ] No file download log for request_id 283106; response not attached to a push [2026-09-02 10:37:04.740] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:37:04.740004Z], response: %{"message" => "Already up to date: 1.0.1", "requestId" => "283106", "status" => "success", "timestamp" => 1788345423224, "type" => "tms_response"}, request_id: "283106", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:37:04.740] [WARN ] Unexpected async result [2026-09-02 10:37:04.740] [WARN ] Unexpected async result [2026-09-02 10:37:07.983] [INFO ] Received status update for terminal 98251226730001 [2026-09-02 10:37:07.986] [INFO ] Incoming JSON payload: {"oid":"27778ad4-57df-41af-bdb3-c95dbbbb4081","sn":"98251226730001","uploadTime":"2026-09-02T10:37:07Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-09-02T10:37:07Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-09-02T10:37:07Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-09-02T10:37:07Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-09-02T10:37:07Z"},{"itemkey":"ram_free_mb","value":"844","timestamp":"2026-09-02T10:37:07Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-09-02T10:37:07Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-09-02T10:37:07Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-09-02T10:37:07Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-09-02T10:37:07Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-09-02T10:37:07Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-09-02T10:37:07Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-09-02T10:37:07Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-09-02T10:37:07Z"},{"itemkey":"data_usage_mb","value":"39","timestamp":"2026-09-02T10:37:07Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-09-02T10:37:07Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-09-02 10:37:07.992] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "27778ad4-57df-41af-bdb3-c95dbbbb4081", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-09-02T10:37:07Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-09-02T10:37:07Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-09-02T10:37:07Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-09-02T10:37:07Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-09-02T10:37:07Z", "value" => "844"}, %{"itemkey" => "network_type", "timestamp" => "2026-09-02T10:37:07Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-09-02T10:37:07Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-09-02T10:37:07Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-09-02T10:37:07Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-09-02T10:37:07Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-09-02T10:37:07Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-09-02T10:37:07Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-09-02T10:37:07Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-09-02T10:37:07Z", "value" => "39"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-09-02T10:37:07Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-09-02T10:37:07Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-09-02T10:37:07Z", "vendor" => "morefun"} [2026-09-02 10:37:07.992] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-09-02 10:37:07.992] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-09-02 10:37:07.992] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-09-02 10:37:07.996] [DEBUG] QUERY OK source="parameter_templates" db=3.0ms idle=473.7ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-09-02 10:37:07.999] [DEBUG] QUERY OK source="parameter_templates" db=1.0ms idle=76.3ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-09-02 10:37:07.999] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-09-02 10:37:08.005] [DEBUG] QUERY OK source="tms_terminals" db=3.1ms queue=0.3ms idle=5.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:140 [2026-09-02 10:37:08.417] [DEBUG] QUERY OK source="tms_terminals" db=368.7ms queue=42.1ms idle=8.6ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-09-02 10:37:08], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-09-02 10:37:08.417] [INFO ] Terminal updated: 98251226730001 [2026-09-02 10:37:08.417] [INFO ] Event published: terminal_updated [2026-09-02 10:37:08.418] [DEBUG] Processing terminal event: terminal_updated [2026-09-02 10:37:08.418] [INFO ] Processing terminal_updated event for terminal 33 [2026-09-02 10:37:08.420] [INFO ] Changed fields: [:vendor, :model] [2026-09-02 10:37:08.423] [DEBUG] QUERY OK source="terminal_group_memberships" db=1.9ms idle=416.4ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-09-02 10:37:08], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-09-02 10:37:08.427] [DEBUG] QUERY OK source="tms_terminals" db=3.7ms idle=6.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-09-02 10:37:08.428] [DEBUG] QUERY OK source="terminal_group_rules" db=0.4ms idle=0.2ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-09-02 10:37:08.428] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-09-02 10:37:08.475] [DEBUG] QUERY OK source="tms_terminals" db=5.6ms queue=45.6ms idle=0.4ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "kiosk_launcher", "morefun", nil, nil, nil, nil, ~N[2026-09-02 10:37:08], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:164 [2026-09-02 10:37:08.475] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-09-02 10:37:08.478] [DEBUG] QUERY OK source="tms_terminals" db=2.8ms queue=0.1ms idle=47.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:1184 [2026-09-02 10:37:08.567] [DEBUG] QUERY OK source="tms_terminals" db=45.5ms queue=43.5ms idle=3.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:37:08], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:174 [2026-09-02 10:37:08.569] [DEBUG] QUERY OK source="app_upgrade_device_statuses" db=1.1ms idle=42.6ms SELECT a0.`id`, a0.`config_id`, a0.`device_id`, a0.`device_sn`, a0.`vendor`, a0.`model`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`update_result`, a0.`status`, a0.`remark`, a0.`finish_time`, a0.`pushed_time`, a0.`retry_count`, a0.`inserted_at`, a0.`updated_at` FROM `app_upgrade_device_statuses` AS a0 WHERE ((a0.`device_sn` = ?) AND a0.`status` IN ('pending','pushed')) ["98251226730001"] ↳ TmsCore.TerminalManagement.AppUpgradeService.maybe_repush_for_device/1, at: lib/tms_core/terminal_management/app_upgrade_service.ex:148 [2026-09-02 10:37:08.627] [DEBUG] QUERY OK db=57.5ms idle=1.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "27778ad4-57df-41af-bdb3-c95dbbbb4081", "2026-09-02T10:37:07Z", ~N[2026-09-02 10:37:08], ~N[2026-09-02 10:37:08]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:179 [2026-09-02 10:37:08.627] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 105822, oid: "27778ad4-57df-41af-bdb3-c95dbbbb4081", upload_time: "2026-09-02T10:37:07Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:37:08], updated_at: ~N[2026-09-02 10:37:08]} [2026-09-02 10:37:08.627] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-09-02T10:37:07Z", "value" => "morefun"} [2026-09-02 10:37:08.716] [DEBUG] QUERY OK db=46.1ms queue=41.9ms idle=58.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:37:07Z", "morefun", "vendor", 105822, ~N[2026-09-02 10:37:08], ~N[2026-09-02 10:37:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:37:08.716] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084430, itemkey: "vendor", value: "morefun", timestamp: "2026-09-02T10:37:07Z", message: nil, status_log_id: 105822, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:37:08], updated_at: ~N[2026-09-02 10:37:08]}} [2026-09-02 10:37:08.717] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-09-02T10:37:07Z", "value" => "kiosk_launcher"} [2026-09-02 10:37:08.774] [DEBUG] QUERY OK db=41.4ms queue=9.8ms idle=95.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:37:07Z", "kiosk_launcher", "model", 105822, ~N[2026-09-02 10:37:08], ~N[2026-09-02 10:37:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:37:08.774] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084431, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-09-02T10:37:07Z", message: nil, status_log_id: 105822, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:37:08], updated_at: ~N[2026-09-02 10:37:08]}} [2026-09-02 10:37:08.774] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-09-02T10:37:07Z", "value" => "1.0"} [2026-09-02 10:37:08.810] [DEBUG] QUERY OK db=35.0ms idle=58.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:37:07Z", "1.0", "app_version", 105822, ~N[2026-09-02 10:37:08], ~N[2026-09-02 10:37:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:37:08.810] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084433, itemkey: "app_version", value: "1.0", timestamp: "2026-09-02T10:37:07Z", message: nil, status_log_id: 105822, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:37:08], updated_at: ~N[2026-09-02 10:37:08]}} [2026-09-02 10:37:08.811] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-09-02T10:37:07Z", "value" => "13"} [2026-09-02 10:37:08.874] [DEBUG] QUERY OK db=62.3ms idle=37.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:37:07Z", "13", "android_version", 105822, ~N[2026-09-02 10:37:08], ~N[2026-09-02 10:37:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:37:08.874] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084436, itemkey: "android_version", value: "13", timestamp: "2026-09-02T10:37:07Z", message: nil, status_log_id: 105822, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:37:08], updated_at: ~N[2026-09-02 10:37:08]}} [2026-09-02 10:37:08.875] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-09-02T10:37:07Z", "value" => "844"} [2026-09-02 10:37:08.933] [DEBUG] QUERY OK db=56.8ms idle=65.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:37:07Z", "844", "ram_free_mb", 105822, ~N[2026-09-02 10:37:08], ~N[2026-09-02 10:37:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:37:08.933] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084439, itemkey: "ram_free_mb", value: "844", timestamp: "2026-09-02T10:37:07Z", message: nil, status_log_id: 105822, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:37:08], updated_at: ~N[2026-09-02 10:37:08]}} [2026-09-02 10:37:08.933] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-09-02T10:37:07Z", "value" => "WIFI"} [2026-09-02 10:37:08.979] [DEBUG] QUERY OK db=45.3ms idle=59.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:37:07Z", "WIFI", "network_type", 105822, ~N[2026-09-02 10:37:08], ~N[2026-09-02 10:37:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:37:08.979] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084442, itemkey: "network_type", value: "WIFI", timestamp: "2026-09-02T10:37:07Z", message: nil, status_log_id: 105822, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:37:08], updated_at: ~N[2026-09-02 10:37:08]}} [2026-09-02 10:37:08.979] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-09-02T10:37:07Z", "value" => "true"} [2026-09-02 10:37:09.082] [DEBUG] QUERY OK db=102.2ms idle=46.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:37:07Z", "true", "kiosk_active", 105822, ~N[2026-09-02 10:37:08], ~N[2026-09-02 10:37:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:37:09.082] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084445, itemkey: "kiosk_active", value: "true", timestamp: "2026-09-02T10:37:07Z", message: nil, status_log_id: 105822, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:37:08], updated_at: ~N[2026-09-02 10:37:08]}} [2026-09-02 10:37:09.082] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-09-02T10:37:07Z", "value" => ""} [2026-09-02 10:37:09.136] [DEBUG] QUERY OK db=54.1ms idle=103.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-09-02T10:37:07Z", "sim_operator", 105822, ~N[2026-09-02 10:37:09], ~N[2026-09-02 10:37:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:37:09.137] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084447, itemkey: "sim_operator", value: nil, timestamp: "2026-09-02T10:37:07Z", message: nil, status_log_id: 105822, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:37:09], updated_at: ~N[2026-09-02 10:37:09]}} [2026-09-02 10:37:09.137] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-09-02T10:37:07Z", "value" => "UNKNOWN"} [2026-09-02 10:37:09.172] [DEBUG] QUERY OK db=35.0ms idle=55.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:37:07Z", "UNKNOWN", "sim_number", 105822, ~N[2026-09-02 10:37:09], ~N[2026-09-02 10:37:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:37:09.172] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084450, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-09-02T10:37:07Z", message: nil, status_log_id: 105822, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:37:09], updated_at: ~N[2026-09-02 10:37:09]}} [2026-09-02 10:37:09.172] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-09-02T10:37:07Z", "value" => "UNKNOWN"} [2026-09-02 10:37:09.230] [DEBUG] QUERY OK db=57.5ms idle=36.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:37:07Z", "UNKNOWN", "sim_iccid", 105822, ~N[2026-09-02 10:37:09], ~N[2026-09-02 10:37:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:37:09.230] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084453, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-09-02T10:37:07Z", message: nil, status_log_id: 105822, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:37:09], updated_at: ~N[2026-09-02 10:37:09]}} [2026-09-02 10:37:09.231] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-09-02T10:37:07Z", "value" => "UNKNOWN"} [2026-09-02 10:37:09.303] [DEBUG] QUERY OK db=66.0ms idle=64.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:37:07Z", "UNKNOWN", "sim_imsi", 105822, ~N[2026-09-02 10:37:09], ~N[2026-09-02 10:37:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:37:09.303] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084455, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-09-02T10:37:07Z", message: nil, status_log_id: 105822, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:37:09], updated_at: ~N[2026-09-02 10:37:09]}} [2026-09-02 10:37:09.303] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-09-02T10:37:07Z", "value" => "UNKNOWN"} [2026-09-02 10:37:09.352] [DEBUG] QUERY OK db=48.8ms idle=73.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:37:07Z", "UNKNOWN", "sim_iccid2", 105822, ~N[2026-09-02 10:37:09], ~N[2026-09-02 10:37:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:37:09.352] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084458, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-09-02T10:37:07Z", message: nil, status_log_id: 105822, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:37:09], updated_at: ~N[2026-09-02 10:37:09]}} [2026-09-02 10:37:09.353] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-09-02T10:37:07Z", "value" => "UNKNOWN"} [2026-09-02 10:37:09.425] [DEBUG] QUERY OK db=72.4ms idle=50.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:37:07Z", "UNKNOWN", "sim_imsi2", 105822, ~N[2026-09-02 10:37:09], ~N[2026-09-02 10:37:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:37:09.426] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084461, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-09-02T10:37:07Z", message: nil, status_log_id: 105822, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:37:09], updated_at: ~N[2026-09-02 10:37:09]}} [2026-09-02 10:37:09.426] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-09-02T10:37:07Z", "value" => "39"} [2026-09-02 10:37:09.487] [DEBUG] QUERY OK db=61.3ms idle=73.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:37:07Z", "39", "data_usage_mb", 105822, ~N[2026-09-02 10:37:09], ~N[2026-09-02 10:37:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:37:09.488] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084464, itemkey: "data_usage_mb", value: "39", timestamp: "2026-09-02T10:37:07Z", message: nil, status_log_id: 105822, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:37:09], updated_at: ~N[2026-09-02 10:37:09]}} [2026-09-02 10:37:09.488] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-09-02T10:37:07Z", "value" => "0"} [2026-09-02 10:37:09.567] [DEBUG] QUERY OK db=79.1ms idle=63.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:37:07Z", "0", "mobile_data_mb", 105822, ~N[2026-09-02 10:37:09], ~N[2026-09-02 10:37:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:37:09.568] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084467, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-09-02T10:37:07Z", message: nil, status_log_id: 105822, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:37:09], updated_at: ~N[2026-09-02 10:37:09]}} [2026-09-02 10:37:09.568] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-09-02T10:37:07Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-09-02 10:37:09.624] [DEBUG] QUERY OK db=54.8ms idle=37.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:37:07Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 105822, ~N[2026-09-02 10:37:09], ~N[2026-09-02 10:37:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:37:09.625] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084470, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-09-02T10:37:07Z", message: nil, status_log_id: 105822, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:37:09], updated_at: ~N[2026-09-02 10:37:09]}} [2026-09-02 10:37:39.576] [DEBUG] HANDLE EVENT "close_detail" in PlatformWeb.SettlementLive.MisApproval Parameters: %{"value" => ""} [2026-09-02 10:37:39.576] [DEBUG] Replied in 181µs [2026-09-02 10:37:43.538] [DEBUG] HANDLE EVENT "mis_row_clicked" in PlatformWeb.SettlementLive.MisApproval Parameters: %{"id" => 322} [2026-09-02 10:37:43.542] [DEBUG] QUERY OK source="settlement_mis" db=0.9ms queue=2.9ms idle=563.5ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 WHERE (s0.`id` = ?) [322] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:284 [2026-09-02 10:37:43.544] [DEBUG] QUERY OK source="settlement_mis_items" db=0.6ms queue=0.2ms idle=247.7ms SELECT s0.`merchant_mid`, s0.`merchant_id`, MAX(s0.`merchant_name`), sum(s0.`transaction_count`), sum(s0.`total_gross_amount`), sum(s0.`total_mdr_amount`), sum(s0.`total_vat_amount`), sum(s0.`total_interchange_fee`), sum(s0.`net_payable`), GROUP_CONCAT(DISTINCT s0.`scheme_name` SEPARATOR ', '), GROUP_CONCAT(DISTINCT s0.`card_type_code` SEPARATOR ', ') FROM `settlement_mis_items` AS s0 WHERE (s0.`settlement_mis_id` = ?) GROUP BY s0.`merchant_mid`, s0.`merchant_id` [322] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:285 [2026-09-02 10:37:43.546] [DEBUG] QUERY OK source="merchant_adjustments" db=1.5ms idle=2.2ms SELECT m0.`id`, m0.`merchant_mid`, m0.`merchant_name`, m0.`adjustment_date`, m0.`debit_credit`, m0.`amount`, m0.`currency`, m0.`adjustment_type`, m0.`description`, m0.`settlement_mis_id`, m0.`status`, m0.`applied_at`, m0.`cancelled_at`, m0.`cancel_reason`, m0.`approval_status`, m0.`level1_reviewed_by`, m0.`level1_reviewed_at`, m0.`level2_approved_by`, m0.`level2_approved_at`, m0.`rejected_by`, m0.`rejected_at`, m0.`rejection_reason`, m0.`created_by`, m0.`updated_by`, m0.`inserted_at`, m0.`updated_at` FROM `merchant_adjustments` AS m0 WHERE (m0.`adjustment_date` = ?) AND (m0.`approval_status` = 'approved') [~D[2026-08-17]] ↳ SettlementCore.Context.list_approved_adjustments_by_date/1, at: lib/settlement_core/context.ex:971 [2026-09-02 10:37:43.548] [DEBUG] QUERY OK source="core_transactions" db=1.7ms idle=2.2ms SELECT DISTINCT c0.`merchant_mid`, coalesce(t1.`merchant_name_legal`, t1.`merchant_name_dba`) FROM `core_transactions` AS c0 INNER JOIN `tid_masters` AS t1 ON t1.`mid` = c0.`merchant_mid` WHERE (DATE(c0.`transaction_datetime`) = ?) AND ((c0.`risk_hold` = TRUE) OR (c0.`settlement_status` = 'exception_hold')) AND (NOT (c0.`merchant_mid` IN (SELECT DISTINCT ss0.`merchant_mid` FROM `settlement_mis_items` AS ss0 WHERE (ss0.`settlement_mis_id` = ?)))) [~D[2026-08-17], 322] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:302 [2026-09-02 10:37:43.548] [DEBUG] Replied in 10ms [2026-09-02 10:37:58.235] [DEBUG] HANDLE EVENT "expand_merchant" in PlatformWeb.SettlementLive.MisApproval Parameters: %{"mid" => "377005470000000"} [2026-09-02 10:37:58.239] [DEBUG] QUERY OK source="settlement_mis_items" db=1.7ms queue=0.2ms idle=314.0ms SELECT s0.`id`, s0.`settlement_mis_id`, s0.`core_transaction_id`, s0.`merchant_mid`, s0.`merchant_id`, s0.`merchant_name`, s0.`merchant_ref_number`, s0.`bank_name`, s0.`iban`, s0.`account_number`, s0.`settlement_date`, s0.`rrn`, s0.`tid`, s0.`auth_number`, s0.`transaction_date`, s0.`transaction_type`, s0.`scheme_name`, s0.`card_type_code`, s0.`gross_amount`, s0.`mdr_percentage_rate`, s0.`mdr_amount`, s0.`vat_rate`, s0.`vat_amount`, s0.`interchange_fee`, s0.`adjustment_amount`, s0.`ar_recovery`, s0.`net_payable`, s0.`transaction_count`, s0.`total_gross_amount`, s0.`total_mdr_amount`, s0.`total_vat_amount`, s0.`total_interchange_fee`, s0.`total_net_settlement_amount`, s0.`risk_status`, s0.`exception_type`, s0.`mpr_sent`, s0.`margin_contribution`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis_items` AS s0 WHERE ((s0.`settlement_mis_id` = ?) AND (s0.`merchant_mid` = ?)) ORDER BY s0.`card_type_code` [322, "377005470000000"] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:319 [2026-09-02 10:37:58.241] [DEBUG] QUERY OK source="merchant_adjustments" db=0.5ms queue=0.2ms idle=158.1ms SELECT m0.`id`, m0.`merchant_mid`, m0.`merchant_name`, m0.`adjustment_date`, m0.`debit_credit`, m0.`amount`, m0.`currency`, m0.`adjustment_type`, m0.`description`, m0.`settlement_mis_id`, m0.`status`, m0.`applied_at`, m0.`cancelled_at`, m0.`cancel_reason`, m0.`approval_status`, m0.`level1_reviewed_by`, m0.`level1_reviewed_at`, m0.`level2_approved_by`, m0.`level2_approved_at`, m0.`rejected_by`, m0.`rejected_at`, m0.`rejection_reason`, m0.`created_by`, m0.`updated_by`, m0.`inserted_at`, m0.`updated_at` FROM `merchant_adjustments` AS m0 WHERE (m0.`adjustment_date` = ?) AND (m0.`approval_status` = 'approved') [~D[2026-08-17]] ↳ SettlementCore.Context.list_approved_adjustments_by_date/1, at: lib/settlement_core/context.ex:971 [2026-09-02 10:37:58.242] [DEBUG] QUERY OK source="core_transactions" db=0.6ms queue=0.2ms idle=2.3ms SELECT c0.`id`, c0.`source_type`, c0.`source_ref_id`, c0.`settlement_batch_id`, c0.`rrn`, c0.`tid`, c0.`auth_number`, c0.`stan`, c0.`invoice_number`, c0.`batch_number`, c0.`merchant_mid`, c0.`merchant_id`, c0.`merchant_ref_number`, c0.`transaction_amount`, c0.`transaction_currency`, c0.`transaction_type`, c0.`transaction_datetime`, c0.`masked_pan`, c0.`scheme_name`, c0.`card_holder_name`, c0.`customer_mobile`, c0.`customer_country`, c0.`mcc_code`, c0.`card_type_id`, c0.`card_type_code`, c0.`mdr_template_id`, c0.`mdr_percentage_rate`, c0.`mdr_fixed_fee`, c0.`mdr_minimum_fee`, c0.`mdr_maximum_fee`, c0.`mdr_amount`, c0.`vat_rate`, c0.`vat_amount`, c0.`interchange_fee`, c0.`interchange_template_id`, c0.`gross_amount`, c0.`net_settlement_amount`, c0.`settlement_status`, c0.`switch_settled_date`, c0.`released_for_settlement_date`, c0.`risk_hold`, c0.`risk_rule_name`, c0.`chargeback_hold`, c0.`exception_type`, c0.`refund_status`, c0.`refund_date`, c0.`reversal_status`, c0.`reversal_date`, c0.`store_id`, c0.`dr_cr`, c0.`qr_tag`, c0.`bank_transfer_reference`, c0.`bank_transfer_date`, c0.`spare_fields`, c0.`inserted_at`, c0.`updated_at` FROM `core_transactions` AS c0 WHERE (DATE(c0.`transaction_datetime`) = ?) AND ((c0.`risk_hold` = TRUE) OR (c0.`settlement_status` = 'exception_hold')) AND (c0.`merchant_mid` = ?) ORDER BY c0.`merchant_mid`, c0.`transaction_datetime` [~D[2026-08-17], "377005470000000"] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:328 [2026-09-02 10:37:58.242] [DEBUG] Replied in 7ms [2026-09-02 10:38:00.217] [DEBUG] HANDLE EVENT "expand_merchant" in PlatformWeb.SettlementLive.MisApproval Parameters: %{"mid" => "301510300000000"} [2026-09-02 10:38:00.218] [DEBUG] QUERY OK source="settlement_mis_items" db=0.6ms queue=0.1ms idle=293.1ms SELECT s0.`id`, s0.`settlement_mis_id`, s0.`core_transaction_id`, s0.`merchant_mid`, s0.`merchant_id`, s0.`merchant_name`, s0.`merchant_ref_number`, s0.`bank_name`, s0.`iban`, s0.`account_number`, s0.`settlement_date`, s0.`rrn`, s0.`tid`, s0.`auth_number`, s0.`transaction_date`, s0.`transaction_type`, s0.`scheme_name`, s0.`card_type_code`, s0.`gross_amount`, s0.`mdr_percentage_rate`, s0.`mdr_amount`, s0.`vat_rate`, s0.`vat_amount`, s0.`interchange_fee`, s0.`adjustment_amount`, s0.`ar_recovery`, s0.`net_payable`, s0.`transaction_count`, s0.`total_gross_amount`, s0.`total_mdr_amount`, s0.`total_vat_amount`, s0.`total_interchange_fee`, s0.`total_net_settlement_amount`, s0.`risk_status`, s0.`exception_type`, s0.`mpr_sent`, s0.`margin_contribution`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis_items` AS s0 WHERE ((s0.`settlement_mis_id` = ?) AND (s0.`merchant_mid` = ?)) ORDER BY s0.`card_type_code` [322, "301510300000000"] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:319 [2026-09-02 10:38:00.221] [DEBUG] QUERY OK source="merchant_adjustments" db=2.9ms idle=127.5ms SELECT m0.`id`, m0.`merchant_mid`, m0.`merchant_name`, m0.`adjustment_date`, m0.`debit_credit`, m0.`amount`, m0.`currency`, m0.`adjustment_type`, m0.`description`, m0.`settlement_mis_id`, m0.`status`, m0.`applied_at`, m0.`cancelled_at`, m0.`cancel_reason`, m0.`approval_status`, m0.`level1_reviewed_by`, m0.`level1_reviewed_at`, m0.`level2_approved_by`, m0.`level2_approved_at`, m0.`rejected_by`, m0.`rejected_at`, m0.`rejection_reason`, m0.`created_by`, m0.`updated_by`, m0.`inserted_at`, m0.`updated_at` FROM `merchant_adjustments` AS m0 WHERE (m0.`adjustment_date` = ?) AND (m0.`approval_status` = 'approved') [~D[2026-08-17]] ↳ SettlementCore.Context.list_approved_adjustments_by_date/1, at: lib/settlement_core/context.ex:971 [2026-09-02 10:38:00.224] [DEBUG] QUERY OK source="core_transactions" db=0.9ms idle=4.9ms SELECT c0.`id`, c0.`source_type`, c0.`source_ref_id`, c0.`settlement_batch_id`, c0.`rrn`, c0.`tid`, c0.`auth_number`, c0.`stan`, c0.`invoice_number`, c0.`batch_number`, c0.`merchant_mid`, c0.`merchant_id`, c0.`merchant_ref_number`, c0.`transaction_amount`, c0.`transaction_currency`, c0.`transaction_type`, c0.`transaction_datetime`, c0.`masked_pan`, c0.`scheme_name`, c0.`card_holder_name`, c0.`customer_mobile`, c0.`customer_country`, c0.`mcc_code`, c0.`card_type_id`, c0.`card_type_code`, c0.`mdr_template_id`, c0.`mdr_percentage_rate`, c0.`mdr_fixed_fee`, c0.`mdr_minimum_fee`, c0.`mdr_maximum_fee`, c0.`mdr_amount`, c0.`vat_rate`, c0.`vat_amount`, c0.`interchange_fee`, c0.`interchange_template_id`, c0.`gross_amount`, c0.`net_settlement_amount`, c0.`settlement_status`, c0.`switch_settled_date`, c0.`released_for_settlement_date`, c0.`risk_hold`, c0.`risk_rule_name`, c0.`chargeback_hold`, c0.`exception_type`, c0.`refund_status`, c0.`refund_date`, c0.`reversal_status`, c0.`reversal_date`, c0.`store_id`, c0.`dr_cr`, c0.`qr_tag`, c0.`bank_transfer_reference`, c0.`bank_transfer_date`, c0.`spare_fields`, c0.`inserted_at`, c0.`updated_at` FROM `core_transactions` AS c0 WHERE (DATE(c0.`transaction_datetime`) = ?) AND ((c0.`risk_hold` = TRUE) OR (c0.`settlement_status` = 'exception_hold')) AND (c0.`merchant_mid` = ?) ORDER BY c0.`merchant_mid`, c0.`transaction_datetime` [~D[2026-08-17], "301510300000000"] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:328 [2026-09-02 10:38:00.224] [DEBUG] Replied in 7ms [2026-09-02 10:39:12.786] [INFO ] Running offline device check... [2026-09-02 10:39:12.786] [INFO ] Starting offline device check... [2026-09-02 10:39:12.788] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=861.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1234 [2026-09-02 10:39:12.789] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=344.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [1] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:39:12.791] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:39:12.792] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:39:12.793] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.1ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:39:12.794] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:39:12.794] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:39:12.795] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.2ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:39:12.796] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:39:12.797] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:39:12.798] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:39:12.800] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:39:12.800] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:39:12.801] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:39:12.802] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:39:12.803] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=0.1ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:39:12.804] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:39:12.805] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:39:12.806] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.1ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:39:12.807] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms queue=0.1ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:39:12.808] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:39:12.809] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:39:12.810] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.2ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:39:12.811] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:39:12.812] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:39:12.813] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:39:12.814] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:39:12.814] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:39:12.815] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:39:12.817] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:39:12.818] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:39:12.819] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:39:12.820] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:39:12.821] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:39:12.822] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:39:12.822] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:39:12.823] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:39:12.824] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:39:12.824] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:39:12.825] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:39:12.826] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:39:12.826] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:39:12.827] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:39:12.827] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:39:12.828] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:39:12.829] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:39:12.829] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:39:12.830] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:39:12.830] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:39:12.831] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:39:12.832] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:39:12.832] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:39:12.833] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:39:12.833] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [82] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:39:12.834] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [83] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:39:12.834] [INFO ] Offline device check completed. Found 50 offline devices, updated 0 statuses. [2026-09-02 10:39:12.834] [INFO ] Offline device check completed successfully [2026-09-02 10:39:22.862] [INFO ] Received status update for terminal 98251226730001 [2026-09-02 10:39:22.862] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-09-02T10:39:21Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-09-02T10:39:21Z","value":"34"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-09-02T10:39:21Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-09-02T10:39:21Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-09-02T10:39:21Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-09-02T10:39:21Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-09-02T10:39:21Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-09-02T10:39:21Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-09-02T10:39:21Z","vendor":"MoreFun"} [2026-09-02 10:39:22.863] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-09-02T10:39:21Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-09-02T10:39:21Z", "value" => "34"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-09-02T10:39:21Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-09-02T10:39:21Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-09-02T10:39:21Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-09-02T10:39:21Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-09-02T10:39:21Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-09-02T10:39:21Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-09-02T10:39:21Z", "vendor" => "MoreFun"} [2026-09-02 10:39:22.863] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-09-02 10:39:22.863] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-09-02 10:39:22.863] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-09-02 10:39:22.868] [DEBUG] QUERY OK source="parameter_templates" db=4.1ms idle=936.3ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-09-02 10:39:22.868] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=385.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-09-02 10:39:22.870] [DEBUG] QUERY OK source="parameter_template_values" db=1.4ms idle=1.0ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-09-02 10:39:22.876] [DEBUG] QUERY OK source="parameter_definitions" db=2.9ms queue=0.8ms idle=4.0ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-09-02 10:39:22.877] [DEBUG] QUERY OK source="pos_terminal" db=0.7ms idle=6.6ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-09-02 10:39:22.918] [DEBUG] QUERY OK source="pos_merchant" db=40.5ms idle=1.3ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [350] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-09-02 10:39:22.920] [DEBUG] QUERY OK db=0.7ms queue=0.6ms idle=1049.6ms SELECT COALESCE(JSON_UNQUOTE(JSON_EXTRACT(mc.settings, '$.BASE_MERCHANT_NAME')), '') as base_merchant_name, COALESCE(u.name, '') as user_name, COALESCE(um.softpos_uuid, '') as softpos_uuid, COALESCE(mc.settings, '{}') as settings FROM user_metadata um LEFT JOIN merchant_configuration mc ON mc.user_id = um.user_id LEFT JOIN users u ON u.id = um.user_id WHERE um.merchant_refrence_number = ? LIMIT 1 ["667267350000000"] [2026-09-02 10:39:22.920] [INFO ] ParamsZipBuilder: Merchant info for merchantid=667267350000000 - business_name=Shubham003, QR_USE_SSL=, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-09-02 10:39:22.923] [DEBUG] QUERY OK source="pos_terminal_data" db=2.7ms idle=42.8ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["26735914"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-09-02 10:39:22.927] [DEBUG] QUERY OK source="address" db=2.3ms idle=6.5ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [639] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-09-02 10:39:22.931] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="667267350000000" [2026-09-02 10:39:22.939] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-09-02 10:39:23.040] [DEBUG] QUERY OK db=99.2ms queue=0.1ms idle=17.4ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "4f6795b61c2802da53ae00219bbb99f1a88c18246c547c69ae6878c6469a5790", 10114, 912, ~U[2026-09-02 10:39:22Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-09-02 10:39:22], ~N[2026-09-02 10:39:22]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-09-02 10:39:23.040] [INFO ] AutoPushService: Created push log 60573 for MF919 params.zip [2026-09-02 10:39:23.041] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4017/ota/98251226730001/params.zip", "requestId" => 10114, "type" => "tms_command", "version" => "1.0.0"} [2026-09-02 10:39:23.041] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-09-02 10:39:23.041] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-09-02 10:39:23.045] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms idle=116.7ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-09-02 10:39:23.052] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730001 at priv/ota/98251226730001/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-09-02 10:39:23.131] [DEBUG] QUERY OK db=76.7ms idle=14.0ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "88b0590db2f0cddb948e86bab44609f13c9d3c9684cfd721e5c8680a85834e35", 3044, 17947, ~U[2026-09-02 10:39:23Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-09-02 10:39:23], ~N[2026-09-02 10:39:23]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-09-02 10:39:23.131] [INFO ] AutoPushService: Created push log 60575 for MF919 l3config.zip (version: 1.0.1) [2026-09-02 10:39:23.132] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4017/ota/98251226730001/l3config.zip", "requestId" => 3044, "type" => "tms_command", "version" => "1.0.1"} [2026-09-02 10:39:23.132] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-09-02 10:39:23.132] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-09-02 10:39:23.133] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms idle=87.5ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-09-02 10:39:23.133] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-09-02 10:39:23.134] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=2.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-09-02 10:39:23.134] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730001 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-09-02 10:39:23.137] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-09-02 10:39:23.137] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 10:39:23.138] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 10:39:23.139] [DEBUG] QUERY OK source="config_file_versions" db=1.3ms idle=4.6ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-09-02 10:39:23.139] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-09-02 10:39:23.139] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-09-02 10:39:23.143] [DEBUG] QUERY OK source="tms_terminals" db=3.7ms idle=5.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:140 [2026-09-02 10:39:23.144] [INFO ] Terminal updated: 98251226730001 [2026-09-02 10:39:23.146] [DEBUG] QUERY OK source="parameter_templates" db=0.9ms idle=5.4ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) ORDER BY p0.`updated_at` DESC LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_parameter_version/2, at: lib/tms_core/terminal_management/version_compliance_checker.ex:105 [2026-09-02 10:39:23.147] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms idle=3.0ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-09-02 10:39:23.150] [DEBUG] QUERY OK source="config_file_versions" db=1.3ms idle=2.6ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-09-02 10:39:23.150] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-09-02 10:39:23.209] [DEBUG] QUERY OK source="parameter_push_logs" db=58.0ms idle=3.2ms SELECT TRUE FROM `parameter_push_logs` AS p0 WHERE ((((p0.`terminal_id` = ?) AND (p0.`config_type` = ?)) AND (p0.`inserted_at` >= ?)) AND p0.`status` IN ('pending','sent')) LIMIT 1 [33, "application", ~N[2026-09-02 10:09:23]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-09-02 10:39:23.210] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-09-02 10:39:23.210] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-09-02 10:39:23.212] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms idle=60.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-09-02 10:39:23.214] [DEBUG] QUERY OK source="config_file_versions" db=0.9ms queue=0.1ms idle=3.9ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-09-02 10:39:23.214] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-09-02 10:39:23.215] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=1.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:1184 [2026-09-02 10:39:23.241] [DEBUG] QUERY OK source="tms_terminals" db=25.8ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:39:23], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:174 [2026-09-02 10:39:23.244] [DEBUG] QUERY OK source="app_upgrade_device_statuses" db=2.4ms idle=26.5ms SELECT a0.`id`, a0.`config_id`, a0.`device_id`, a0.`device_sn`, a0.`vendor`, a0.`model`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`update_result`, a0.`status`, a0.`remark`, a0.`finish_time`, a0.`pushed_time`, a0.`retry_count`, a0.`inserted_at`, a0.`updated_at` FROM `app_upgrade_device_statuses` AS a0 WHERE ((a0.`device_sn` = ?) AND a0.`status` IN ('pending','pushed')) ["98251226730001"] ↳ TmsCore.TerminalManagement.AppUpgradeService.maybe_repush_for_device/1, at: lib/tms_core/terminal_management/app_upgrade_service.ex:148 [2026-09-02 10:39:23.287] [DEBUG] QUERY OK db=41.8ms idle=3.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-09-02T10:39:21Z", ~N[2026-09-02 10:39:23], ~N[2026-09-02 10:39:23]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:179 [2026-09-02 10:39:23.287] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 105825, oid: "organization_id", upload_time: "2026-09-02T10:39:21Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:39:23], updated_at: ~N[2026-09-02 10:39:23]} [2026-09-02 10:39:23.287] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-09-02T10:39:21Z", "value" => "online"} [2026-09-02 10:39:23.344] [DEBUG] QUERY OK db=55.9ms idle=43.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-09-02T10:39:21Z", "online", "status", 105825, ~N[2026-09-02 10:39:23], ~N[2026-09-02 10:39:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:39:23.344] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084476, itemkey: "status", value: "online", timestamp: "2026-09-02T10:39:21Z", message: "Terminal status update", status_log_id: 105825, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:39:23], updated_at: ~N[2026-09-02 10:39:23]}} [2026-09-02 10:39:23.344] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-09-02 10:39:23.346] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=57.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:39:23], 33] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:203 [2026-09-02 10:39:23.346] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-09-02T10:39:21Z", "value" => "34"} [2026-09-02 10:39:23.386] [DEBUG] QUERY OK db=40.1ms idle=2.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-09-02T10:39:21Z", "34", "battery", 105825, ~N[2026-09-02 10:39:23], ~N[2026-09-02 10:39:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:39:23.386] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084479, itemkey: "battery", value: "34", timestamp: "2026-09-02T10:39:21Z", message: "Battery level", status_log_id: 105825, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:39:23], updated_at: ~N[2026-09-02 10:39:23]}} [2026-09-02 10:39:23.387] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-09-02T10:39:21Z", "value" => "online"} [2026-09-02 10:39:23.439] [DEBUG] QUERY OK db=52.0ms idle=41.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-09-02T10:39:21Z", "online", "network", 105825, ~N[2026-09-02 10:39:23], ~N[2026-09-02 10:39:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:39:23.439] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084480, itemkey: "network", value: "online", timestamp: "2026-09-02T10:39:21Z", message: "Network connectivity", status_log_id: 105825, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:39:23], updated_at: ~N[2026-09-02 10:39:23]}} [2026-09-02 10:39:23.439] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-09-02 10:39:23.482] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms queue=40.7ms idle=53.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:39:23], 33] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:203 [2026-09-02 10:39:23.482] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-09-02T10:39:21Z", "value" => "0"} [2026-09-02 10:39:23.551] [DEBUG] QUERY OK db=68.3ms idle=43.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-09-02T10:39:21Z", "0", "cpu", 105825, ~N[2026-09-02 10:39:23], ~N[2026-09-02 10:39:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:39:23.553] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084485, itemkey: "cpu", value: "0", timestamp: "2026-09-02T10:39:21Z", message: "CPU usage percentage", status_log_id: 105825, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:39:23], updated_at: ~N[2026-09-02 10:39:23]}} [2026-09-02 10:39:23.553] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-09-02T10:39:21Z", "value" => "1.0.0"} [2026-09-02 10:39:23.629] [DEBUG] QUERY OK db=75.1ms idle=66.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-09-02T10:39:21Z", "1.0.0", "parameter_config", 105825, ~N[2026-09-02 10:39:23], ~N[2026-09-02 10:39:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:39:23.629] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084488, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-09-02T10:39:21Z", message: "Current parameters version", status_log_id: 105825, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:39:23], updated_at: ~N[2026-09-02 10:39:23]}} [2026-09-02 10:39:23.629] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-09-02T10:39:21Z", "value" => "1.0.1"} [2026-09-02 10:39:23.684] [DEBUG] QUERY OK db=54.5ms idle=78.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-09-02T10:39:21Z", "1.0.1", "emv_config", 105825, ~N[2026-09-02 10:39:23], ~N[2026-09-02 10:39:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:39:23.686] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084491, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-09-02T10:39:21Z", message: "Current EMV config version", status_log_id: 105825, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:39:23], updated_at: ~N[2026-09-02 10:39:23]}} [2026-09-02 10:39:23.686] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-09-02T10:39:21Z", "value" => ""} [2026-09-02 10:39:23.741] [DEBUG] QUERY OK db=52.6ms queue=0.5ms idle=58.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-09-02T10:39:21Z", "keys_config", 105825, ~N[2026-09-02 10:39:23], ~N[2026-09-02 10:39:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:39:23.741] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084493, itemkey: "keys_config", value: nil, timestamp: "2026-09-02T10:39:21Z", message: "Current keys config version", status_log_id: 105825, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:39:23], updated_at: ~N[2026-09-02 10:39:23]}} [2026-09-02 10:39:23.741] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-09-02T10:39:21Z", "value" => "3.8.7.3"} [2026-09-02 10:39:23.789] [DEBUG] QUERY OK db=46.3ms queue=1.4ms idle=57.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-09-02T10:39:21Z", "3.8.7.3", "application", 105825, ~N[2026-09-02 10:39:23], ~N[2026-09-02 10:39:23]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:39:23.790] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084496, itemkey: "application", value: "3.8.7.3", timestamp: "2026-09-02T10:39:21Z", message: "Current application version", status_log_id: 105825, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:39:23], updated_at: ~N[2026-09-02 10:39:23]}} [2026-09-02 10:39:23.791] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=49.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:39:23], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:233 [2026-09-02 10:39:23.792] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.0","requestId":"10114","status":"success","timestamp":1788345562521,"type":"tms_response"} [2026-09-02 10:39:23.792] [INFO ] Processing file download response for device 98251226730001, request_id: 10114 [2026-09-02 10:39:23.794] [DEBUG] QUERY OK source="file_download_logs" db=1.6ms idle=2.9ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["10114"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:39:23.794] [INFO ] No file download log for request_id 10114; response not attached to a push [2026-09-02 10:39:23.794] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:39:23.794574Z], response: %{"message" => "Already up to date: 1.0.0", "requestId" => "10114", "status" => "success", "timestamp" => 1788345562521, "type" => "tms_response"}, request_id: "10114", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:39:23.795] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.0","requestId":"283618","status":"success","timestamp":1788345562542,"type":"tms_response"} [2026-09-02 10:39:23.795] [INFO ] Processing file download response for device 98251226730001, request_id: 283618 [2026-09-02 10:39:23.796] [DEBUG] QUERY OK source="file_download_logs" db=0.5ms idle=4.7ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["283618"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:39:23.796] [INFO ] No file download log for request_id 283618; response not attached to a push [2026-09-02 10:39:23.799] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:39:23.799346Z], response: %{"message" => "Already up to date: 1.0.0", "requestId" => "283618", "status" => "success", "timestamp" => 1788345562542, "type" => "tms_response"}, request_id: "283618", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:39:23.799] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.1","requestId":"283682","status":"success","timestamp":1788345562595,"type":"tms_response"} [2026-09-02 10:39:23.799] [INFO ] Processing file download response for device 98251226730001, request_id: 283682 [2026-09-02 10:39:23.801] [DEBUG] QUERY OK source="file_download_logs" db=0.9ms idle=5.9ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["283682"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:39:23.801] [INFO ] No file download log for request_id 283682; response not attached to a push [2026-09-02 10:39:23.801] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:39:23.801297Z], response: %{"message" => "Already up to date: 1.0.1", "requestId" => "283682", "status" => "success", "timestamp" => 1788345562595, "type" => "tms_response"}, request_id: "283682", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:39:23.801] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.1","requestId":"3044","status":"success","timestamp":1788345562615,"type":"tms_response"} [2026-09-02 10:39:23.801] [INFO ] Processing file download response for device 98251226730001, request_id: 3044 [2026-09-02 10:39:23.817] [DEBUG] QUERY OK source="file_download_logs" db=2.6ms queue=13.0ms idle=5.0ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["3044"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:39:23.819] [INFO ] No file download log for request_id 3044; response not attached to a push [2026-09-02 10:39:23.821] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:39:23.821590Z], response: %{"message" => "Already up to date: 1.0.1", "requestId" => "3044", "status" => "success", "timestamp" => 1788345562615, "type" => "tms_response"}, request_id: "3044", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:39:23.821] [WARN ] Unexpected async result [2026-09-02 10:39:23.821] [WARN ] Unexpected async result [2026-09-02 10:40:25.420] [INFO ] Received status update for terminal 61250415798001 [2026-09-02 10:40:25.420] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61250415798001","vendor":"MoreFun","model":"SR600","uploadTime":"-3498384-11-16T00:09:59Z","org.device":[{"itemkey":"status","value":"online","timestamp":"-3498384-11-16T00:09:59Z","message":"Device Connected"}]} [2026-09-02 10:40:25.420] [INFO ] Decoded JSON: %{"model" => "SR600", "oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "status", "message" => "Device Connected", "timestamp" => "-3498384-11-16T00:09:59Z", "value" => "online"}], "sn" => "61250415798001", "uploadTime" => "-3498384-11-16T00:09:59Z", "vendor" => "MoreFun"} [2026-09-02 10:40:25.421] [INFO ] Extracted versions for 61250415798001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-09-02 10:40:25.421] [INFO ] Detected missing versions for 61250415798001, triggering auto-push [2026-09-02 10:40:25.421] [INFO ] AutoPushService: Triggering auto-push for 61250415798001 (MoreFun SR600) - missing version [2026-09-02 10:40:25.423] [DEBUG] QUERY OK source="parameter_templates" db=1.4ms idle=1486.6ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["MoreFun", "SR600"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-09-02 10:40:25.424] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.3ms idle=650.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-09-02 10:40:25.425] [DEBUG] QUERY OK source="parameter_template_values" db=0.7ms idle=1.2ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [7] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-09-02 10:40:25.478] [DEBUG] QUERY OK db=52.0ms idle=1.2ms INSERT INTO `parameter_push_logs` (`status`,`request_id`,`log_time`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", 6051, ~U[2026-09-02 10:40:25Z], 1, "parameter", "SR600", "MoreFun", %{}, "full", 7, "missing_version", "1.0.0", ~N[2026-09-02 10:40:25], ~N[2026-09-02 10:40:25]] ↳ TmsCore.TerminalManagement.AutoPushService.push_generic_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:235 [2026-09-02 10:40:25.478] [INFO ] AutoPushService: Created push log 60576 for parameters (template: 7) [2026-09-02 10:40:25.478] [INFO ] SR600 MQTT Command: %{"command" => "file_download", "merchant_config" => "true", "request_id" => 6051, "retry_count" => "3", "version" => "1.0.0"} [2026-09-02 10:40:25.478] [INFO ] AutoPushService: Sending parameter push to 61250415798001 on topic: /ota/pFppbioOCKlo5c8E/61250415798001/update [2026-09-02 10:40:25.479] [INFO ] AutoPushService: Parameter push sent successfully to 61250415798001 [2026-09-02 10:40:25.553] [DEBUG] QUERY OK db=74.5ms idle=53.7ms INSERT INTO `parameter_push_logs` (`status`,`request_id`,`log_time`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?) ["pending", 6115, ~U[2026-09-02 10:40:25Z], 1, "emv_config", "SR600", "MoreFun", "full", "missing_version", ~N[2026-09-02 10:40:25], ~N[2026-09-02 10:40:25]] ↳ TmsCore.TerminalManagement.AutoPushService.push_regular_config/5, at: lib/tms_core/terminal_management/auto_push_service.ex:427 [2026-09-02 10:40:25.554] [INFO ] AutoPushService: Created push log for emv_config [2026-09-02 10:40:25.554] [INFO ] SR600 MQTT Command: %{"command" => "file_download", "merchant_config" => "true", "request_id" => 6115, "retry_count" => "3"} [2026-09-02 10:40:25.554] [INFO ] AutoPushService: Sending emv_config push to 61250415798001 on topic: /ota/pFppbioOCKlo5c8E/61250415798001/update [2026-09-02 10:40:25.554] [INFO ] AutoPushService: emv_config push sent successfully to 61250415798001 [2026-09-02 10:40:25.557] [DEBUG] QUERY OK source="config_file_versions" db=3.1ms idle=76.7ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "SR600"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-09-02 10:40:25.558] [INFO ] KeysConfigService: Generating keys.json for 61250415798001 (SR600) [2026-09-02 10:40:25.558] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=4.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-09-02 10:40:25.559] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 61250415798001 with params: %{"kekKcv" => "112233", "model" => "SR600", "serialNumber" => "61250415798001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-09-02 10:40:25.564] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-09-02 10:40:25.564] [ERROR] KeysConfigService: Failed to generate keys for 61250415798001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 10:40:25.566] [ERROR] AutoPushService: Failed to generate keys.json for 61250415798001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 10:40:25.611] [DEBUG] QUERY OK db=43.9ms idle=9.1ms INSERT INTO `parameter_push_logs` (`status`,`request_id`,`log_time`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?) ["pending", 10146, ~U[2026-09-02 10:40:25Z], 1, "application", "SR600", "MoreFun", "full", "missing_version", ~N[2026-09-02 10:40:25], ~N[2026-09-02 10:40:25]] ↳ TmsCore.TerminalManagement.AutoPushService.push_regular_config/5, at: lib/tms_core/terminal_management/auto_push_service.ex:427 [2026-09-02 10:40:25.611] [INFO ] AutoPushService: Created push log for application [2026-09-02 10:40:25.611] [INFO ] SR600 MQTT Command: %{"command" => "file_download", "merchant_config" => "true", "request_id" => 10146, "retry_count" => "3"} [2026-09-02 10:40:25.612] [INFO ] AutoPushService: Sending application push to 61250415798001 on topic: /ota/pFppbioOCKlo5c8E/61250415798001/update [2026-09-02 10:40:25.612] [INFO ] AutoPushService: application push sent successfully to 61250415798001 [2026-09-02 10:40:25.612] [INFO ] AutoPushService: Auto-push completed for 61250415798001 [2026-09-02 10:40:25.614] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms idle=53.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:140 [2026-09-02 10:40:25.614] [INFO ] Terminal updated: 61250415798001 [2026-09-02 10:40:25.652] [DEBUG] QUERY OK source="tms_terminals" db=36.8ms idle=4.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-09-02 10:40:25], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:164 [2026-09-02 10:40:25.652] [DEBUG] VersionComplianceChecker: 61250415798001 — all versions compliant [2026-09-02 10:40:25.655] [DEBUG] QUERY OK source="tms_terminals" db=2.0ms idle=38.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:1184 [2026-09-02 10:40:25.721] [DEBUG] QUERY OK source="tms_terminals" db=65.0ms idle=4.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:40:25], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:174 [2026-09-02 10:40:25.724] [DEBUG] QUERY OK source="app_upgrade_device_statuses" db=2.8ms idle=67.2ms SELECT a0.`id`, a0.`config_id`, a0.`device_id`, a0.`device_sn`, a0.`vendor`, a0.`model`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`update_result`, a0.`status`, a0.`remark`, a0.`finish_time`, a0.`pushed_time`, a0.`retry_count`, a0.`inserted_at`, a0.`updated_at` FROM `app_upgrade_device_statuses` AS a0 WHERE ((a0.`device_sn` = ?) AND a0.`status` IN ('pending','pushed')) ["61250415798001"] ↳ TmsCore.TerminalManagement.AppUpgradeService.maybe_repush_for_device/1, at: lib/tms_core/terminal_management/app_upgrade_service.ex:148 [2026-09-02 10:40:25.776] [DEBUG] QUERY OK db=50.9ms idle=3.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [1, "org-id-placeholder", "-3498384-11-16T00:09:59Z", ~N[2026-09-02 10:40:25], ~N[2026-09-02 10:40:25]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:179 [2026-09-02 10:40:25.777] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 105830, oid: "org-id-placeholder", upload_time: "-3498384-11-16T00:09:59Z", terminal_id: 1, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:40:25], updated_at: ~N[2026-09-02 10:40:25]} [2026-09-02 10:40:25.780] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Device Connected", "timestamp" => "-3498384-11-16T00:09:59Z", "value" => "online"} [2026-09-02 10:40:25.821] [DEBUG] QUERY OK db=38.1ms idle=6.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Device Connected", "-3498384-11-16T00:09:59Z", "online", "status", 105830, ~N[2026-09-02 10:40:25], ~N[2026-09-02 10:40:25]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:40:25.821] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084502, itemkey: "status", value: "online", timestamp: "-3498384-11-16T00:09:59Z", message: "Device Connected", status_log_id: 105830, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:40:25], updated_at: ~N[2026-09-02 10:40:25]}} [2026-09-02 10:40:25.822] [INFO ] Setting terminal 61250415798001 status to 'online' from status itemkey [2026-09-02 10:40:25.823] [WARN ] Unexpected async result [2026-09-02 10:40:25.823] [WARN ] Unexpected async result [2026-09-02 10:40:25.823] [WARN ] Unexpected async result [2026-09-02 10:41:46.599] [INFO ] Received status update for terminal 98251226730001 [2026-09-02 10:41:46.600] [INFO ] Incoming JSON payload: {"oid":"98769389-dfa4-4b99-9d25-506b28a48160","sn":"98251226730001","uploadTime":"2026-09-02T10:41:45Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-09-02T10:41:45Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-09-02T10:41:45Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-09-02T10:41:45Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-09-02T10:41:45Z"},{"itemkey":"ram_free_mb","value":"842","timestamp":"2026-09-02T10:41:45Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-09-02T10:41:45Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-09-02T10:41:45Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-09-02T10:41:45Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-09-02T10:41:45Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-09-02T10:41:45Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-09-02T10:41:45Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-09-02T10:41:45Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-09-02T10:41:45Z"},{"itemkey":"data_usage_mb","value":"39","timestamp":"2026-09-02T10:41:45Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-09-02T10:41:45Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-09-02 10:41:46.605] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "98769389-dfa4-4b99-9d25-506b28a48160", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-09-02T10:41:45Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-09-02T10:41:45Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-09-02T10:41:45Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-09-02T10:41:45Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-09-02T10:41:45Z", "value" => "842"}, %{"itemkey" => "network_type", "timestamp" => "2026-09-02T10:41:45Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-09-02T10:41:45Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-09-02T10:41:45Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-09-02T10:41:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-09-02T10:41:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-09-02T10:41:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-09-02T10:41:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-09-02T10:41:45Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-09-02T10:41:45Z", "value" => "39"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-09-02T10:41:45Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-09-02T10:41:45Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-09-02T10:41:45Z", "vendor" => "morefun"} [2026-09-02 10:41:46.606] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-09-02 10:41:46.606] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-09-02 10:41:46.606] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-09-02 10:41:46.611] [DEBUG] QUERY OK source="parameter_templates" db=5.2ms idle=1111.6ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-09-02 10:41:46.616] [DEBUG] QUERY OK source="parameter_templates" db=1.2ms idle=528.0ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-09-02 10:41:46.616] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-09-02 10:41:46.617] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=4.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:140 [2026-09-02 10:41:46.675] [DEBUG] QUERY OK source="tms_terminals" db=16.4ms queue=41.2ms idle=1.5ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-09-02 10:41:46], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-09-02 10:41:46.675] [INFO ] Terminal updated: 98251226730001 [2026-09-02 10:41:46.675] [INFO ] Event published: terminal_updated [2026-09-02 10:41:46.676] [DEBUG] Processing terminal event: terminal_updated [2026-09-02 10:41:46.676] [INFO ] Processing terminal_updated event for terminal 33 [2026-09-02 10:41:46.676] [INFO ] Changed fields: [:vendor, :model] [2026-09-02 10:41:46.678] [DEBUG] QUERY OK source="terminal_group_memberships" db=2.9ms idle=58.5ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-09-02 10:41:46], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-09-02 10:41:46.682] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms queue=0.5ms idle=0.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-09-02 10:41:46.682] [DEBUG] QUERY OK source="terminal_group_rules" db=0.5ms idle=1.5ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-09-02 10:41:46.683] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-09-02 10:41:46.755] [DEBUG] QUERY OK source="tms_terminals" db=34.9ms queue=41.2ms idle=4.2ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "kiosk_launcher", "morefun", nil, nil, nil, nil, ~N[2026-09-02 10:41:46], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:164 [2026-09-02 10:41:46.756] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-09-02 10:41:46.761] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms idle=76.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:1184 [2026-09-02 10:41:46.864] [DEBUG] QUERY OK source="tms_terminals" db=61.6ms queue=41.4ms idle=5.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:41:46], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:174 [2026-09-02 10:41:46.866] [DEBUG] QUERY OK source="app_upgrade_device_statuses" db=0.5ms idle=105.1ms SELECT a0.`id`, a0.`config_id`, a0.`device_id`, a0.`device_sn`, a0.`vendor`, a0.`model`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`update_result`, a0.`status`, a0.`remark`, a0.`finish_time`, a0.`pushed_time`, a0.`retry_count`, a0.`inserted_at`, a0.`updated_at` FROM `app_upgrade_device_statuses` AS a0 WHERE ((a0.`device_sn` = ?) AND a0.`status` IN ('pending','pushed')) ["98251226730001"] ↳ TmsCore.TerminalManagement.AppUpgradeService.maybe_repush_for_device/1, at: lib/tms_core/terminal_management/app_upgrade_service.ex:148 [2026-09-02 10:41:46.912] [DEBUG] QUERY OK db=44.9ms idle=2.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "98769389-dfa4-4b99-9d25-506b28a48160", "2026-09-02T10:41:45Z", ~N[2026-09-02 10:41:46], ~N[2026-09-02 10:41:46]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:179 [2026-09-02 10:41:46.912] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 105833, oid: "98769389-dfa4-4b99-9d25-506b28a48160", upload_time: "2026-09-02T10:41:45Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:41:46], updated_at: ~N[2026-09-02 10:41:46]} [2026-09-02 10:41:46.913] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-09-02T10:41:45Z", "value" => "morefun"} [2026-09-02 10:41:46.997] [DEBUG] QUERY OK db=42.5ms queue=40.7ms idle=47.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:41:45Z", "morefun", "vendor", 105833, ~N[2026-09-02 10:41:46], ~N[2026-09-02 10:41:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:41:46.997] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084506, itemkey: "vendor", value: "morefun", timestamp: "2026-09-02T10:41:45Z", message: nil, status_log_id: 105833, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:41:46], updated_at: ~N[2026-09-02 10:41:46]}} [2026-09-02 10:41:46.997] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-09-02T10:41:45Z", "value" => "kiosk_launcher"} [2026-09-02 10:41:47.054] [DEBUG] QUERY OK db=56.2ms queue=0.1ms idle=86.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:41:45Z", "kiosk_launcher", "model", 105833, ~N[2026-09-02 10:41:46], ~N[2026-09-02 10:41:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:41:47.055] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084509, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-09-02T10:41:45Z", message: nil, status_log_id: 105833, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:41:46], updated_at: ~N[2026-09-02 10:41:46]}} [2026-09-02 10:41:47.055] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-09-02T10:41:45Z", "value" => "1.0"} [2026-09-02 10:41:47.095] [DEBUG] QUERY OK db=39.9ms idle=58.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:41:45Z", "1.0", "app_version", 105833, ~N[2026-09-02 10:41:47], ~N[2026-09-02 10:41:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:41:47.096] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084511, itemkey: "app_version", value: "1.0", timestamp: "2026-09-02T10:41:45Z", message: nil, status_log_id: 105833, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:41:47], updated_at: ~N[2026-09-02 10:41:47]}} [2026-09-02 10:41:47.096] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-09-02T10:41:45Z", "value" => "13"} [2026-09-02 10:41:47.153] [DEBUG] QUERY OK db=56.6ms queue=0.1ms idle=6.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:41:45Z", "13", "android_version", 105833, ~N[2026-09-02 10:41:47], ~N[2026-09-02 10:41:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:41:47.154] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084514, itemkey: "android_version", value: "13", timestamp: "2026-09-02T10:41:45Z", message: nil, status_log_id: 105833, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:41:47], updated_at: ~N[2026-09-02 10:41:47]}} [2026-09-02 10:41:47.154] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-09-02T10:41:45Z", "value" => "842"} [2026-09-02 10:41:47.179] [DEBUG] QUERY OK db=24.2ms idle=59.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:41:45Z", "842", "ram_free_mb", 105833, ~N[2026-09-02 10:41:47], ~N[2026-09-02 10:41:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:41:47.179] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084517, itemkey: "ram_free_mb", value: "842", timestamp: "2026-09-02T10:41:45Z", message: nil, status_log_id: 105833, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:41:47], updated_at: ~N[2026-09-02 10:41:47]}} [2026-09-02 10:41:47.179] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-09-02T10:41:45Z", "value" => "WIFI"} [2026-09-02 10:41:47.257] [DEBUG] QUERY OK db=77.4ms idle=26.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:41:45Z", "WIFI", "network_type", 105833, ~N[2026-09-02 10:41:47], ~N[2026-09-02 10:41:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:41:47.257] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084520, itemkey: "network_type", value: "WIFI", timestamp: "2026-09-02T10:41:45Z", message: nil, status_log_id: 105833, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:41:47], updated_at: ~N[2026-09-02 10:41:47]}} [2026-09-02 10:41:47.258] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-09-02T10:41:45Z", "value" => "true"} [2026-09-02 10:41:47.278] [DEBUG] QUERY OK db=18.9ms idle=80.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:41:45Z", "true", "kiosk_active", 105833, ~N[2026-09-02 10:41:47], ~N[2026-09-02 10:41:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:41:47.279] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084523, itemkey: "kiosk_active", value: "true", timestamp: "2026-09-02T10:41:45Z", message: nil, status_log_id: 105833, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:41:47], updated_at: ~N[2026-09-02 10:41:47]}} [2026-09-02 10:41:47.279] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-09-02T10:41:45Z", "value" => ""} [2026-09-02 10:41:47.316] [DEBUG] QUERY OK db=37.0ms queue=0.1ms idle=21.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-09-02T10:41:45Z", "sim_operator", 105833, ~N[2026-09-02 10:41:47], ~N[2026-09-02 10:41:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:41:47.316] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084526, itemkey: "sim_operator", value: nil, timestamp: "2026-09-02T10:41:45Z", message: nil, status_log_id: 105833, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:41:47], updated_at: ~N[2026-09-02 10:41:47]}} [2026-09-02 10:41:47.317] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-09-02T10:41:45Z", "value" => "UNKNOWN"} [2026-09-02 10:41:47.339] [DEBUG] QUERY OK db=22.1ms idle=38.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:41:45Z", "UNKNOWN", "sim_number", 105833, ~N[2026-09-02 10:41:47], ~N[2026-09-02 10:41:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:41:47.339] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084529, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-09-02T10:41:45Z", message: nil, status_log_id: 105833, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:41:47], updated_at: ~N[2026-09-02 10:41:47]}} [2026-09-02 10:41:47.339] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-09-02T10:41:45Z", "value" => "UNKNOWN"} [2026-09-02 10:41:47.404] [DEBUG] QUERY OK db=64.3ms idle=23.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:41:45Z", "UNKNOWN", "sim_iccid", 105833, ~N[2026-09-02 10:41:47], ~N[2026-09-02 10:41:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:41:47.405] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084532, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-09-02T10:41:45Z", message: nil, status_log_id: 105833, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:41:47], updated_at: ~N[2026-09-02 10:41:47]}} [2026-09-02 10:41:47.406] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-09-02T10:41:45Z", "value" => "UNKNOWN"} [2026-09-02 10:41:47.421] [DEBUG] QUERY OK db=14.3ms idle=67.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:41:45Z", "UNKNOWN", "sim_imsi", 105833, ~N[2026-09-02 10:41:47], ~N[2026-09-02 10:41:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:41:47.421] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084534, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-09-02T10:41:45Z", message: nil, status_log_id: 105833, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:41:47], updated_at: ~N[2026-09-02 10:41:47]}} [2026-09-02 10:41:47.421] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-09-02T10:41:45Z", "value" => "UNKNOWN"} [2026-09-02 10:41:47.453] [DEBUG] QUERY OK db=32.0ms idle=17.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:41:45Z", "UNKNOWN", "sim_iccid2", 105833, ~N[2026-09-02 10:41:47], ~N[2026-09-02 10:41:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:41:47.454] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084537, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-09-02T10:41:45Z", message: nil, status_log_id: 105833, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:41:47], updated_at: ~N[2026-09-02 10:41:47]}} [2026-09-02 10:41:47.454] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-09-02T10:41:45Z", "value" => "UNKNOWN"} [2026-09-02 10:41:47.492] [DEBUG] QUERY OK db=38.2ms idle=33.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:41:45Z", "UNKNOWN", "sim_imsi2", 105833, ~N[2026-09-02 10:41:47], ~N[2026-09-02 10:41:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:41:47.493] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084540, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-09-02T10:41:45Z", message: nil, status_log_id: 105833, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:41:47], updated_at: ~N[2026-09-02 10:41:47]}} [2026-09-02 10:41:47.493] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-09-02T10:41:45Z", "value" => "39"} [2026-09-02 10:41:47.546] [DEBUG] QUERY OK db=53.0ms idle=39.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:41:45Z", "39", "data_usage_mb", 105833, ~N[2026-09-02 10:41:47], ~N[2026-09-02 10:41:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:41:47.546] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084543, itemkey: "data_usage_mb", value: "39", timestamp: "2026-09-02T10:41:45Z", message: nil, status_log_id: 105833, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:41:47], updated_at: ~N[2026-09-02 10:41:47]}} [2026-09-02 10:41:47.547] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-09-02T10:41:45Z", "value" => "0"} [2026-09-02 10:41:47.582] [DEBUG] QUERY OK db=35.2ms idle=54.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:41:45Z", "0", "mobile_data_mb", 105833, ~N[2026-09-02 10:41:47], ~N[2026-09-02 10:41:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:41:47.583] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084546, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-09-02T10:41:45Z", message: nil, status_log_id: 105833, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:41:47], updated_at: ~N[2026-09-02 10:41:47]}} [2026-09-02 10:41:47.583] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-09-02T10:41:45Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-09-02 10:41:47.625] [DEBUG] QUERY OK db=39.3ms queue=0.1ms idle=38.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:41:45Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 105833, ~N[2026-09-02 10:41:47], ~N[2026-09-02 10:41:47]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:41:47.626] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084548, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-09-02T10:41:45Z", message: nil, status_log_id: 105833, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:41:47], updated_at: ~N[2026-09-02 10:41:47]}} [2026-09-02 10:41:47.626] [INFO ] Received status update for terminal 98251226730001 [2026-09-02 10:41:47.626] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-09-02T10:41:46Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-09-02T10:41:46Z","value":"34"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-09-02T10:41:46Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-09-02T10:41:46Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-09-02T10:41:46Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-09-02T10:41:46Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-09-02T10:41:46Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-09-02T10:41:46Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-09-02T10:41:46Z","vendor":"MoreFun"} [2026-09-02 10:41:47.627] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-09-02T10:41:46Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-09-02T10:41:46Z", "value" => "34"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-09-02T10:41:46Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-09-02T10:41:46Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-09-02T10:41:46Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-09-02T10:41:46Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-09-02T10:41:46Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-09-02T10:41:46Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-09-02T10:41:46Z", "vendor" => "MoreFun"} [2026-09-02 10:41:47.627] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-09-02 10:41:47.627] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-09-02 10:41:47.627] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-09-02 10:41:47.628] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=45.2ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-09-02 10:41:47.629] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.1ms idle=4.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-09-02 10:41:47.631] [DEBUG] QUERY OK source="parameter_template_values" db=0.6ms idle=1.2ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-09-02 10:41:47.636] [DEBUG] QUERY OK source="parameter_definitions" db=2.5ms queue=1.2ms idle=3.0ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-09-02 10:41:47.641] [DEBUG] QUERY OK source="pos_terminal" db=4.8ms idle=6.2ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-09-02 10:41:47.678] [DEBUG] QUERY OK source="pos_merchant" db=35.9ms idle=5.7ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [350] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-09-02 10:41:47.680] [DEBUG] QUERY OK db=0.5ms queue=1.4ms idle=784.0ms SELECT COALESCE(JSON_UNQUOTE(JSON_EXTRACT(mc.settings, '$.BASE_MERCHANT_NAME')), '') as base_merchant_name, COALESCE(u.name, '') as user_name, COALESCE(um.softpos_uuid, '') as softpos_uuid, COALESCE(mc.settings, '{}') as settings FROM user_metadata um LEFT JOIN merchant_configuration mc ON mc.user_id = um.user_id LEFT JOIN users u ON u.id = um.user_id WHERE um.merchant_refrence_number = ? LIMIT 1 ["667267350000000"] [2026-09-02 10:41:47.680] [INFO ] ParamsZipBuilder: Merchant info for merchantid=667267350000000 - business_name=Shubham003, QR_USE_SSL=, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-09-02 10:41:47.681] [DEBUG] QUERY OK source="pos_terminal_data" db=0.6ms queue=0.3ms idle=38.9ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["26735914"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-09-02 10:41:47.682] [DEBUG] QUERY OK source="address" db=0.3ms idle=3.7ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [639] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-09-02 10:41:47.683] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="667267350000000" [2026-09-02 10:41:47.686] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-09-02 10:41:47.720] [DEBUG] QUERY OK db=32.2ms idle=6.5ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "ed36f26ba748cd9927ef3272c969cb10e821ed1b86a89877043f1a362383cebb", 3172, 912, ~U[2026-09-02 10:41:47Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-09-02 10:41:47], ~N[2026-09-02 10:41:47]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-09-02 10:41:47.720] [INFO ] AutoPushService: Created push log 60585 for MF919 params.zip [2026-09-02 10:41:47.721] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4017/ota/98251226730001/params.zip", "requestId" => 3172, "type" => "tms_command", "version" => "1.0.0"} [2026-09-02 10:41:47.721] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-09-02 10:41:47.721] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-09-02 10:41:47.725] [DEBUG] QUERY OK source="config_file_versions" db=3.5ms idle=39.3ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-09-02 10:41:47.727] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730001 at priv/ota/98251226730001/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-09-02 10:41:47.769] [DEBUG] QUERY OK db=41.1ms idle=8.1ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "c237fa0afb57e7c520564d9afe93f117d2a5a37c2e471e3485bb2dc6a4745963", 6307, 17947, ~U[2026-09-02 10:41:47Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-09-02 10:41:47], ~N[2026-09-02 10:41:47]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-09-02 10:41:47.770] [INFO ] AutoPushService: Created push log 60586 for MF919 l3config.zip (version: 1.0.1) [2026-09-02 10:41:47.770] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4017/ota/98251226730001/l3config.zip", "requestId" => 6307, "type" => "tms_command", "version" => "1.0.1"} [2026-09-02 10:41:47.770] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-09-02 10:41:47.770] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-09-02 10:41:47.773] [DEBUG] QUERY OK source="config_file_versions" db=2.2ms idle=46.2ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-09-02 10:41:47.773] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-09-02 10:41:47.776] [DEBUG] QUERY OK source="tms_terminals" db=2.6ms queue=0.1ms idle=4.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-09-02 10:41:47.776] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730001 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-09-02 10:41:47.783] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-09-02 10:41:47.783] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 10:41:47.784] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 10:41:47.785] [DEBUG] QUERY OK source="config_file_versions" db=1.3ms idle=10.8ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-09-02 10:41:47.786] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-09-02 10:41:47.786] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-09-02 10:41:47.787] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=9.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:140 [2026-09-02 10:41:47.788] [INFO ] Terminal updated: 98251226730001 [2026-09-02 10:41:47.841] [DEBUG] QUERY OK source="tms_terminals" db=9.9ms queue=42.4ms idle=2.9ms UPDATE `tms_terminals` SET `status` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "3.8.7.3", "1.0.0", "1.0.1", "1.0.0", ~N[2026-09-02 10:41:47], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:164 [2026-09-02 10:41:47.842] [DEBUG] QUERY OK source="parameter_templates" db=1.4ms idle=53.8ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) ORDER BY p0.`updated_at` DESC LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_parameter_version/2, at: lib/tms_core/terminal_management/version_compliance_checker.ex:105 [2026-09-02 10:41:47.843] [DEBUG] QUERY OK source="config_file_versions" db=0.7ms idle=2.0ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-09-02 10:41:47.844] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms idle=1.1ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-09-02 10:41:47.844] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-09-02 10:41:47.926] [DEBUG] QUERY OK source="parameter_push_logs" db=81.1ms queue=0.2ms idle=1.0ms SELECT TRUE FROM `parameter_push_logs` AS p0 WHERE ((((p0.`terminal_id` = ?) AND (p0.`config_type` = ?)) AND (p0.`inserted_at` >= ?)) AND p0.`status` IN ('pending','sent')) LIMIT 1 [33, "application", ~N[2026-09-02 10:11:47]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-09-02 10:41:47.926] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-09-02 10:41:47.927] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-09-02 10:41:47.927] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=82.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-09-02 10:41:47.931] [DEBUG] QUERY OK source="config_file_versions" db=2.8ms idle=1.8ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-09-02 10:41:47.931] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-09-02 10:41:47.932] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.2ms idle=3.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:1184 [2026-09-02 10:41:48.004] [DEBUG] QUERY OK source="tms_terminals" db=27.8ms queue=43.5ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:41:47], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:174 [2026-09-02 10:41:48.012] [DEBUG] QUERY OK source="app_upgrade_device_statuses" db=1.2ms queue=0.1ms idle=78.2ms SELECT a0.`id`, a0.`config_id`, a0.`device_id`, a0.`device_sn`, a0.`vendor`, a0.`model`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`update_result`, a0.`status`, a0.`remark`, a0.`finish_time`, a0.`pushed_time`, a0.`retry_count`, a0.`inserted_at`, a0.`updated_at` FROM `app_upgrade_device_statuses` AS a0 WHERE ((a0.`device_sn` = ?) AND a0.`status` IN ('pending','pushed')) ["98251226730001"] ↳ TmsCore.TerminalManagement.AppUpgradeService.maybe_repush_for_device/1, at: lib/tms_core/terminal_management/app_upgrade_service.ex:148 [2026-09-02 10:41:48.051] [DEBUG] QUERY OK db=36.8ms queue=1.9ms idle=8.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-09-02T10:41:46Z", ~N[2026-09-02 10:41:48], ~N[2026-09-02 10:41:48]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:179 [2026-09-02 10:41:48.052] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 105836, oid: "organization_id", upload_time: "2026-09-02T10:41:46Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:41:48], updated_at: ~N[2026-09-02 10:41:48]} [2026-09-02 10:41:48.052] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-09-02T10:41:46Z", "value" => "online"} [2026-09-02 10:41:48.101] [DEBUG] QUERY OK db=48.0ms queue=0.3ms idle=40.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-09-02T10:41:46Z", "online", "status", 105836, ~N[2026-09-02 10:41:48], ~N[2026-09-02 10:41:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:41:48.102] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084552, itemkey: "status", value: "online", timestamp: "2026-09-02T10:41:46Z", message: "Terminal status update", status_log_id: 105836, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:41:48], updated_at: ~N[2026-09-02 10:41:48]}} [2026-09-02 10:41:48.102] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-09-02 10:41:48.102] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-09-02T10:41:46Z", "value" => "34"} [2026-09-02 10:41:48.157] [DEBUG] QUERY OK db=52.2ms idle=9.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-09-02T10:41:46Z", "34", "battery", 105836, ~N[2026-09-02 10:41:48], ~N[2026-09-02 10:41:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:41:48.158] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084555, itemkey: "battery", value: "34", timestamp: "2026-09-02T10:41:46Z", message: "Battery level", status_log_id: 105836, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:41:48], updated_at: ~N[2026-09-02 10:41:48]}} [2026-09-02 10:41:48.158] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-09-02T10:41:46Z", "value" => "online"} [2026-09-02 10:41:48.231] [DEBUG] QUERY OK db=72.0ms idle=57.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-09-02T10:41:46Z", "online", "network", 105836, ~N[2026-09-02 10:41:48], ~N[2026-09-02 10:41:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:41:48.231] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084557, itemkey: "network", value: "online", timestamp: "2026-09-02T10:41:46Z", message: "Network connectivity", status_log_id: 105836, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:41:48], updated_at: ~N[2026-09-02 10:41:48]}} [2026-09-02 10:41:48.231] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-09-02 10:41:48.231] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-09-02T10:41:46Z", "value" => "0"} [2026-09-02 10:41:48.267] [DEBUG] QUERY OK db=34.9ms idle=74.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-09-02T10:41:46Z", "0", "cpu", 105836, ~N[2026-09-02 10:41:48], ~N[2026-09-02 10:41:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:41:48.267] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084561, itemkey: "cpu", value: "0", timestamp: "2026-09-02T10:41:46Z", message: "CPU usage percentage", status_log_id: 105836, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:41:48], updated_at: ~N[2026-09-02 10:41:48]}} [2026-09-02 10:41:48.267] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-09-02T10:41:46Z", "value" => "1.0.0"} [2026-09-02 10:41:48.316] [DEBUG] QUERY OK db=48.4ms idle=36.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-09-02T10:41:46Z", "1.0.0", "parameter_config", 105836, ~N[2026-09-02 10:41:48], ~N[2026-09-02 10:41:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:41:48.316] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084564, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-09-02T10:41:46Z", message: "Current parameters version", status_log_id: 105836, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:41:48], updated_at: ~N[2026-09-02 10:41:48]}} [2026-09-02 10:41:48.316] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-09-02T10:41:46Z", "value" => "1.0.1"} [2026-09-02 10:41:48.357] [DEBUG] QUERY OK db=39.9ms idle=50.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-09-02T10:41:46Z", "1.0.1", "emv_config", 105836, ~N[2026-09-02 10:41:48], ~N[2026-09-02 10:41:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:41:48.357] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084567, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-09-02T10:41:46Z", message: "Current EMV config version", status_log_id: 105836, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:41:48], updated_at: ~N[2026-09-02 10:41:48]}} [2026-09-02 10:41:48.357] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-09-02T10:41:46Z", "value" => ""} [2026-09-02 10:41:48.422] [DEBUG] QUERY OK db=64.4ms queue=0.5ms idle=41.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-09-02T10:41:46Z", "keys_config", 105836, ~N[2026-09-02 10:41:48], ~N[2026-09-02 10:41:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:41:48.423] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084569, itemkey: "keys_config", value: nil, timestamp: "2026-09-02T10:41:46Z", message: "Current keys config version", status_log_id: 105836, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:41:48], updated_at: ~N[2026-09-02 10:41:48]}} [2026-09-02 10:41:48.423] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-09-02T10:41:46Z", "value" => "3.8.7.3"} [2026-09-02 10:41:48.465] [DEBUG] QUERY OK db=42.3ms idle=66.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-09-02T10:41:46Z", "3.8.7.3", "application", 105836, ~N[2026-09-02 10:41:48], ~N[2026-09-02 10:41:48]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:41:48.466] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084572, itemkey: "application", value: "3.8.7.3", timestamp: "2026-09-02T10:41:46Z", message: "Current application version", status_log_id: 105836, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:41:48], updated_at: ~N[2026-09-02 10:41:48]}} [2026-09-02 10:41:48.466] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-09-02T10:41:47Z"} [2026-09-02 10:41:48.467] [INFO ] Received device ACK from 98251226730001: oid= status=error [2026-09-02 10:41:48.467] [WARN ] Unhandled device ACK oid= from 98251226730001: %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-09-02T10:41:47Z"} [2026-09-02 10:41:48.467] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.0","requestId":"3172","status":"success","timestamp":1788345707399,"type":"tms_response"} [2026-09-02 10:41:48.467] [INFO ] Processing file download response for device 98251226730001, request_id: 3172 [2026-09-02 10:41:48.468] [DEBUG] QUERY OK source="file_download_logs" db=0.5ms queue=0.6ms idle=45.1ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["3172"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:41:48.469] [INFO ] No file download log for request_id 3172; response not attached to a push [2026-09-02 10:41:48.469] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:41:48.469370Z], response: %{"message" => "Already up to date: 1.0.0", "requestId" => "3172", "status" => "success", "timestamp" => 1788345707399, "type" => "tms_response"}, request_id: "3172", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:41:48.469] [WARN ] Unexpected async result [2026-09-02 10:41:48.470] [WARN ] Unexpected async result [2026-09-02 10:41:48.479] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.1","requestId":"6307","status":"success","timestamp":1788345707419,"type":"tms_response"} [2026-09-02 10:41:48.479] [INFO ] Processing file download response for device 98251226730001, request_id: 6307 [2026-09-02 10:41:48.483] [DEBUG] QUERY OK source="file_download_logs" db=3.3ms idle=14.5ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["6307"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:41:48.483] [INFO ] No file download log for request_id 6307; response not attached to a push [2026-09-02 10:41:48.484] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:41:48.483993Z], response: %{"message" => "Already up to date: 1.0.1", "requestId" => "6307", "status" => "success", "timestamp" => 1788345707419, "type" => "tms_response"}, request_id: "6307", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:41:48.488] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.0","requestId":"285026","status":"success","timestamp":1788345707441,"type":"tms_response"} [2026-09-02 10:41:48.488] [INFO ] Processing file download response for device 98251226730001, request_id: 285026 [2026-09-02 10:41:48.491] [DEBUG] QUERY OK source="file_download_logs" db=1.5ms idle=19.7ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["285026"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:41:48.492] [INFO ] No file download log for request_id 285026; response not attached to a push [2026-09-02 10:41:48.494] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:41:48.492426Z], response: %{"message" => "Already up to date: 1.0.0", "requestId" => "285026", "status" => "success", "timestamp" => 1788345707441, "type" => "tms_response"}, request_id: "285026", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:41:48.494] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-09-02T10:41:47Z"} [2026-09-02 10:41:48.495] [INFO ] Received device ACK from 98251226730001: oid= status=error [2026-09-02 10:41:48.496] [WARN ] Unhandled device ACK oid= from 98251226730001: %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-09-02T10:41:47Z"} [2026-09-02 10:41:48.496] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-09-02T10:41:47Z"} [2026-09-02 10:41:48.496] [INFO ] Received device ACK from 98251226730001: oid= status=error [2026-09-02 10:41:48.497] [WARN ] Unhandled device ACK oid= from 98251226730001: %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-09-02T10:41:47Z"} [2026-09-02 10:41:48.501] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.1","requestId":"285090","status":"success","timestamp":1788345707462,"type":"tms_response"} [2026-09-02 10:41:48.501] [INFO ] Processing file download response for device 98251226730001, request_id: 285090 [2026-09-02 10:41:48.502] [DEBUG] QUERY OK source="file_download_logs" db=0.4ms idle=17.9ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["285090"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:41:48.502] [INFO ] No file download log for request_id 285090; response not attached to a push [2026-09-02 10:41:48.502] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:41:48.502432Z], response: %{"message" => "Already up to date: 1.0.1", "requestId" => "285090", "status" => "success", "timestamp" => 1788345707462, "type" => "tms_response"}, request_id: "285090", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:41:48.502] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-09-02T10:41:47Z"} [2026-09-02 10:41:48.502] [INFO ] Received device ACK from 98251226730001: oid= status=error [2026-09-02 10:41:48.502] [WARN ] Unhandled device ACK oid= from 98251226730001: %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-09-02T10:41:47Z"} [2026-09-02 10:44:05.947] [INFO ] Received status update for terminal 98251226730001 [2026-09-02 10:44:05.948] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-09-02T10:44:05Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-09-02T10:44:05Z","value":"34"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-09-02T10:44:05Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-09-02T10:44:05Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-09-02T10:44:05Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-09-02T10:44:05Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-09-02T10:44:05Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-09-02T10:44:05Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-09-02T10:44:05Z","vendor":"MoreFun"} [2026-09-02 10:44:05.952] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-09-02T10:44:05Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-09-02T10:44:05Z", "value" => "34"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-09-02T10:44:05Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-09-02T10:44:05Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-09-02T10:44:05Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-09-02T10:44:05Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-09-02T10:44:05Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-09-02T10:44:05Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-09-02T10:44:05Z", "vendor" => "MoreFun"} [2026-09-02 10:44:05.953] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-09-02 10:44:05.953] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-09-02 10:44:05.953] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-09-02 10:44:05.954] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms idle=1340.7ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-09-02 10:44:05.957] [DEBUG] QUERY OK source="tms_terminals" db=1.9ms idle=338.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-09-02 10:44:05.962] [DEBUG] QUERY OK source="parameter_template_values" db=5.2ms idle=2.5ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-09-02 10:44:05.965] [DEBUG] QUERY OK source="parameter_definitions" db=1.0ms queue=0.9ms idle=6.3ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-09-02 10:44:05.967] [DEBUG] QUERY OK source="pos_terminal" db=1.0ms idle=3.3ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-09-02 10:44:06.006] [DEBUG] QUERY OK source="pos_merchant" db=38.7ms idle=2.0ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [350] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-09-02 10:44:06.010] [DEBUG] QUERY OK db=0.7ms queue=2.7ms idle=1106.4ms SELECT COALESCE(JSON_UNQUOTE(JSON_EXTRACT(mc.settings, '$.BASE_MERCHANT_NAME')), '') as base_merchant_name, COALESCE(u.name, '') as user_name, COALESCE(um.softpos_uuid, '') as softpos_uuid, COALESCE(mc.settings, '{}') as settings FROM user_metadata um LEFT JOIN merchant_configuration mc ON mc.user_id = um.user_id LEFT JOIN users u ON u.id = um.user_id WHERE um.merchant_refrence_number = ? LIMIT 1 ["667267350000000"] [2026-09-02 10:44:06.012] [INFO ] ParamsZipBuilder: Merchant info for merchantid=667267350000000 - business_name=Shubham003, QR_USE_SSL=, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-09-02 10:44:06.015] [DEBUG] QUERY OK source="pos_terminal_data" db=3.1ms idle=45.4ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["26735914"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-09-02 10:44:06.018] [DEBUG] QUERY OK source="address" db=2.9ms idle=9.7ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [639] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-09-02 10:44:06.019] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="667267350000000" [2026-09-02 10:44:06.024] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-09-02 10:44:06.112] [DEBUG] QUERY OK db=86.2ms idle=9.9ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "b7ad08547a074d5594f14791d0634d8eef49b7d73241925066ed76969776d68f", 10338, 912, ~U[2026-09-02 10:44:06Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-09-02 10:44:06], ~N[2026-09-02 10:44:06]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-09-02 10:44:06.112] [INFO ] AutoPushService: Created push log 60589 for MF919 params.zip [2026-09-02 10:44:06.112] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4017/ota/98251226730001/params.zip", "requestId" => 10338, "type" => "tms_command", "version" => "1.0.0"} [2026-09-02 10:44:06.112] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-09-02 10:44:06.113] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-09-02 10:44:06.116] [DEBUG] QUERY OK source="config_file_versions" db=2.9ms idle=95.7ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-09-02 10:44:06.121] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730001 at priv/ota/98251226730001/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-09-02 10:44:06.175] [DEBUG] QUERY OK db=53.7ms idle=10.1ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "44e689095ea3496b65931afaeb2db441fe27b69c806de51b3582ed2eb9d6d468", 6531, 17947, ~U[2026-09-02 10:44:06Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-09-02 10:44:06], ~N[2026-09-02 10:44:06]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-09-02 10:44:06.175] [INFO ] AutoPushService: Created push log 60591 for MF919 l3config.zip (version: 1.0.1) [2026-09-02 10:44:06.176] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4017/ota/98251226730001/l3config.zip", "requestId" => 6531, "type" => "tms_command", "version" => "1.0.1"} [2026-09-02 10:44:06.176] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-09-02 10:44:06.176] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-09-02 10:44:06.187] [DEBUG] QUERY OK source="config_file_versions" db=2.6ms idle=67.6ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-09-02 10:44:06.187] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-09-02 10:44:06.188] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=11.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-09-02 10:44:06.188] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730001 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-09-02 10:44:06.190] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-09-02 10:44:06.191] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 10:44:06.191] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 10:44:06.193] [DEBUG] QUERY OK source="config_file_versions" db=1.7ms idle=4.7ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-09-02 10:44:06.194] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-09-02 10:44:06.194] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-09-02 10:44:06.196] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=6.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:140 [2026-09-02 10:44:06.196] [INFO ] Terminal updated: 98251226730001 [2026-09-02 10:44:06.197] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=3.1ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) ORDER BY p0.`updated_at` DESC LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_parameter_version/2, at: lib/tms_core/terminal_management/version_compliance_checker.ex:105 [2026-09-02 10:44:06.198] [DEBUG] QUERY OK source="config_file_versions" db=1.3ms idle=1.3ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-09-02 10:44:06.199] [DEBUG] QUERY OK source="config_file_versions" db=0.3ms queue=0.1ms idle=1.7ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-09-02 10:44:06.199] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-09-02 10:44:06.246] [DEBUG] QUERY OK source="parameter_push_logs" db=46.3ms idle=1.0ms SELECT TRUE FROM `parameter_push_logs` AS p0 WHERE ((((p0.`terminal_id` = ?) AND (p0.`config_type` = ?)) AND (p0.`inserted_at` >= ?)) AND p0.`status` IN ('pending','sent')) LIMIT 1 [33, "application", ~N[2026-09-02 10:14:06]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-09-02 10:44:06.246] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-09-02 10:44:06.246] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-09-02 10:44:06.250] [DEBUG] QUERY OK source="tms_terminals" db=3.5ms idle=47.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-09-02 10:44:06.252] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms queue=0.6ms idle=4.4ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-09-02 10:44:06.252] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-09-02 10:44:06.253] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=2.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:1184 [2026-09-02 10:44:06.282] [DEBUG] QUERY OK source="tms_terminals" db=28.3ms queue=0.4ms idle=1.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:44:06], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:174 [2026-09-02 10:44:06.285] [DEBUG] QUERY OK source="app_upgrade_device_statuses" db=0.6ms queue=0.1ms idle=31.3ms SELECT a0.`id`, a0.`config_id`, a0.`device_id`, a0.`device_sn`, a0.`vendor`, a0.`model`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`update_result`, a0.`status`, a0.`remark`, a0.`finish_time`, a0.`pushed_time`, a0.`retry_count`, a0.`inserted_at`, a0.`updated_at` FROM `app_upgrade_device_statuses` AS a0 WHERE ((a0.`device_sn` = ?) AND a0.`status` IN ('pending','pushed')) ["98251226730001"] ↳ TmsCore.TerminalManagement.AppUpgradeService.maybe_repush_for_device/1, at: lib/tms_core/terminal_management/app_upgrade_service.ex:148 [2026-09-02 10:44:06.354] [DEBUG] QUERY OK db=68.1ms idle=3.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-09-02T10:44:05Z", ~N[2026-09-02 10:44:06], ~N[2026-09-02 10:44:06]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:179 [2026-09-02 10:44:06.354] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 105838, oid: "organization_id", upload_time: "2026-09-02T10:44:05Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:44:06], updated_at: ~N[2026-09-02 10:44:06]} [2026-09-02 10:44:06.355] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-09-02T10:44:05Z", "value" => "online"} [2026-09-02 10:44:06.419] [DEBUG] QUERY OK db=64.4ms queue=0.1ms idle=69.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-09-02T10:44:05Z", "online", "status", 105838, ~N[2026-09-02 10:44:06], ~N[2026-09-02 10:44:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:44:06.420] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084576, itemkey: "status", value: "online", timestamp: "2026-09-02T10:44:05Z", message: "Terminal status update", status_log_id: 105838, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:44:06], updated_at: ~N[2026-09-02 10:44:06]}} [2026-09-02 10:44:06.420] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-09-02 10:44:06.424] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=69.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:44:06], 33] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:203 [2026-09-02 10:44:06.424] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-09-02T10:44:05Z", "value" => "34"} [2026-09-02 10:44:06.463] [DEBUG] QUERY OK db=38.6ms queue=0.2ms idle=5.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-09-02T10:44:05Z", "34", "battery", 105838, ~N[2026-09-02 10:44:06], ~N[2026-09-02 10:44:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:44:06.464] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084579, itemkey: "battery", value: "34", timestamp: "2026-09-02T10:44:05Z", message: "Battery level", status_log_id: 105838, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:44:06], updated_at: ~N[2026-09-02 10:44:06]}} [2026-09-02 10:44:06.464] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-09-02T10:44:05Z", "value" => "online"} [2026-09-02 10:44:06.533] [DEBUG] QUERY OK db=67.8ms idle=41.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-09-02T10:44:05Z", "online", "network", 105838, ~N[2026-09-02 10:44:06], ~N[2026-09-02 10:44:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:44:06.534] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084582, itemkey: "network", value: "online", timestamp: "2026-09-02T10:44:05Z", message: "Network connectivity", status_log_id: 105838, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:44:06], updated_at: ~N[2026-09-02 10:44:06]}} [2026-09-02 10:44:06.534] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-09-02 10:44:06.537] [DEBUG] QUERY OK source="tms_terminals" db=2.7ms idle=70.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:44:06], 33] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:203 [2026-09-02 10:44:06.537] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-09-02T10:44:05Z", "value" => "0"} [2026-09-02 10:44:06.576] [DEBUG] QUERY OK db=37.6ms queue=0.3ms idle=4.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-09-02T10:44:05Z", "0", "cpu", 105838, ~N[2026-09-02 10:44:06], ~N[2026-09-02 10:44:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:44:06.576] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084583, itemkey: "cpu", value: "0", timestamp: "2026-09-02T10:44:05Z", message: "CPU usage percentage", status_log_id: 105838, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:44:06], updated_at: ~N[2026-09-02 10:44:06]}} [2026-09-02 10:44:06.576] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-09-02T10:44:05Z", "value" => "1.0.0"} [2026-09-02 10:44:06.613] [DEBUG] QUERY OK db=35.6ms queue=0.2ms idle=40.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-09-02T10:44:05Z", "1.0.0", "parameter_config", 105838, ~N[2026-09-02 10:44:06], ~N[2026-09-02 10:44:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:44:06.613] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084586, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-09-02T10:44:05Z", message: "Current parameters version", status_log_id: 105838, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:44:06], updated_at: ~N[2026-09-02 10:44:06]}} [2026-09-02 10:44:06.616] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-09-02T10:44:05Z", "value" => "1.0.1"} [2026-09-02 10:44:06.682] [DEBUG] QUERY OK db=64.0ms idle=4.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-09-02T10:44:05Z", "1.0.1", "emv_config", 105838, ~N[2026-09-02 10:44:06], ~N[2026-09-02 10:44:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:44:06.682] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084589, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-09-02T10:44:05Z", message: "Current EMV config version", status_log_id: 105838, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:44:06], updated_at: ~N[2026-09-02 10:44:06]}} [2026-09-02 10:44:06.682] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-09-02T10:44:05Z", "value" => ""} [2026-09-02 10:44:06.748] [DEBUG] QUERY OK db=60.8ms idle=59.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-09-02T10:44:05Z", "keys_config", 105838, ~N[2026-09-02 10:44:06], ~N[2026-09-02 10:44:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:44:06.748] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084592, itemkey: "keys_config", value: nil, timestamp: "2026-09-02T10:44:05Z", message: "Current keys config version", status_log_id: 105838, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:44:06], updated_at: ~N[2026-09-02 10:44:06]}} [2026-09-02 10:44:06.748] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-09-02T10:44:05Z", "value" => "3.8.7.3"} [2026-09-02 10:44:06.856] [DEBUG] QUERY OK db=107.1ms queue=0.1ms idle=66.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-09-02T10:44:05Z", "3.8.7.3", "application", 105838, ~N[2026-09-02 10:44:06], ~N[2026-09-02 10:44:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:44:06.857] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084595, itemkey: "application", value: "3.8.7.3", timestamp: "2026-09-02T10:44:05Z", message: "Current application version", status_log_id: 105838, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:44:06], updated_at: ~N[2026-09-02 10:44:06]}} [2026-09-02 10:44:06.858] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.1ms idle=114.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:44:06], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:233 [2026-09-02 10:44:06.858] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.0","requestId":"10338","status":"success","timestamp":1788345845743,"type":"tms_response"} [2026-09-02 10:44:06.859] [INFO ] Processing file download response for device 98251226730001, request_id: 10338 [2026-09-02 10:44:06.861] [DEBUG] QUERY OK source="file_download_logs" db=0.5ms queue=0.3ms idle=4.0ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["10338"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:44:06.861] [INFO ] No file download log for request_id 10338; response not attached to a push [2026-09-02 10:44:06.861] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:44:06.861324Z], response: %{"message" => "Already up to date: 1.0.0", "requestId" => "10338", "status" => "success", "timestamp" => 1788345845743, "type" => "tms_response"}, request_id: "10338", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:44:06.861] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-09-02T10:44:05Z"} [2026-09-02 10:44:06.861] [INFO ] Received device ACK from 98251226730001: oid= status=error [2026-09-02 10:44:06.865] [WARN ] Unhandled device ACK oid= from 98251226730001: %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-09-02T10:44:05Z"} [2026-09-02 10:44:06.865] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.0","requestId":"285506","status":"success","timestamp":1788345845764,"type":"tms_response"} [2026-09-02 10:44:06.865] [INFO ] Processing file download response for device 98251226730001, request_id: 285506 [2026-09-02 10:44:06.871] [DEBUG] QUERY OK source="file_download_logs" db=1.1ms queue=0.8ms idle=11.4ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["285506"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:44:06.872] [INFO ] No file download log for request_id 285506; response not attached to a push [2026-09-02 10:44:06.873] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:44:06.873729Z], response: %{"message" => "Already up to date: 1.0.0", "requestId" => "285506", "status" => "success", "timestamp" => 1788345845764, "type" => "tms_response"}, request_id: "285506", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:44:06.875] [WARN ] Unexpected async result [2026-09-02 10:44:06.875] [WARN ] Unexpected async result [2026-09-02 10:44:06.885] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.1","requestId":"6531","status":"success","timestamp":1788345845784,"type":"tms_response"} [2026-09-02 10:44:06.885] [INFO ] Processing file download response for device 98251226730001, request_id: 6531 [2026-09-02 10:44:06.889] [DEBUG] QUERY OK source="file_download_logs" db=3.6ms idle=24.8ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["6531"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:44:06.889] [INFO ] No file download log for request_id 6531; response not attached to a push [2026-09-02 10:44:06.892] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:44:06.889799Z], response: %{"message" => "Already up to date: 1.0.1", "requestId" => "6531", "status" => "success", "timestamp" => 1788345845784, "type" => "tms_response"}, request_id: "6531", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:44:06.905] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-09-02T10:44:05Z"} [2026-09-02 10:44:06.908] [INFO ] Received device ACK from 98251226730001: oid= status=error [2026-09-02 10:44:06.910] [WARN ] Unhandled device ACK oid= from 98251226730001: %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-09-02T10:44:05Z"} [2026-09-02 10:44:06.985] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.1","requestId":"285570","status":"success","timestamp":1788345845804,"type":"tms_response"} [2026-09-02 10:44:06.986] [INFO ] Processing file download response for device 98251226730001, request_id: 285570 [2026-09-02 10:44:06.988] [DEBUG] QUERY OK source="file_download_logs" db=1.1ms idle=115.8ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["285570"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:44:06.990] [INFO ] No file download log for request_id 285570; response not attached to a push [2026-09-02 10:44:06.991] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:44:06.991113Z], response: %{"message" => "Already up to date: 1.0.1", "requestId" => "285570", "status" => "success", "timestamp" => 1788345845804, "type" => "tms_response"}, request_id: "285570", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:44:06.991] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-09-02T10:44:05Z"} [2026-09-02 10:44:06.991] [INFO ] Received device ACK from 98251226730001: oid= status=error [2026-09-02 10:44:06.991] [WARN ] Unhandled device ACK oid= from 98251226730001: %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-09-02T10:44:05Z"} [2026-09-02 10:44:06.993] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-09-02T10:44:05Z"} [2026-09-02 10:44:06.994] [INFO ] Received device ACK from 98251226730001: oid= status=error [2026-09-02 10:44:06.994] [WARN ] Unhandled device ACK oid= from 98251226730001: %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-09-02T10:44:05Z"} [2026-09-02 10:44:12.449] [INFO ] Performing scheduled filter cache refresh... [2026-09-02 10:44:12.451] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=1494.6ms SELECT t0.`area`, t0.`vendor`, t0.`model` FROM `tms_terminals` AS t0 WHERE ((NOT (t0.`area` IS NULL) OR NOT (t0.`vendor` IS NULL)) OR NOT (t0.`model` IS NULL)) [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_terminal_filter_data/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:153 [2026-09-02 10:44:12.452] [DEBUG] QUERY OK source="filter_usage" db=0.9ms idle=805.8ms SELECT f0.`filter_type`, f0.`filter_value`, coalesce(sum(f0.`usage_count`), 0) FROM `filter_usage` AS f0 GROUP BY f0.`filter_type`, f0.`filter_value` [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_usage_statistics/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:190 [2026-09-02 10:44:12.452] [INFO ] Filter cache rebuilt: 0 areas, 5 vendors, 8 models [2026-09-02 10:44:12.835] [INFO ] Running offline device check... [2026-09-02 10:44:12.835] [INFO ] Starting offline device check... [2026-09-02 10:44:12.838] [DEBUG] QUERY OK source="tms_terminals" db=1.9ms idle=383.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1234 [2026-09-02 10:44:12.840] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=189.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [1] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:44:12.842] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=2.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:44:12.842] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:44:12.843] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:44:12.844] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:44:12.844] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:44:12.845] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:44:12.846] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:44:12.846] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.1ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:44:12.847] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.3ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:44:12.848] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:44:12.849] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:44:12.850] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:44:12.851] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:44:12.852] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:44:12.852] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:44:12.854] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:44:12.855] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:44:12.855] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:44:12.856] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:44:12.857] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:44:12.858] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:44:12.859] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:44:12.860] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:44:12.862] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:44:12.862] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:44:12.863] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:44:12.864] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:44:12.865] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:44:12.866] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:44:12.867] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:44:12.867] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:44:12.868] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:44:12.869] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:44:12.870] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:44:12.870] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:44:12.871] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:44:12.871] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:44:12.872] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:44:12.873] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:44:12.873] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:44:12.874] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:44:12.874] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:44:12.875] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:44:12.875] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:44:12.876] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:44:12.877] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:44:12.877] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:44:12.879] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:44:12.880] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:44:12.881] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.3ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:44:12.882] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:44:12.882] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [82] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:44:12.883] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=0.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [83] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:44:12.883] [INFO ] Offline device check completed. Found 50 offline devices, updated 0 statuses. [2026-09-02 10:44:12.883] [INFO ] Offline device check completed successfully [2026-09-02 10:45:29.935] [INFO ] Received status update for terminal 61250415798001 [2026-09-02 10:45:29.935] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61250415798001","vendor":"MoreFun","model":"SR600","uploadTime":"-4588561-02-03T06:39:04Z","org.device":[{"itemkey":"status","value":"online","timestamp":"-4588561-02-03T06:39:04Z","message":"Device Connected"}]} [2026-09-02 10:45:29.935] [INFO ] Decoded JSON: %{"model" => "SR600", "oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "status", "message" => "Device Connected", "timestamp" => "-4588561-02-03T06:39:04Z", "value" => "online"}], "sn" => "61250415798001", "uploadTime" => "-4588561-02-03T06:39:04Z", "vendor" => "MoreFun"} [2026-09-02 10:45:29.938] [INFO ] Extracted versions for 61250415798001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-09-02 10:45:29.938] [INFO ] Detected missing versions for 61250415798001, triggering auto-push [2026-09-02 10:45:29.938] [INFO ] AutoPushService: Triggering auto-push for 61250415798001 (MoreFun SR600) - missing version [2026-09-02 10:45:29.940] [DEBUG] QUERY OK source="parameter_templates" db=1.5ms idle=966.3ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["MoreFun", "SR600"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-09-02 10:45:29.942] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=1.3ms idle=910.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-09-02 10:45:29.944] [DEBUG] QUERY OK source="parameter_template_values" db=1.5ms idle=2.4ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [7] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-09-02 10:45:29.973] [DEBUG] QUERY OK db=29.1ms queue=0.1ms idle=2.3ms INSERT INTO `parameter_push_logs` (`status`,`request_id`,`log_time`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", 6755, ~U[2026-09-02 10:45:29Z], 1, "parameter", "SR600", "MoreFun", %{}, "full", 7, "missing_version", "1.0.0", ~N[2026-09-02 10:45:29], ~N[2026-09-02 10:45:29]] ↳ TmsCore.TerminalManagement.AutoPushService.push_generic_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:235 [2026-09-02 10:45:29.974] [INFO ] AutoPushService: Created push log 60593 for parameters (template: 7) [2026-09-02 10:45:29.974] [INFO ] SR600 MQTT Command: %{"command" => "file_download", "merchant_config" => "true", "request_id" => 6755, "retry_count" => "3", "version" => "1.0.0"} [2026-09-02 10:45:29.974] [INFO ] AutoPushService: Sending parameter push to 61250415798001 on topic: /ota/pFppbioOCKlo5c8E/61250415798001/update [2026-09-02 10:45:29.974] [INFO ] AutoPushService: Parameter push sent successfully to 61250415798001 [2026-09-02 10:45:30.035] [DEBUG] QUERY OK db=60.4ms idle=30.8ms INSERT INTO `parameter_push_logs` (`status`,`request_id`,`log_time`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?) ["pending", 6819, ~U[2026-09-02 10:45:29Z], 1, "emv_config", "SR600", "MoreFun", "full", "missing_version", ~N[2026-09-02 10:45:29], ~N[2026-09-02 10:45:29]] ↳ TmsCore.TerminalManagement.AutoPushService.push_regular_config/5, at: lib/tms_core/terminal_management/auto_push_service.ex:427 [2026-09-02 10:45:30.035] [INFO ] AutoPushService: Created push log for emv_config [2026-09-02 10:45:30.035] [INFO ] SR600 MQTT Command: %{"command" => "file_download", "merchant_config" => "true", "request_id" => 6819, "retry_count" => "3"} [2026-09-02 10:45:30.036] [INFO ] AutoPushService: Sending emv_config push to 61250415798001 on topic: /ota/pFppbioOCKlo5c8E/61250415798001/update [2026-09-02 10:45:30.039] [INFO ] AutoPushService: emv_config push sent successfully to 61250415798001 [2026-09-02 10:45:30.041] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms queue=1.0ms idle=3.7ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "SR600"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-09-02 10:45:30.041] [INFO ] KeysConfigService: Generating keys.json for 61250415798001 (SR600) [2026-09-02 10:45:30.042] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=3.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-09-02 10:45:30.042] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 61250415798001 with params: %{"kekKcv" => "112233", "model" => "SR600", "serialNumber" => "61250415798001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-09-02 10:45:30.046] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-09-02 10:45:30.047] [ERROR] KeysConfigService: Failed to generate keys for 61250415798001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 10:45:30.047] [ERROR] AutoPushService: Failed to generate keys.json for 61250415798001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 10:45:30.081] [DEBUG] QUERY OK db=34.1ms idle=6.4ms INSERT INTO `parameter_push_logs` (`status`,`request_id`,`log_time`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?) ["pending", 6851, ~U[2026-09-02 10:45:30Z], 1, "application", "SR600", "MoreFun", "full", "missing_version", ~N[2026-09-02 10:45:30], ~N[2026-09-02 10:45:30]] ↳ TmsCore.TerminalManagement.AutoPushService.push_regular_config/5, at: lib/tms_core/terminal_management/auto_push_service.ex:427 [2026-09-02 10:45:30.081] [INFO ] AutoPushService: Created push log for application [2026-09-02 10:45:30.082] [INFO ] SR600 MQTT Command: %{"command" => "file_download", "merchant_config" => "true", "request_id" => 6851, "retry_count" => "3"} [2026-09-02 10:45:30.082] [INFO ] AutoPushService: Sending application push to 61250415798001 on topic: /ota/pFppbioOCKlo5c8E/61250415798001/update [2026-09-02 10:45:30.082] [INFO ] AutoPushService: application push sent successfully to 61250415798001 [2026-09-02 10:45:30.082] [INFO ] AutoPushService: Auto-push completed for 61250415798001 [2026-09-02 10:45:30.085] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=0.1ms idle=40.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:140 [2026-09-02 10:45:30.086] [INFO ] Terminal updated: 61250415798001 [2026-09-02 10:45:30.148] [DEBUG] QUERY OK source="tms_terminals" db=62.1ms idle=4.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-09-02 10:45:30], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:164 [2026-09-02 10:45:30.148] [DEBUG] VersionComplianceChecker: 61250415798001 — all versions compliant [2026-09-02 10:45:30.154] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms idle=69.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:1184 [2026-09-02 10:45:30.199] [DEBUG] QUERY OK source="tms_terminals" db=43.2ms queue=0.9ms idle=6.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:45:30], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:174 [2026-09-02 10:45:30.201] [DEBUG] QUERY OK source="app_upgrade_device_statuses" db=0.9ms idle=45.2ms SELECT a0.`id`, a0.`config_id`, a0.`device_id`, a0.`device_sn`, a0.`vendor`, a0.`model`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`update_result`, a0.`status`, a0.`remark`, a0.`finish_time`, a0.`pushed_time`, a0.`retry_count`, a0.`inserted_at`, a0.`updated_at` FROM `app_upgrade_device_statuses` AS a0 WHERE ((a0.`device_sn` = ?) AND a0.`status` IN ('pending','pushed')) ["61250415798001"] ↳ TmsCore.TerminalManagement.AppUpgradeService.maybe_repush_for_device/1, at: lib/tms_core/terminal_management/app_upgrade_service.ex:148 [2026-09-02 10:45:30.265] [DEBUG] QUERY OK db=64.4ms idle=1.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [1, "org-id-placeholder", "-4588561-02-03T06:39:04Z", ~N[2026-09-02 10:45:30], ~N[2026-09-02 10:45:30]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:179 [2026-09-02 10:45:30.266] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 105841, oid: "org-id-placeholder", upload_time: "-4588561-02-03T06:39:04Z", terminal_id: 1, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:45:30], updated_at: ~N[2026-09-02 10:45:30]} [2026-09-02 10:45:30.266] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Device Connected", "timestamp" => "-4588561-02-03T06:39:04Z", "value" => "online"} [2026-09-02 10:45:30.321] [DEBUG] QUERY OK db=53.9ms idle=66.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Device Connected", "-4588561-02-03T06:39:04Z", "online", "status", 105841, ~N[2026-09-02 10:45:30], ~N[2026-09-02 10:45:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:45:30.322] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084600, itemkey: "status", value: "online", timestamp: "-4588561-02-03T06:39:04Z", message: "Device Connected", status_log_id: 105841, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:45:30], updated_at: ~N[2026-09-02 10:45:30]}} [2026-09-02 10:45:30.322] [INFO ] Setting terminal 61250415798001 status to 'online' from status itemkey [2026-09-02 10:45:30.326] [WARN ] Unexpected async result [2026-09-02 10:45:30.327] [WARN ] Unexpected async result [2026-09-02 10:45:30.328] [WARN ] Unexpected async result [2026-09-02 10:46:42.426] [INFO ] Received status update for terminal 98251226730001 [2026-09-02 10:46:42.426] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-09-02T10:46:41Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-09-02T10:46:41Z","value":"34"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-09-02T10:46:41Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-09-02T10:46:41Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-09-02T10:46:41Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-09-02T10:46:41Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-09-02T10:46:41Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-09-02T10:46:41Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-09-02T10:46:41Z","vendor":"MoreFun"} [2026-09-02 10:46:42.427] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-09-02T10:46:41Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-09-02T10:46:41Z", "value" => "34"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-09-02T10:46:41Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-09-02T10:46:41Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-09-02T10:46:41Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-09-02T10:46:41Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-09-02T10:46:41Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-09-02T10:46:41Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-09-02T10:46:41Z", "vendor" => "MoreFun"} [2026-09-02 10:46:42.427] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-09-02 10:46:42.427] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-09-02 10:46:42.427] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-09-02 10:46:42.437] [DEBUG] QUERY OK source="parameter_templates" db=9.6ms idle=1422.6ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-09-02 10:46:42.438] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=982.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-09-02 10:46:42.439] [DEBUG] QUERY OK source="parameter_template_values" db=0.4ms idle=1.5ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-09-02 10:46:42.443] [DEBUG] QUERY OK source="parameter_definitions" db=1.3ms queue=0.9ms idle=2.7ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-09-02 10:46:42.444] [DEBUG] QUERY OK source="pos_terminal" db=0.7ms idle=4.6ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-09-02 10:46:42.484] [DEBUG] QUERY OK source="pos_merchant" db=38.8ms queue=0.3ms idle=1.7ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [350] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-09-02 10:46:42.488] [DEBUG] QUERY OK db=2.6ms queue=1.8ms idle=1549.4ms SELECT COALESCE(JSON_UNQUOTE(JSON_EXTRACT(mc.settings, '$.BASE_MERCHANT_NAME')), '') as base_merchant_name, COALESCE(u.name, '') as user_name, COALESCE(um.softpos_uuid, '') as softpos_uuid, COALESCE(mc.settings, '{}') as settings FROM user_metadata um LEFT JOIN merchant_configuration mc ON mc.user_id = um.user_id LEFT JOIN users u ON u.id = um.user_id WHERE um.merchant_refrence_number = ? LIMIT 1 ["667267350000000"] [2026-09-02 10:46:42.489] [INFO ] ParamsZipBuilder: Merchant info for merchantid=667267350000000 - business_name=Shubham003, QR_USE_SSL=, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-09-02 10:46:42.489] [DEBUG] QUERY OK source="pos_terminal_data" db=0.6ms idle=30.4ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["26735914"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-09-02 10:46:42.491] [DEBUG] QUERY OK source="address" db=1.1ms idle=6.0ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [639] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-09-02 10:46:42.491] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="667267350000000" [2026-09-02 10:46:42.493] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-09-02 10:46:42.564] [DEBUG] QUERY OK db=69.0ms idle=5.0ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "cc2d378d876b10e89e03ba977feb18b93cbc96559a995bf2280ce55261aa8856", 10690, 912, ~U[2026-09-02 10:46:42Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-09-02 10:46:42], ~N[2026-09-02 10:46:42]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-09-02 10:46:42.565] [INFO ] AutoPushService: Created push log 60602 for MF919 params.zip [2026-09-02 10:46:42.565] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4017/ota/98251226730001/params.zip", "requestId" => 10690, "type" => "tms_command", "version" => "1.0.0"} [2026-09-02 10:46:42.565] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-09-02 10:46:42.565] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-09-02 10:46:42.569] [DEBUG] QUERY OK source="config_file_versions" db=1.8ms queue=0.2ms idle=76.0ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-09-02 10:46:42.574] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730001 at priv/ota/98251226730001/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-09-02 10:46:42.653] [DEBUG] QUERY OK db=71.9ms idle=16.8ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "e972013e48ff8db0251306d1258ee256ff8811655902da4d08661df00ec9e572", 6915, 17947, ~U[2026-09-02 10:46:42Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-09-02 10:46:42], ~N[2026-09-02 10:46:42]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-09-02 10:46:42.653] [INFO ] AutoPushService: Created push log 60604 for MF919 l3config.zip (version: 1.0.1) [2026-09-02 10:46:42.653] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4017/ota/98251226730001/l3config.zip", "requestId" => 6915, "type" => "tms_command", "version" => "1.0.1"} [2026-09-02 10:46:42.653] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-09-02 10:46:42.654] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-09-02 10:46:42.657] [DEBUG] QUERY OK source="config_file_versions" db=1.8ms idle=85.6ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-09-02 10:46:42.658] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-09-02 10:46:42.663] [DEBUG] QUERY OK source="tms_terminals" db=4.3ms idle=5.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-09-02 10:46:42.663] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730001 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-09-02 10:46:42.664] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-09-02 10:46:42.664] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 10:46:42.665] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 10:46:42.667] [DEBUG] QUERY OK source="config_file_versions" db=2.1ms idle=8.1ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-09-02 10:46:42.667] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-09-02 10:46:42.667] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-09-02 10:46:42.669] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=0.2ms idle=5.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:140 [2026-09-02 10:46:42.669] [INFO ] Terminal updated: 98251226730001 [2026-09-02 10:46:42.670] [DEBUG] QUERY OK source="parameter_templates" db=1.1ms idle=2.1ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) ORDER BY p0.`updated_at` DESC LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_parameter_version/2, at: lib/tms_core/terminal_management/version_compliance_checker.ex:105 [2026-09-02 10:46:42.673] [DEBUG] QUERY OK source="config_file_versions" db=2.3ms idle=1.8ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-09-02 10:46:42.674] [DEBUG] QUERY OK source="config_file_versions" db=0.8ms idle=2.9ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-09-02 10:46:42.674] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-09-02 10:46:42.716] [DEBUG] QUERY OK source="parameter_push_logs" db=41.7ms idle=1.7ms SELECT TRUE FROM `parameter_push_logs` AS p0 WHERE ((((p0.`terminal_id` = ?) AND (p0.`config_type` = ?)) AND (p0.`inserted_at` >= ?)) AND p0.`status` IN ('pending','sent')) LIMIT 1 [33, "application", ~N[2026-09-02 10:16:42]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-09-02 10:46:42.717] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-09-02 10:46:42.719] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-09-02 10:46:42.730] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=54.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-09-02 10:46:42.735] [DEBUG] QUERY OK source="config_file_versions" db=5.0ms idle=14.0ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-09-02 10:46:42.737] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-09-02 10:46:42.750] [DEBUG] QUERY OK source="tms_terminals" db=10.5ms idle=7.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:1184 [2026-09-02 10:46:42.756] [DEBUG] QUERY OK source="app_upgrade_device_statuses" db=4.7ms idle=15.3ms SELECT a0.`id`, a0.`config_id`, a0.`device_id`, a0.`device_sn`, a0.`vendor`, a0.`model`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`update_result`, a0.`status`, a0.`remark`, a0.`finish_time`, a0.`pushed_time`, a0.`retry_count`, a0.`inserted_at`, a0.`updated_at` FROM `app_upgrade_device_statuses` AS a0 WHERE ((a0.`device_sn` = ?) AND a0.`status` IN ('pending','pushed')) ["98251226730001"] ↳ TmsCore.TerminalManagement.AppUpgradeService.maybe_repush_for_device/1, at: lib/tms_core/terminal_management/app_upgrade_service.ex:148 [2026-09-02 10:46:42.824] [DEBUG] QUERY OK db=68.4ms idle=8.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-09-02T10:46:41Z", ~N[2026-09-02 10:46:42], ~N[2026-09-02 10:46:42]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:179 [2026-09-02 10:46:42.825] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 105844, oid: "organization_id", upload_time: "2026-09-02T10:46:41Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:46:42], updated_at: ~N[2026-09-02 10:46:42]} [2026-09-02 10:46:42.825] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-09-02T10:46:41Z", "value" => "online"} [2026-09-02 10:46:42.898] [DEBUG] QUERY OK db=68.6ms queue=0.1ms idle=73.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-09-02T10:46:41Z", "online", "status", 105844, ~N[2026-09-02 10:46:42], ~N[2026-09-02 10:46:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:46:42.898] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084604, itemkey: "status", value: "online", timestamp: "2026-09-02T10:46:41Z", message: "Terminal status update", status_log_id: 105844, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:46:42], updated_at: ~N[2026-09-02 10:46:42]}} [2026-09-02 10:46:42.899] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-09-02 10:46:42.908] [DEBUG] QUERY OK source="tms_terminals" db=9.3ms idle=74.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:46:42], 33] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:203 [2026-09-02 10:46:42.908] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-09-02T10:46:41Z", "value" => "34"} [2026-09-02 10:46:42.988] [DEBUG] QUERY OK db=78.3ms queue=1.5ms idle=10.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-09-02T10:46:41Z", "34", "battery", 105844, ~N[2026-09-02 10:46:42], ~N[2026-09-02 10:46:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:46:42.989] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084606, itemkey: "battery", value: "34", timestamp: "2026-09-02T10:46:41Z", message: "Battery level", status_log_id: 105844, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:46:42], updated_at: ~N[2026-09-02 10:46:42]}} [2026-09-02 10:46:42.989] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-09-02T10:46:41Z", "value" => "online"} [2026-09-02 10:46:43.057] [DEBUG] QUERY OK db=67.9ms idle=81.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-09-02T10:46:41Z", "online", "network", 105844, ~N[2026-09-02 10:46:42], ~N[2026-09-02 10:46:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:46:43.057] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084609, itemkey: "network", value: "online", timestamp: "2026-09-02T10:46:41Z", message: "Network connectivity", status_log_id: 105844, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:46:42], updated_at: ~N[2026-09-02 10:46:42]}} [2026-09-02 10:46:43.057] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-09-02 10:46:43.133] [DEBUG] QUERY OK source="tms_terminals" db=75.6ms idle=69.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:46:43], 33] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:203 [2026-09-02 10:46:43.134] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-09-02T10:46:41Z", "value" => "0"} [2026-09-02 10:46:43.202] [DEBUG] QUERY OK db=67.5ms idle=76.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-09-02T10:46:41Z", "0", "cpu", 105844, ~N[2026-09-02 10:46:43], ~N[2026-09-02 10:46:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:46:43.202] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084613, itemkey: "cpu", value: "0", timestamp: "2026-09-02T10:46:41Z", message: "CPU usage percentage", status_log_id: 105844, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:46:43], updated_at: ~N[2026-09-02 10:46:43]}} [2026-09-02 10:46:43.202] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-09-02T10:46:41Z", "value" => "1.0.0"} [2026-09-02 10:46:43.265] [DEBUG] QUERY OK db=63.0ms idle=69.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-09-02T10:46:41Z", "1.0.0", "parameter_config", 105844, ~N[2026-09-02 10:46:43], ~N[2026-09-02 10:46:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:46:43.266] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084616, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-09-02T10:46:41Z", message: "Current parameters version", status_log_id: 105844, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:46:43], updated_at: ~N[2026-09-02 10:46:43]}} [2026-09-02 10:46:43.266] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-09-02T10:46:41Z", "value" => "1.0.1"} [2026-09-02 10:46:43.317] [DEBUG] QUERY OK db=51.0ms idle=64.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-09-02T10:46:41Z", "1.0.1", "emv_config", 105844, ~N[2026-09-02 10:46:43], ~N[2026-09-02 10:46:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:46:43.318] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084619, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-09-02T10:46:41Z", message: "Current EMV config version", status_log_id: 105844, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:46:43], updated_at: ~N[2026-09-02 10:46:43]}} [2026-09-02 10:46:43.318] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-09-02T10:46:41Z", "value" => ""} [2026-09-02 10:46:43.363] [DEBUG] QUERY OK db=43.0ms queue=1.2ms idle=52.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-09-02T10:46:41Z", "keys_config", 105844, ~N[2026-09-02 10:46:43], ~N[2026-09-02 10:46:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:46:43.363] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084621, itemkey: "keys_config", value: nil, timestamp: "2026-09-02T10:46:41Z", message: "Current keys config version", status_log_id: 105844, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:46:43], updated_at: ~N[2026-09-02 10:46:43]}} [2026-09-02 10:46:43.363] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-09-02T10:46:41Z", "value" => "3.8.7.3"} [2026-09-02 10:46:43.406] [DEBUG] QUERY OK db=40.7ms idle=48.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-09-02T10:46:41Z", "3.8.7.3", "application", 105844, ~N[2026-09-02 10:46:43], ~N[2026-09-02 10:46:43]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:46:43.407] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084623, itemkey: "application", value: "3.8.7.3", timestamp: "2026-09-02T10:46:41Z", message: "Current application version", status_log_id: 105844, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:46:43], updated_at: ~N[2026-09-02 10:46:43]}} [2026-09-02 10:46:43.408] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms queue=0.3ms idle=44.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:46:43], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:233 [2026-09-02 10:46:43.409] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.0","requestId":"10690","status":"success","timestamp":1788346002111,"type":"tms_response"} [2026-09-02 10:46:43.409] [INFO ] Processing file download response for device 98251226730001, request_id: 10690 [2026-09-02 10:46:43.409] [DEBUG] QUERY OK source="file_download_logs" db=0.3ms idle=3.0ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["10690"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:46:43.410] [INFO ] No file download log for request_id 10690; response not attached to a push [2026-09-02 10:46:43.410] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:46:43.410512Z], response: %{"message" => "Already up to date: 1.0.0", "requestId" => "10690", "status" => "success", "timestamp" => 1788346002111, "type" => "tms_response"}, request_id: "10690", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:46:43.410] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.0","requestId":"253571","status":"success","timestamp":1788346002131,"type":"tms_response"} [2026-09-02 10:46:43.412] [INFO ] Processing file download response for device 98251226730001, request_id: 253571 [2026-09-02 10:46:43.414] [DEBUG] QUERY OK source="file_download_logs" db=1.9ms idle=3.8ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["253571"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:46:43.414] [INFO ] No file download log for request_id 253571; response not attached to a push [2026-09-02 10:46:43.414] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:46:43.414813Z], response: %{"message" => "Already up to date: 1.0.0", "requestId" => "253571", "status" => "success", "timestamp" => 1788346002131, "type" => "tms_response"}, request_id: "253571", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:46:43.414] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.1","requestId":"6915","status":"success","timestamp":1788346002152,"type":"tms_response"} [2026-09-02 10:46:43.419] [INFO ] Processing file download response for device 98251226730001, request_id: 6915 [2026-09-02 10:46:43.420] [DEBUG] QUERY OK source="file_download_logs" db=0.6ms idle=10.0ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["6915"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:46:43.420] [INFO ] No file download log for request_id 6915; response not attached to a push [2026-09-02 10:46:43.424] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:46:43.422668Z], response: %{"message" => "Already up to date: 1.0.1", "requestId" => "6915", "status" => "success", "timestamp" => 1788346002152, "type" => "tms_response"}, request_id: "6915", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:46:43.424] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.1","requestId":"286306","status":"success","timestamp":1788346002172,"type":"tms_response"} [2026-09-02 10:46:43.425] [INFO ] Processing file download response for device 98251226730001, request_id: 286306 [2026-09-02 10:46:43.432] [DEBUG] QUERY OK source="file_download_logs" db=2.2ms idle=15.4ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["286306"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:46:43.434] [INFO ] No file download log for request_id 286306; response not attached to a push [2026-09-02 10:46:43.439] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:46:43.434623Z], response: %{"message" => "Already up to date: 1.0.1", "requestId" => "286306", "status" => "success", "timestamp" => 1788346002172, "type" => "tms_response"}, request_id: "286306", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:46:43.439] [WARN ] Unexpected async result [2026-09-02 10:46:43.439] [WARN ] Unexpected async result [2026-09-02 10:48:09.301] [WARN ] [message: "Oban.Peer.leader?/2 check failed due to {:timeout, {GenServer, :call, [#PID<0.1162.0>, :leader?, 5000]}}", source: :oban, module: Oban.Peer] [2026-09-02 10:49:01.391] [INFO ] Received status update for terminal 98251226730001 [2026-09-02 10:49:01.391] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-09-02T10:49:00Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-09-02T10:49:00Z","value":"34"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-09-02T10:49:00Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-09-02T10:49:00Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-09-02T10:49:00Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-09-02T10:49:00Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-09-02T10:49:00Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-09-02T10:49:00Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-09-02T10:49:00Z","vendor":"MoreFun"} [2026-09-02 10:49:01.392] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-09-02T10:49:00Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-09-02T10:49:00Z", "value" => "34"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-09-02T10:49:00Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-09-02T10:49:00Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-09-02T10:49:00Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-09-02T10:49:00Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-09-02T10:49:00Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-09-02T10:49:00Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-09-02T10:49:00Z", "vendor" => "MoreFun"} [2026-09-02 10:49:01.392] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-09-02 10:49:01.392] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-09-02 10:49:01.392] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-09-02 10:49:01.405] [DEBUG] QUERY OK source="parameter_templates" db=5.7ms idle=759.7ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-09-02 10:49:01.420] [DEBUG] QUERY OK source="tms_terminals" db=6.7ms queue=8.8ms idle=87.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-09-02 10:49:01.426] [DEBUG] QUERY OK source="parameter_template_values" db=5.0ms queue=0.1ms idle=16.2ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-09-02 10:49:01.434] [DEBUG] QUERY OK source="parameter_definitions" db=4.0ms queue=3.9ms idle=5.9ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-09-02 10:49:01.438] [DEBUG] QUERY OK source="pos_terminal" db=3.1ms idle=8.9ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-09-02 10:49:01.474] [DEBUG] QUERY OK source="pos_merchant" db=34.4ms queue=0.9ms idle=3.8ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [350] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-09-02 10:49:01.481] [DEBUG] QUERY OK db=2.6ms queue=4.6ms idle=1513.7ms SELECT COALESCE(JSON_UNQUOTE(JSON_EXTRACT(mc.settings, '$.BASE_MERCHANT_NAME')), '') as base_merchant_name, COALESCE(u.name, '') as user_name, COALESCE(um.softpos_uuid, '') as softpos_uuid, COALESCE(mc.settings, '{}') as settings FROM user_metadata um LEFT JOIN merchant_configuration mc ON mc.user_id = um.user_id LEFT JOIN users u ON u.id = um.user_id WHERE um.merchant_refrence_number = ? LIMIT 1 ["667267350000000"] [2026-09-02 10:49:01.481] [INFO ] ParamsZipBuilder: Merchant info for merchantid=667267350000000 - business_name=Shubham003, QR_USE_SSL=, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-09-02 10:49:01.484] [DEBUG] QUERY OK source="pos_terminal_data" db=2.7ms idle=43.5ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["26735914"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-09-02 10:49:01.485] [DEBUG] QUERY OK source="address" db=0.6ms idle=10.9ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [639] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-09-02 10:49:01.485] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="667267350000000" [2026-09-02 10:49:01.494] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-09-02 10:49:01.567] [DEBUG] QUERY OK db=68.6ms idle=13.4ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "1e93221a05270f29491c096c9aa45504dea8d1d41c9a70c63401f49b41343d4c", 7299, 912, ~U[2026-09-02 10:49:01Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-09-02 10:49:01], ~N[2026-09-02 10:49:01]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-09-02 10:49:01.567] [INFO ] AutoPushService: Created push log 60606 for MF919 params.zip [2026-09-02 10:49:01.567] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4017/ota/98251226730001/params.zip", "requestId" => 7299, "type" => "tms_command", "version" => "1.0.0"} [2026-09-02 10:49:01.567] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-09-02 10:49:01.567] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-09-02 10:49:01.573] [DEBUG] QUERY OK source="config_file_versions" db=5.0ms idle=82.2ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-09-02 10:49:01.593] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730001 at priv/ota/98251226730001/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-09-02 10:49:01.656] [DEBUG] QUERY OK db=55.5ms idle=33.5ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "c5dc05b139f8d1b69c6273120e154925b48635fbd68b7b8c0b95395641a9ac27", 2981, 17947, ~U[2026-09-02 10:49:01Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-09-02 10:49:01], ~N[2026-09-02 10:49:01]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-09-02 10:49:01.657] [INFO ] AutoPushService: Created push log 60608 for MF919 l3config.zip (version: 1.0.1) [2026-09-02 10:49:01.658] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4017/ota/98251226730001/l3config.zip", "requestId" => 2981, "type" => "tms_command", "version" => "1.0.1"} [2026-09-02 10:49:01.658] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-09-02 10:49:01.658] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-09-02 10:49:01.683] [DEBUG] QUERY OK source="config_file_versions" db=9.6ms queue=15.4ms idle=85.6ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-09-02 10:49:01.683] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-09-02 10:49:01.688] [DEBUG] QUERY OK source="tms_terminals" db=3.7ms idle=29.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-09-02 10:49:01.688] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730001 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-09-02 10:49:01.704] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-09-02 10:49:01.709] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 10:49:01.709] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 10:49:01.715] [DEBUG] QUERY OK source="config_file_versions" db=6.1ms idle=25.8ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-09-02 10:49:01.719] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-09-02 10:49:01.719] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-09-02 10:49:01.734] [DEBUG] QUERY OK source="tms_terminals" db=14.0ms idle=31.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:140 [2026-09-02 10:49:01.734] [INFO ] Terminal updated: 98251226730001 [2026-09-02 10:49:01.748] [DEBUG] QUERY OK source="parameter_templates" db=9.5ms queue=4.5ms idle=19.1ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) ORDER BY p0.`updated_at` DESC LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_parameter_version/2, at: lib/tms_core/terminal_management/version_compliance_checker.ex:105 [2026-09-02 10:49:01.762] [DEBUG] QUERY OK source="config_file_versions" db=8.9ms idle=19.4ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-09-02 10:49:01.765] [DEBUG] QUERY OK source="config_file_versions" db=1.6ms idle=14.7ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-09-02 10:49:01.765] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-09-02 10:49:01.846] [DEBUG] QUERY OK source="parameter_push_logs" db=80.2ms idle=3.2ms SELECT TRUE FROM `parameter_push_logs` AS p0 WHERE ((((p0.`terminal_id` = ?) AND (p0.`config_type` = ?)) AND (p0.`inserted_at` >= ?)) AND p0.`status` IN ('pending','sent')) LIMIT 1 [33, "application", ~N[2026-09-02 10:19:01]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-09-02 10:49:01.846] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-09-02 10:49:01.846] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-09-02 10:49:01.853] [DEBUG] QUERY OK source="tms_terminals" db=6.4ms idle=81.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-09-02 10:49:01.860] [DEBUG] QUERY OK source="config_file_versions" db=6.4ms idle=7.3ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-09-02 10:49:01.874] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-09-02 10:49:01.881] [DEBUG] QUERY OK source="tms_terminals" db=3.1ms idle=21.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:1184 [2026-09-02 10:49:01.929] [DEBUG] QUERY OK source="tms_terminals" db=39.9ms queue=0.1ms idle=29.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:49:01], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:174 [2026-09-02 10:49:01.942] [DEBUG] QUERY OK source="app_upgrade_device_statuses" db=6.4ms idle=57.9ms SELECT a0.`id`, a0.`config_id`, a0.`device_id`, a0.`device_sn`, a0.`vendor`, a0.`model`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`update_result`, a0.`status`, a0.`remark`, a0.`finish_time`, a0.`pushed_time`, a0.`retry_count`, a0.`inserted_at`, a0.`updated_at` FROM `app_upgrade_device_statuses` AS a0 WHERE ((a0.`device_sn` = ?) AND a0.`status` IN ('pending','pushed')) ["98251226730001"] ↳ TmsCore.TerminalManagement.AppUpgradeService.maybe_repush_for_device/1, at: lib/tms_core/terminal_management/app_upgrade_service.ex:148 [2026-09-02 10:49:01.995] [DEBUG] QUERY OK db=52.7ms idle=13.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-09-02T10:49:00Z", ~N[2026-09-02 10:49:01], ~N[2026-09-02 10:49:01]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:179 [2026-09-02 10:49:01.996] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 105847, oid: "organization_id", upload_time: "2026-09-02T10:49:00Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:49:01], updated_at: ~N[2026-09-02 10:49:01]} [2026-09-02 10:49:01.996] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-09-02T10:49:00Z", "value" => "online"} [2026-09-02 10:49:02.093] [DEBUG] QUERY OK db=97.1ms idle=53.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-09-02T10:49:00Z", "online", "status", 105847, ~N[2026-09-02 10:49:01], ~N[2026-09-02 10:49:01]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:49:02.093] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084627, itemkey: "status", value: "online", timestamp: "2026-09-02T10:49:00Z", message: "Terminal status update", status_log_id: 105847, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:49:01], updated_at: ~N[2026-09-02 10:49:01]}} [2026-09-02 10:49:02.093] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-09-02 10:49:02.199] [DEBUG] QUERY OK source="tms_terminals" db=104.9ms idle=98.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:49:02], 33] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:203 [2026-09-02 10:49:02.199] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-09-02T10:49:00Z", "value" => "34"} [2026-09-02 10:49:02.294] [DEBUG] QUERY OK db=86.8ms queue=2.4ms idle=111.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-09-02T10:49:00Z", "34", "battery", 105847, ~N[2026-09-02 10:49:02], ~N[2026-09-02 10:49:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:49:02.294] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084630, itemkey: "battery", value: "34", timestamp: "2026-09-02T10:49:00Z", message: "Battery level", status_log_id: 105847, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:49:02], updated_at: ~N[2026-09-02 10:49:02]}} [2026-09-02 10:49:02.294] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-09-02T10:49:00Z", "value" => "online"} [2026-09-02 10:49:02.370] [DEBUG] QUERY OK db=75.7ms idle=95.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-09-02T10:49:00Z", "online", "network", 105847, ~N[2026-09-02 10:49:02], ~N[2026-09-02 10:49:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:49:02.370] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084632, itemkey: "network", value: "online", timestamp: "2026-09-02T10:49:00Z", message: "Network connectivity", status_log_id: 105847, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:49:02], updated_at: ~N[2026-09-02 10:49:02]}} [2026-09-02 10:49:02.371] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-09-02 10:49:02.385] [DEBUG] QUERY OK source="tms_terminals" db=5.9ms idle=42.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:49:02], 33] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:203 [2026-09-02 10:49:02.385] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-09-02T10:49:00Z", "value" => "0"} [2026-09-02 10:49:02.454] [DEBUG] QUERY OK db=64.1ms idle=19.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-09-02T10:49:00Z", "0", "cpu", 105847, ~N[2026-09-02 10:49:02], ~N[2026-09-02 10:49:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:49:02.457] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084635, itemkey: "cpu", value: "0", timestamp: "2026-09-02T10:49:00Z", message: "CPU usage percentage", status_log_id: 105847, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:49:02], updated_at: ~N[2026-09-02 10:49:02]}} [2026-09-02 10:49:02.457] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-09-02T10:49:00Z", "value" => "1.0.0"} [2026-09-02 10:49:02.522] [DEBUG] QUERY OK db=64.4ms idle=72.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-09-02T10:49:00Z", "1.0.0", "parameter_config", 105847, ~N[2026-09-02 10:49:02], ~N[2026-09-02 10:49:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:49:02.522] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084637, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-09-02T10:49:00Z", message: "Current parameters version", status_log_id: 105847, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:49:02], updated_at: ~N[2026-09-02 10:49:02]}} [2026-09-02 10:49:02.522] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-09-02T10:49:00Z", "value" => "1.0.1"} [2026-09-02 10:49:02.610] [DEBUG] QUERY OK db=87.7ms idle=68.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-09-02T10:49:00Z", "1.0.1", "emv_config", 105847, ~N[2026-09-02 10:49:02], ~N[2026-09-02 10:49:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:49:02.611] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084640, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-09-02T10:49:00Z", message: "Current EMV config version", status_log_id: 105847, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:49:02], updated_at: ~N[2026-09-02 10:49:02]}} [2026-09-02 10:49:02.611] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-09-02T10:49:00Z", "value" => ""} [2026-09-02 10:49:02.698] [DEBUG] QUERY OK db=85.1ms idle=89.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-09-02T10:49:00Z", "keys_config", 105847, ~N[2026-09-02 10:49:02], ~N[2026-09-02 10:49:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:49:02.700] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084643, itemkey: "keys_config", value: nil, timestamp: "2026-09-02T10:49:00Z", message: "Current keys config version", status_log_id: 105847, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:49:02], updated_at: ~N[2026-09-02 10:49:02]}} [2026-09-02 10:49:02.713] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-09-02T10:49:00Z", "value" => "3.8.7.3"} [2026-09-02 10:49:02.780] [DEBUG] QUERY OK db=65.9ms idle=103.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-09-02T10:49:00Z", "3.8.7.3", "application", 105847, ~N[2026-09-02 10:49:02], ~N[2026-09-02 10:49:02]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:49:02.780] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084644, itemkey: "application", value: "3.8.7.3", timestamp: "2026-09-02T10:49:00Z", message: "Current application version", status_log_id: 105847, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:49:02], updated_at: ~N[2026-09-02 10:49:02]}} [2026-09-02 10:49:02.783] [DEBUG] QUERY OK source="tms_terminals" db=2.9ms idle=83.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:49:02], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:233 [2026-09-02 10:49:02.783] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.0","requestId":"7299","status":"success","timestamp":1788346141070,"type":"tms_response"} [2026-09-02 10:49:02.783] [INFO ] Processing file download response for device 98251226730001, request_id: 7299 [2026-09-02 10:49:02.785] [DEBUG] QUERY OK source="file_download_logs" db=1.2ms idle=4.0ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["7299"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:49:02.785] [INFO ] No file download log for request_id 7299; response not attached to a push [2026-09-02 10:49:02.785] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:49:02.785616Z], response: %{"message" => "Already up to date: 1.0.0", "requestId" => "7299", "status" => "success", "timestamp" => 1788346141070, "type" => "tms_response"}, request_id: "7299", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:49:02.785] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.1","requestId":"2981","status":"success","timestamp":1788346141165,"type":"tms_response"} [2026-09-02 10:49:02.785] [INFO ] Processing file download response for device 98251226730001, request_id: 2981 [2026-09-02 10:49:02.787] [DEBUG] QUERY OK source="file_download_logs" db=1.7ms idle=2.4ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["2981"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:49:02.787] [INFO ] No file download log for request_id 2981; response not attached to a push [2026-09-02 10:49:02.788] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:49:02.787983Z], response: %{"message" => "Already up to date: 1.0.1", "requestId" => "2981", "status" => "success", "timestamp" => 1788346141165, "type" => "tms_response"}, request_id: "2981", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:49:02.788] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.0","requestId":"299426","status":"success","timestamp":1788346141186,"type":"tms_response"} [2026-09-02 10:49:02.788] [INFO ] Processing file download response for device 98251226730001, request_id: 299426 [2026-09-02 10:49:02.800] [DEBUG] QUERY OK source="file_download_logs" db=7.7ms queue=4.1ms idle=3.0ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["299426"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:49:02.800] [INFO ] No file download log for request_id 299426; response not attached to a push [2026-09-02 10:49:02.800] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:49:02.800587Z], response: %{"message" => "Already up to date: 1.0.0", "requestId" => "299426", "status" => "success", "timestamp" => 1788346141186, "type" => "tms_response"}, request_id: "299426", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:49:02.800] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.1","requestId":"206084","status":"success","timestamp":1788346141328,"type":"tms_response"} [2026-09-02 10:49:02.800] [INFO ] Processing file download response for device 98251226730001, request_id: 206084 [2026-09-02 10:49:02.806] [DEBUG] QUERY OK source="file_download_logs" db=5.1ms idle=13.1ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["206084"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:49:02.806] [INFO ] No file download log for request_id 206084; response not attached to a push [2026-09-02 10:49:02.806] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:49:02.806491Z], response: %{"message" => "Already up to date: 1.0.1", "requestId" => "206084", "status" => "success", "timestamp" => 1788346141328, "type" => "tms_response"}, request_id: "206084", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:49:02.815] [WARN ] Unexpected async result [2026-09-02 10:49:02.815] [WARN ] Unexpected async result [2026-09-02 10:49:12.884] [INFO ] Running offline device check... [2026-09-02 10:49:12.884] [INFO ] Starting offline device check... [2026-09-02 10:49:12.887] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms queue=0.1ms idle=476.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1234 [2026-09-02 10:49:12.889] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=254.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [1] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:49:12.890] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:49:12.893] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms queue=0.2ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:49:12.894] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:49:12.897] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.6ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:49:12.899] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=0.2ms idle=3.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:49:12.904] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.0ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:49:12.907] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=6.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:49:12.908] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=4.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:49:12.909] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:49:12.912] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:49:12.913] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=3.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:49:12.916] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.3ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:49:12.918] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms idle=2.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:49:12.920] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:49:12.923] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:49:12.926] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms queue=1.8ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:49:12.929] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms idle=3.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:49:12.930] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms queue=0.2ms idle=2.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:49:12.932] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:49:12.933] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:49:12.934] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:49:12.935] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:49:12.936] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:49:12.937] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:49:12.937] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:49:12.939] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:49:12.940] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:49:12.942] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:49:12.943] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:49:12.946] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:49:12.947] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.3ms idle=2.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:49:12.948] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:49:12.950] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms queue=0.1ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:49:12.951] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:49:12.952] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:49:12.954] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:49:12.955] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:49:12.956] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.5ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:49:12.958] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:49:12.959] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=2.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:49:12.961] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:49:12.963] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms queue=0.2ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:49:12.965] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=2.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:49:12.966] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:49:12.972] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.0ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:49:12.973] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=5.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:49:12.977] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.5ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:49:12.979] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=4.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:49:12.981] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.7ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:49:12.983] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms queue=0.3ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:49:12.984] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:49:12.985] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [82] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:49:12.986] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.1ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [83] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:49:12.986] [INFO ] Offline device check completed. Found 50 offline devices, updated 0 statuses. [2026-09-02 10:49:12.986] [INFO ] Offline device check completed successfully [2026-09-02 10:49:21.579] [INFO ] Received status update for terminal 98251226730001 [2026-09-02 10:49:21.579] [INFO ] Incoming JSON payload: {"oid":"e871ac6a-c933-4af2-84c3-6f18f888f219","sn":"98251226730001","uploadTime":"2026-09-02T10:49:20Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-09-02T10:49:20Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-09-02T10:49:20Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-09-02T10:49:20Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-09-02T10:49:20Z"},{"itemkey":"ram_free_mb","value":"852","timestamp":"2026-09-02T10:49:20Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-09-02T10:49:20Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-09-02T10:49:20Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-09-02T10:49:20Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-09-02T10:49:20Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-09-02T10:49:20Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-09-02T10:49:20Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-09-02T10:49:20Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-09-02T10:49:20Z"},{"itemkey":"data_usage_mb","value":"39","timestamp":"2026-09-02T10:49:20Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-09-02T10:49:20Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-09-02 10:49:21.580] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "e871ac6a-c933-4af2-84c3-6f18f888f219", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-09-02T10:49:20Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-09-02T10:49:20Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-09-02T10:49:20Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-09-02T10:49:20Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-09-02T10:49:20Z", "value" => "852"}, %{"itemkey" => "network_type", "timestamp" => "2026-09-02T10:49:20Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-09-02T10:49:20Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-09-02T10:49:20Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-09-02T10:49:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-09-02T10:49:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-09-02T10:49:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-09-02T10:49:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-09-02T10:49:20Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-09-02T10:49:20Z", "value" => "39"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-09-02T10:49:20Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-09-02T10:49:20Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-09-02T10:49:20Z", "vendor" => "morefun"} [2026-09-02 10:49:21.580] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-09-02 10:49:21.584] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-09-02 10:49:21.588] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-09-02 10:49:21.591] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms queue=0.9ms idle=1147.5ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-09-02 10:49:21.593] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=147.0ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-09-02 10:49:21.595] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-09-02 10:49:21.597] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms queue=0.1ms idle=3.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:140 [2026-09-02 10:49:21.639] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms queue=41.0ms idle=3.9ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-09-02 10:49:21], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-09-02 10:49:21.639] [INFO ] Terminal updated: 98251226730001 [2026-09-02 10:49:21.640] [INFO ] Event published: terminal_updated [2026-09-02 10:49:21.641] [DEBUG] Processing terminal event: terminal_updated [2026-09-02 10:49:21.641] [INFO ] Processing terminal_updated event for terminal 33 [2026-09-02 10:49:21.642] [INFO ] Changed fields: [:vendor, :model] [2026-09-02 10:49:21.642] [DEBUG] QUERY OK source="terminal_group_memberships" db=1.8ms idle=43.2ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-09-02 10:49:21], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-09-02 10:49:21.644] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=1.0ms idle=3.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-09-02 10:49:21.645] [DEBUG] QUERY OK source="terminal_group_rules" db=0.7ms idle=0.2ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-09-02 10:49:21.646] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-09-02 10:49:21.701] [DEBUG] QUERY OK source="tms_terminals" db=15.0ms queue=43.5ms idle=0.8ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "kiosk_launcher", "morefun", nil, nil, nil, nil, ~N[2026-09-02 10:49:21], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:164 [2026-09-02 10:49:21.701] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-09-02 10:49:21.702] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=56.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:1184 [2026-09-02 10:49:21.781] [DEBUG] QUERY OK source="tms_terminals" db=37.6ms queue=40.9ms idle=1.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:49:21], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:174 [2026-09-02 10:49:21.782] [DEBUG] QUERY OK source="app_upgrade_device_statuses" db=0.3ms idle=79.8ms SELECT a0.`id`, a0.`config_id`, a0.`device_id`, a0.`device_sn`, a0.`vendor`, a0.`model`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`update_result`, a0.`status`, a0.`remark`, a0.`finish_time`, a0.`pushed_time`, a0.`retry_count`, a0.`inserted_at`, a0.`updated_at` FROM `app_upgrade_device_statuses` AS a0 WHERE ((a0.`device_sn` = ?) AND a0.`status` IN ('pending','pushed')) ["98251226730001"] ↳ TmsCore.TerminalManagement.AppUpgradeService.maybe_repush_for_device/1, at: lib/tms_core/terminal_management/app_upgrade_service.ex:148 [2026-09-02 10:49:21.822] [DEBUG] QUERY OK db=39.6ms idle=1.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "e871ac6a-c933-4af2-84c3-6f18f888f219", "2026-09-02T10:49:20Z", ~N[2026-09-02 10:49:21], ~N[2026-09-02 10:49:21]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:179 [2026-09-02 10:49:21.824] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 105849, oid: "e871ac6a-c933-4af2-84c3-6f18f888f219", upload_time: "2026-09-02T10:49:20Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:49:21], updated_at: ~N[2026-09-02 10:49:21]} [2026-09-02 10:49:21.825] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-09-02T10:49:20Z", "value" => "morefun"} [2026-09-02 10:49:21.929] [DEBUG] QUERY OK db=61.9ms queue=40.8ms idle=43.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:49:20Z", "morefun", "vendor", 105849, ~N[2026-09-02 10:49:21], ~N[2026-09-02 10:49:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:49:21.930] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084651, itemkey: "vendor", value: "morefun", timestamp: "2026-09-02T10:49:20Z", message: nil, status_log_id: 105849, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:49:21], updated_at: ~N[2026-09-02 10:49:21]}} [2026-09-02 10:49:21.930] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-09-02T10:49:20Z", "value" => "kiosk_launcher"} [2026-09-02 10:49:22.018] [DEBUG] QUERY OK db=46.7ms queue=41.3ms idle=107.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:49:20Z", "kiosk_launcher", "model", 105849, ~N[2026-09-02 10:49:21], ~N[2026-09-02 10:49:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:49:22.018] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084656, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-09-02T10:49:20Z", message: nil, status_log_id: 105849, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:49:21], updated_at: ~N[2026-09-02 10:49:21]}} [2026-09-02 10:49:22.018] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-09-02T10:49:20Z", "value" => "1.0"} [2026-09-02 10:49:22.088] [DEBUG] QUERY OK db=69.1ms idle=89.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:49:20Z", "1.0", "app_version", 105849, ~N[2026-09-02 10:49:22], ~N[2026-09-02 10:49:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:49:22.088] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084658, itemkey: "app_version", value: "1.0", timestamp: "2026-09-02T10:49:20Z", message: nil, status_log_id: 105849, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:49:22], updated_at: ~N[2026-09-02 10:49:22]}} [2026-09-02 10:49:22.088] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-09-02T10:49:20Z", "value" => "13"} [2026-09-02 10:49:22.155] [DEBUG] QUERY OK db=66.1ms idle=70.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:49:20Z", "13", "android_version", 105849, ~N[2026-09-02 10:49:22], ~N[2026-09-02 10:49:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:49:22.155] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084661, itemkey: "android_version", value: "13", timestamp: "2026-09-02T10:49:20Z", message: nil, status_log_id: 105849, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:49:22], updated_at: ~N[2026-09-02 10:49:22]}} [2026-09-02 10:49:22.156] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-09-02T10:49:20Z", "value" => "852"} [2026-09-02 10:49:22.246] [DEBUG] QUERY OK db=89.3ms idle=68.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:49:20Z", "852", "ram_free_mb", 105849, ~N[2026-09-02 10:49:22], ~N[2026-09-02 10:49:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:49:22.246] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084664, itemkey: "ram_free_mb", value: "852", timestamp: "2026-09-02T10:49:20Z", message: nil, status_log_id: 105849, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:49:22], updated_at: ~N[2026-09-02 10:49:22]}} [2026-09-02 10:49:22.246] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-09-02T10:49:20Z", "value" => "WIFI"} [2026-09-02 10:49:22.350] [DEBUG] QUERY OK db=103.7ms idle=91.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:49:20Z", "WIFI", "network_type", 105849, ~N[2026-09-02 10:49:22], ~N[2026-09-02 10:49:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:49:22.350] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084666, itemkey: "network_type", value: "WIFI", timestamp: "2026-09-02T10:49:20Z", message: nil, status_log_id: 105849, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:49:22], updated_at: ~N[2026-09-02 10:49:22]}} [2026-09-02 10:49:22.350] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-09-02T10:49:20Z", "value" => "true"} [2026-09-02 10:49:22.463] [DEBUG] QUERY OK db=112.3ms idle=105.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:49:20Z", "true", "kiosk_active", 105849, ~N[2026-09-02 10:49:22], ~N[2026-09-02 10:49:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:49:22.463] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084669, itemkey: "kiosk_active", value: "true", timestamp: "2026-09-02T10:49:20Z", message: nil, status_log_id: 105849, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:49:22], updated_at: ~N[2026-09-02 10:49:22]}} [2026-09-02 10:49:22.464] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-09-02T10:49:20Z", "value" => ""} [2026-09-02 10:49:22.602] [DEBUG] QUERY OK db=137.7ms idle=12.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-09-02T10:49:20Z", "sim_operator", 105849, ~N[2026-09-02 10:49:22], ~N[2026-09-02 10:49:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:49:22.602] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084673, itemkey: "sim_operator", value: nil, timestamp: "2026-09-02T10:49:20Z", message: nil, status_log_id: 105849, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:49:22], updated_at: ~N[2026-09-02 10:49:22]}} [2026-09-02 10:49:22.602] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-09-02T10:49:20Z", "value" => "UNKNOWN"} [2026-09-02 10:49:22.654] [DEBUG] QUERY OK db=51.8ms queue=0.1ms idle=139.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:49:20Z", "UNKNOWN", "sim_number", 105849, ~N[2026-09-02 10:49:22], ~N[2026-09-02 10:49:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:49:22.655] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084674, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-09-02T10:49:20Z", message: nil, status_log_id: 105849, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:49:22], updated_at: ~N[2026-09-02 10:49:22]}} [2026-09-02 10:49:22.655] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-09-02T10:49:20Z", "value" => "UNKNOWN"} [2026-09-02 10:49:22.721] [DEBUG] QUERY OK db=65.3ms idle=53.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:49:20Z", "UNKNOWN", "sim_iccid", 105849, ~N[2026-09-02 10:49:22], ~N[2026-09-02 10:49:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:49:22.721] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084676, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-09-02T10:49:20Z", message: nil, status_log_id: 105849, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:49:22], updated_at: ~N[2026-09-02 10:49:22]}} [2026-09-02 10:49:22.721] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-09-02T10:49:20Z", "value" => "UNKNOWN"} [2026-09-02 10:49:22.795] [DEBUG] QUERY OK db=73.4ms idle=66.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:49:20Z", "UNKNOWN", "sim_imsi", 105849, ~N[2026-09-02 10:49:22], ~N[2026-09-02 10:49:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:49:22.795] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084679, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-09-02T10:49:20Z", message: nil, status_log_id: 105849, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:49:22], updated_at: ~N[2026-09-02 10:49:22]}} [2026-09-02 10:49:22.795] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-09-02T10:49:20Z", "value" => "UNKNOWN"} [2026-09-02 10:49:22.829] [DEBUG] QUERY OK db=33.6ms idle=74.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:49:20Z", "UNKNOWN", "sim_iccid2", 105849, ~N[2026-09-02 10:49:22], ~N[2026-09-02 10:49:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:49:22.829] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084682, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-09-02T10:49:20Z", message: nil, status_log_id: 105849, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:49:22], updated_at: ~N[2026-09-02 10:49:22]}} [2026-09-02 10:49:22.830] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-09-02T10:49:20Z", "value" => "UNKNOWN"} [2026-09-02 10:49:22.871] [DEBUG] QUERY OK db=41.1ms idle=35.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:49:20Z", "UNKNOWN", "sim_imsi2", 105849, ~N[2026-09-02 10:49:22], ~N[2026-09-02 10:49:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:49:22.871] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084683, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-09-02T10:49:20Z", message: nil, status_log_id: 105849, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:49:22], updated_at: ~N[2026-09-02 10:49:22]}} [2026-09-02 10:49:22.871] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-09-02T10:49:20Z", "value" => "39"} [2026-09-02 10:49:22.926] [DEBUG] QUERY OK db=54.0ms idle=42.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:49:20Z", "39", "data_usage_mb", 105849, ~N[2026-09-02 10:49:22], ~N[2026-09-02 10:49:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:49:22.926] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084686, itemkey: "data_usage_mb", value: "39", timestamp: "2026-09-02T10:49:20Z", message: nil, status_log_id: 105849, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:49:22], updated_at: ~N[2026-09-02 10:49:22]}} [2026-09-02 10:49:22.926] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-09-02T10:49:20Z", "value" => "0"} [2026-09-02 10:49:22.992] [DEBUG] QUERY OK db=64.8ms idle=55.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:49:20Z", "0", "mobile_data_mb", 105849, ~N[2026-09-02 10:49:22], ~N[2026-09-02 10:49:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:49:22.992] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084689, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-09-02T10:49:20Z", message: nil, status_log_id: 105849, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:49:22], updated_at: ~N[2026-09-02 10:49:22]}} [2026-09-02 10:49:22.996] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-09-02T10:49:20Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-09-02 10:49:23.067] [DEBUG] QUERY OK db=68.3ms idle=71.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:49:20Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 105849, ~N[2026-09-02 10:49:22], ~N[2026-09-02 10:49:22]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:49:23.067] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084693, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-09-02T10:49:20Z", message: nil, status_log_id: 105849, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:49:22], updated_at: ~N[2026-09-02 10:49:22]}} [2026-09-02 10:50:34.293] [INFO ] Received status update for terminal 61250415798001 [2026-09-02 10:50:34.293] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61250415798001","vendor":"MoreFun","model":"SR600","uploadTime":"-5339573-09-23T11:08:40Z","org.device":[{"itemkey":"status","value":"online","timestamp":"-5339573-09-23T11:08:40Z","message":"Device Connected"}]} [2026-09-02 10:50:34.293] [INFO ] Decoded JSON: %{"model" => "SR600", "oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "status", "message" => "Device Connected", "timestamp" => "-5339573-09-23T11:08:40Z", "value" => "online"}], "sn" => "61250415798001", "uploadTime" => "-5339573-09-23T11:08:40Z", "vendor" => "MoreFun"} [2026-09-02 10:50:34.294] [INFO ] Extracted versions for 61250415798001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-09-02 10:50:34.295] [INFO ] Detected missing versions for 61250415798001, triggering auto-push [2026-09-02 10:50:34.295] [INFO ] AutoPushService: Triggering auto-push for 61250415798001 (MoreFun SR600) - missing version [2026-09-02 10:50:34.296] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=366.3ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["MoreFun", "SR600"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-09-02 10:50:34.298] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms queue=1.3ms idle=216.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-09-02 10:50:34.299] [DEBUG] QUERY OK source="parameter_template_values" db=0.4ms idle=2.9ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [7] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-09-02 10:50:34.807] [DEBUG] QUERY OK db=507.6ms idle=1.5ms INSERT INTO `parameter_push_logs` (`status`,`request_id`,`log_time`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", 11554, ~U[2026-09-02 10:50:34Z], 1, "parameter", "SR600", "MoreFun", %{}, "full", 7, "missing_version", "1.0.0", ~N[2026-09-02 10:50:34], ~N[2026-09-02 10:50:34]] ↳ TmsCore.TerminalManagement.AutoPushService.push_generic_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:235 [2026-09-02 10:50:34.808] [INFO ] AutoPushService: Created push log 60612 for parameters (template: 7) [2026-09-02 10:50:34.808] [INFO ] SR600 MQTT Command: %{"command" => "file_download", "merchant_config" => "true", "request_id" => 11554, "retry_count" => "3", "version" => "1.0.0"} [2026-09-02 10:50:34.808] [INFO ] AutoPushService: Sending parameter push to 61250415798001 on topic: /ota/pFppbioOCKlo5c8E/61250415798001/update [2026-09-02 10:50:34.808] [INFO ] AutoPushService: Parameter push sent successfully to 61250415798001 [2026-09-02 10:50:34.848] [DEBUG] QUERY OK db=39.4ms idle=509.3ms INSERT INTO `parameter_push_logs` (`status`,`request_id`,`log_time`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?) ["pending", 11618, ~U[2026-09-02 10:50:34Z], 1, "emv_config", "SR600", "MoreFun", "full", "missing_version", ~N[2026-09-02 10:50:34], ~N[2026-09-02 10:50:34]] ↳ TmsCore.TerminalManagement.AutoPushService.push_regular_config/5, at: lib/tms_core/terminal_management/auto_push_service.ex:427 [2026-09-02 10:50:34.848] [INFO ] AutoPushService: Created push log for emv_config [2026-09-02 10:50:34.849] [INFO ] SR600 MQTT Command: %{"command" => "file_download", "merchant_config" => "true", "request_id" => 11618, "retry_count" => "3"} [2026-09-02 10:50:34.850] [INFO ] AutoPushService: Sending emv_config push to 61250415798001 on topic: /ota/pFppbioOCKlo5c8E/61250415798001/update [2026-09-02 10:50:34.850] [INFO ] AutoPushService: emv_config push sent successfully to 61250415798001 [2026-09-02 10:50:34.854] [DEBUG] QUERY OK source="config_file_versions" db=3.7ms idle=43.0ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "SR600"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-09-02 10:50:34.854] [INFO ] KeysConfigService: Generating keys.json for 61250415798001 (SR600) [2026-09-02 10:50:34.856] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=6.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-09-02 10:50:34.856] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 61250415798001 with params: %{"kekKcv" => "112233", "model" => "SR600", "serialNumber" => "61250415798001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-09-02 10:50:34.864] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-09-02 10:50:34.864] [ERROR] KeysConfigService: Failed to generate keys for 61250415798001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 10:50:34.864] [ERROR] AutoPushService: Failed to generate keys.json for 61250415798001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 10:50:34.933] [DEBUG] QUERY OK db=68.2ms idle=11.3ms INSERT INTO `parameter_push_logs` (`status`,`request_id`,`log_time`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?) ["pending", 3013, ~U[2026-09-02 10:50:34Z], 1, "application", "SR600", "MoreFun", "full", "missing_version", ~N[2026-09-02 10:50:34], ~N[2026-09-02 10:50:34]] ↳ TmsCore.TerminalManagement.AutoPushService.push_regular_config/5, at: lib/tms_core/terminal_management/auto_push_service.ex:427 [2026-09-02 10:50:34.933] [INFO ] AutoPushService: Created push log for application [2026-09-02 10:50:34.944] [INFO ] SR600 MQTT Command: %{"command" => "file_download", "merchant_config" => "true", "request_id" => 3013, "retry_count" => "3"} [2026-09-02 10:50:34.947] [INFO ] AutoPushService: Sending application push to 61250415798001 on topic: /ota/pFppbioOCKlo5c8E/61250415798001/update [2026-09-02 10:50:34.947] [INFO ] AutoPushService: application push sent successfully to 61250415798001 [2026-09-02 10:50:34.947] [INFO ] AutoPushService: Auto-push completed for 61250415798001 [2026-09-02 10:50:34.949] [DEBUG] QUERY OK source="tms_terminals" db=0.3ms queue=0.8ms idle=14.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:140 [2026-09-02 10:50:34.951] [INFO ] Terminal updated: 61250415798001 [2026-09-02 10:50:34.998] [DEBUG] QUERY OK source="tms_terminals" db=45.9ms idle=18.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-09-02 10:50:34], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:164 [2026-09-02 10:50:35.003] [DEBUG] VersionComplianceChecker: 61250415798001 — all versions compliant [2026-09-02 10:50:35.005] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=0.6ms idle=54.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:1184 [2026-09-02 10:50:35.085] [DEBUG] QUERY OK source="tms_terminals" db=79.9ms idle=7.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:50:35], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:174 [2026-09-02 10:50:35.087] [DEBUG] QUERY OK source="app_upgrade_device_statuses" db=1.2ms idle=80.6ms SELECT a0.`id`, a0.`config_id`, a0.`device_id`, a0.`device_sn`, a0.`vendor`, a0.`model`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`update_result`, a0.`status`, a0.`remark`, a0.`finish_time`, a0.`pushed_time`, a0.`retry_count`, a0.`inserted_at`, a0.`updated_at` FROM `app_upgrade_device_statuses` AS a0 WHERE ((a0.`device_sn` = ?) AND a0.`status` IN ('pending','pushed')) ["61250415798001"] ↳ TmsCore.TerminalManagement.AppUpgradeService.maybe_repush_for_device/1, at: lib/tms_core/terminal_management/app_upgrade_service.ex:148 [2026-09-02 10:50:35.170] [DEBUG] QUERY OK db=82.1ms idle=2.0ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [1, "org-id-placeholder", "-5339573-09-23T11:08:40Z", ~N[2026-09-02 10:50:35], ~N[2026-09-02 10:50:35]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:179 [2026-09-02 10:50:35.170] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 105853, oid: "org-id-placeholder", upload_time: "-5339573-09-23T11:08:40Z", terminal_id: 1, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:50:35], updated_at: ~N[2026-09-02 10:50:35]} [2026-09-02 10:50:35.171] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Device Connected", "timestamp" => "-5339573-09-23T11:08:40Z", "value" => "online"} [2026-09-02 10:50:35.262] [DEBUG] QUERY OK db=88.8ms idle=86.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Device Connected", "-5339573-09-23T11:08:40Z", "online", "status", 105853, ~N[2026-09-02 10:50:35], ~N[2026-09-02 10:50:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:50:35.263] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084700, itemkey: "status", value: "online", timestamp: "-5339573-09-23T11:08:40Z", message: "Device Connected", status_log_id: 105853, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:50:35], updated_at: ~N[2026-09-02 10:50:35]}} [2026-09-02 10:50:35.263] [INFO ] Setting terminal 61250415798001 status to 'online' from status itemkey [2026-09-02 10:50:35.266] [WARN ] Unexpected async result [2026-09-02 10:50:35.266] [WARN ] Unexpected async result [2026-09-02 10:50:35.266] [WARN ] Unexpected async result [2026-09-02 10:51:26.197] [INFO ] Received status update for terminal 98251226730001 [2026-09-02 10:51:26.197] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-09-02T10:51:25Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-09-02T10:51:25Z","value":"34"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-09-02T10:51:25Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-09-02T10:51:25Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-09-02T10:51:25Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-09-02T10:51:25Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-09-02T10:51:25Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-09-02T10:51:25Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-09-02T10:51:25Z","vendor":"MoreFun"} [2026-09-02 10:51:26.197] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-09-02T10:51:25Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-09-02T10:51:25Z", "value" => "34"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-09-02T10:51:25Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-09-02T10:51:25Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-09-02T10:51:25Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-09-02T10:51:25Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-09-02T10:51:25Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-09-02T10:51:25Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-09-02T10:51:25Z", "vendor" => "MoreFun"} [2026-09-02 10:51:26.197] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-09-02 10:51:26.198] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-09-02 10:51:26.198] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-09-02 10:51:26.200] [DEBUG] QUERY OK source="parameter_templates" db=2.1ms idle=1107.2ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-09-02 10:51:26.201] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=999.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-09-02 10:51:26.203] [DEBUG] QUERY OK source="parameter_template_values" db=1.7ms idle=1.6ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-09-02 10:51:26.214] [DEBUG] QUERY OK source="parameter_definitions" db=5.9ms queue=4.3ms idle=0.3ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-09-02 10:51:26.253] [DEBUG] QUERY OK source="pos_terminal" db=37.9ms idle=0.4ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-09-02 10:51:26.255] [DEBUG] QUERY OK source="pos_merchant" db=0.9ms idle=38.7ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [350] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-09-02 10:51:26.258] [DEBUG] QUERY OK db=1.4ms queue=2.3ms idle=1253.5ms SELECT COALESCE(JSON_UNQUOTE(JSON_EXTRACT(mc.settings, '$.BASE_MERCHANT_NAME')), '') as base_merchant_name, COALESCE(u.name, '') as user_name, COALESCE(um.softpos_uuid, '') as softpos_uuid, COALESCE(mc.settings, '{}') as settings FROM user_metadata um LEFT JOIN merchant_configuration mc ON mc.user_id = um.user_id LEFT JOIN users u ON u.id = um.user_id WHERE um.merchant_refrence_number = ? LIMIT 1 ["667267350000000"] [2026-09-02 10:51:26.259] [INFO ] ParamsZipBuilder: Merchant info for merchantid=667267350000000 - business_name=Shubham003, QR_USE_SSL=, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-09-02 10:51:26.262] [DEBUG] QUERY OK source="pos_terminal_data" db=2.8ms idle=7.4ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["26735914"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-09-02 10:51:26.265] [DEBUG] QUERY OK source="address" db=1.8ms idle=8.1ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [639] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-09-02 10:51:26.265] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="667267350000000" [2026-09-02 10:51:26.270] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-09-02 10:51:26.309] [DEBUG] QUERY OK db=37.1ms idle=9.0ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "6b3d5e6ea2d5e53afc1d4f9b9ad3927fcc0ef520ad7f6db0340739ec19cef464", 7491, 912, ~U[2026-09-02 10:51:26Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-09-02 10:51:26], ~N[2026-09-02 10:51:26]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-09-02 10:51:26.309] [INFO ] AutoPushService: Created push log 60619 for MF919 params.zip [2026-09-02 10:51:26.310] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4017/ota/98251226730001/params.zip", "requestId" => 7491, "type" => "tms_command", "version" => "1.0.0"} [2026-09-02 10:51:26.311] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-09-02 10:51:26.311] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-09-02 10:51:26.313] [DEBUG] QUERY OK source="config_file_versions" db=1.9ms idle=46.7ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-09-02 10:51:26.325] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730001 at priv/ota/98251226730001/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-09-02 10:51:26.388] [DEBUG] QUERY OK db=60.4ms idle=19.0ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "13faf1a7b06929457eef5ccf169e6d0262c799cfda9a54480fa169d469e0b3a0", 7555, 17947, ~U[2026-09-02 10:51:26Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-09-02 10:51:26], ~N[2026-09-02 10:51:26]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-09-02 10:51:26.388] [INFO ] AutoPushService: Created push log 60621 for MF919 l3config.zip (version: 1.0.1) [2026-09-02 10:51:26.389] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4017/ota/98251226730001/l3config.zip", "requestId" => 7555, "type" => "tms_command", "version" => "1.0.1"} [2026-09-02 10:51:26.389] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-09-02 10:51:26.389] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-09-02 10:51:26.390] [DEBUG] QUERY OK source="config_file_versions" db=1.0ms queue=0.1ms idle=75.8ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-09-02 10:51:26.393] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-09-02 10:51:26.396] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms queue=2.0ms idle=5.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-09-02 10:51:26.397] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730001 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-09-02 10:51:26.401] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-09-02 10:51:26.401] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 10:51:26.401] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 10:51:26.402] [DEBUG] QUERY OK source="config_file_versions" db=0.9ms idle=11.0ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-09-02 10:51:26.403] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-09-02 10:51:26.403] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-09-02 10:51:26.404] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=6.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:140 [2026-09-02 10:51:26.404] [INFO ] Terminal updated: 98251226730001 [2026-09-02 10:51:26.455] [DEBUG] QUERY OK source="tms_terminals" db=8.3ms queue=42.5ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "3.8.7.3", "1.0.0", "1.0.1", "1.0.0", ~N[2026-09-02 10:51:26], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:164 [2026-09-02 10:51:26.457] [DEBUG] QUERY OK source="parameter_templates" db=1.5ms idle=51.8ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) ORDER BY p0.`updated_at` DESC LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_parameter_version/2, at: lib/tms_core/terminal_management/version_compliance_checker.ex:105 [2026-09-02 10:51:26.460] [DEBUG] QUERY OK source="config_file_versions" db=2.3ms idle=2.2ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-09-02 10:51:26.466] [DEBUG] QUERY OK source="config_file_versions" db=6.0ms idle=2.8ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-09-02 10:51:26.466] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-09-02 10:51:26.523] [DEBUG] QUERY OK source="parameter_push_logs" db=52.5ms idle=11.1ms SELECT TRUE FROM `parameter_push_logs` AS p0 WHERE ((((p0.`terminal_id` = ?) AND (p0.`config_type` = ?)) AND (p0.`inserted_at` >= ?)) AND p0.`status` IN ('pending','sent')) LIMIT 1 [33, "application", ~N[2026-09-02 10:21:26]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-09-02 10:51:26.524] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-09-02 10:51:26.524] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-09-02 10:51:26.526] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=58.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-09-02 10:51:26.528] [DEBUG] QUERY OK source="config_file_versions" db=1.8ms idle=2.5ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-09-02 10:51:26.532] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-09-02 10:51:26.541] [DEBUG] QUERY OK source="tms_terminals" db=9.0ms idle=6.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:1184 [2026-09-02 10:51:26.625] [DEBUG] QUERY OK source="tms_terminals" db=40.5ms queue=41.1ms idle=15.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:51:26], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:174 [2026-09-02 10:51:26.626] [DEBUG] QUERY OK source="app_upgrade_device_statuses" db=0.8ms idle=84.3ms SELECT a0.`id`, a0.`config_id`, a0.`device_id`, a0.`device_sn`, a0.`vendor`, a0.`model`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`update_result`, a0.`status`, a0.`remark`, a0.`finish_time`, a0.`pushed_time`, a0.`retry_count`, a0.`inserted_at`, a0.`updated_at` FROM `app_upgrade_device_statuses` AS a0 WHERE ((a0.`device_sn` = ?) AND a0.`status` IN ('pending','pushed')) ["98251226730001"] ↳ TmsCore.TerminalManagement.AppUpgradeService.maybe_repush_for_device/1, at: lib/tms_core/terminal_management/app_upgrade_service.ex:148 [2026-09-02 10:51:26.674] [DEBUG] QUERY OK db=47.0ms idle=1.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-09-02T10:51:25Z", ~N[2026-09-02 10:51:26], ~N[2026-09-02 10:51:26]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:179 [2026-09-02 10:51:26.674] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 105855, oid: "organization_id", upload_time: "2026-09-02T10:51:25Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:51:26], updated_at: ~N[2026-09-02 10:51:26]} [2026-09-02 10:51:26.674] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-09-02T10:51:25Z", "value" => "online"} [2026-09-02 10:51:26.739] [DEBUG] QUERY OK db=64.1ms idle=48.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-09-02T10:51:25Z", "online", "status", 105855, ~N[2026-09-02 10:51:26], ~N[2026-09-02 10:51:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:51:26.739] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084701, itemkey: "status", value: "online", timestamp: "2026-09-02T10:51:25Z", message: "Terminal status update", status_log_id: 105855, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:51:26], updated_at: ~N[2026-09-02 10:51:26]}} [2026-09-02 10:51:26.740] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-09-02 10:51:26.740] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-09-02T10:51:25Z", "value" => "34"} [2026-09-02 10:51:26.798] [DEBUG] QUERY OK db=57.8ms idle=66.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-09-02T10:51:25Z", "34", "battery", 105855, ~N[2026-09-02 10:51:26], ~N[2026-09-02 10:51:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:51:26.799] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084704, itemkey: "battery", value: "34", timestamp: "2026-09-02T10:51:25Z", message: "Battery level", status_log_id: 105855, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:51:26], updated_at: ~N[2026-09-02 10:51:26]}} [2026-09-02 10:51:26.799] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-09-02T10:51:25Z", "value" => "online"} [2026-09-02 10:51:26.854] [DEBUG] QUERY OK db=54.8ms idle=60.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-09-02T10:51:25Z", "online", "network", 105855, ~N[2026-09-02 10:51:26], ~N[2026-09-02 10:51:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:51:26.854] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084707, itemkey: "network", value: "online", timestamp: "2026-09-02T10:51:25Z", message: "Network connectivity", status_log_id: 105855, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:51:26], updated_at: ~N[2026-09-02 10:51:26]}} [2026-09-02 10:51:26.855] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-09-02 10:51:26.855] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-09-02T10:51:25Z", "value" => "0"} [2026-09-02 10:51:26.908] [DEBUG] QUERY OK db=52.4ms idle=57.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-09-02T10:51:25Z", "0", "cpu", 105855, ~N[2026-09-02 10:51:26], ~N[2026-09-02 10:51:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:51:26.908] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084710, itemkey: "cpu", value: "0", timestamp: "2026-09-02T10:51:25Z", message: "CPU usage percentage", status_log_id: 105855, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:51:26], updated_at: ~N[2026-09-02 10:51:26]}} [2026-09-02 10:51:26.908] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-09-02T10:51:25Z", "value" => "1.0.0"} [2026-09-02 10:51:26.980] [DEBUG] QUERY OK db=71.2ms idle=54.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-09-02T10:51:25Z", "1.0.0", "parameter_config", 105855, ~N[2026-09-02 10:51:26], ~N[2026-09-02 10:51:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:51:26.980] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084713, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-09-02T10:51:25Z", message: "Current parameters version", status_log_id: 105855, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:51:26], updated_at: ~N[2026-09-02 10:51:26]}} [2026-09-02 10:51:26.981] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-09-02T10:51:25Z", "value" => "1.0.1"} [2026-09-02 10:51:27.055] [DEBUG] QUERY OK db=73.8ms idle=73.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-09-02T10:51:25Z", "1.0.1", "emv_config", 105855, ~N[2026-09-02 10:51:26], ~N[2026-09-02 10:51:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:51:27.056] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084716, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-09-02T10:51:25Z", message: "Current EMV config version", status_log_id: 105855, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:51:26], updated_at: ~N[2026-09-02 10:51:26]}} [2026-09-02 10:51:27.056] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-09-02T10:51:25Z", "value" => ""} [2026-09-02 10:51:27.171] [DEBUG] QUERY OK db=113.6ms queue=0.8ms idle=76.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-09-02T10:51:25Z", "keys_config", 105855, ~N[2026-09-02 10:51:27], ~N[2026-09-02 10:51:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:51:27.171] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084719, itemkey: "keys_config", value: nil, timestamp: "2026-09-02T10:51:25Z", message: "Current keys config version", status_log_id: 105855, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:51:27], updated_at: ~N[2026-09-02 10:51:27]}} [2026-09-02 10:51:27.171] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-09-02T10:51:25Z", "value" => "3.8.7.3"} [2026-09-02 10:51:27.236] [DEBUG] QUERY OK db=62.4ms queue=0.3ms idle=118.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-09-02T10:51:25Z", "3.8.7.3", "application", 105855, ~N[2026-09-02 10:51:27], ~N[2026-09-02 10:51:27]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:51:27.237] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084721, itemkey: "application", value: "3.8.7.3", timestamp: "2026-09-02T10:51:25Z", message: "Current application version", status_log_id: 105855, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:51:27], updated_at: ~N[2026-09-02 10:51:27]}} [2026-09-02 10:51:27.237] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-09-02T10:51:25Z"} [2026-09-02 10:51:27.241] [INFO ] Received device ACK from 98251226730001: oid= status=error [2026-09-02 10:51:27.241] [WARN ] Unhandled device ACK oid= from 98251226730001: %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-09-02T10:51:25Z"} [2026-09-02 10:51:27.244] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.0","requestId":"7491","status":"success","timestamp":1788346285865,"type":"tms_response"} [2026-09-02 10:51:27.244] [INFO ] Processing file download response for device 98251226730001, request_id: 7491 [2026-09-02 10:51:27.245] [DEBUG] QUERY OK source="file_download_logs" db=0.5ms idle=23.4ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["7491"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:51:27.245] [INFO ] No file download log for request_id 7491; response not attached to a push [2026-09-02 10:51:27.245] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:51:27.245710Z], response: %{"message" => "Already up to date: 1.0.0", "requestId" => "7491", "status" => "success", "timestamp" => 1788346285865, "type" => "tms_response"}, request_id: "7491", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:51:27.246] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.0","requestId":"261699","status":"success","timestamp":1788346285886,"type":"tms_response"} [2026-09-02 10:51:27.246] [INFO ] Processing file download response for device 98251226730001, request_id: 261699 [2026-09-02 10:51:27.251] [DEBUG] QUERY OK source="file_download_logs" db=1.5ms idle=12.9ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["261699"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:51:27.251] [INFO ] No file download log for request_id 261699; response not attached to a push [2026-09-02 10:51:27.251] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:51:27.251494Z], response: %{"message" => "Already up to date: 1.0.0", "requestId" => "261699", "status" => "success", "timestamp" => 1788346285886, "type" => "tms_response"}, request_id: "261699", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:51:27.251] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.1","requestId":"7555","status":"success","timestamp":1788346285902,"type":"tms_response"} [2026-09-02 10:51:27.251] [INFO ] Processing file download response for device 98251226730001, request_id: 7555 [2026-09-02 10:51:27.252] [DEBUG] QUERY OK source="file_download_logs" db=0.5ms idle=7.0ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["7555"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:51:27.252] [INFO ] No file download log for request_id 7555; response not attached to a push [2026-09-02 10:51:27.252] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:51:27.252798Z], response: %{"message" => "Already up to date: 1.0.1", "requestId" => "7555", "status" => "success", "timestamp" => 1788346285902, "type" => "tms_response"}, request_id: "7555", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:51:27.253] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.1","requestId":"300802","status":"success","timestamp":1788346285920,"type":"tms_response"} [2026-09-02 10:51:27.253] [INFO ] Processing file download response for device 98251226730001, request_id: 300802 [2026-09-02 10:51:27.253] [DEBUG] QUERY OK source="file_download_logs" db=0.3ms idle=2.0ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["300802"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:51:27.253] [INFO ] No file download log for request_id 300802; response not attached to a push [2026-09-02 10:51:27.254] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:51:27.253730Z], response: %{"message" => "Already up to date: 1.0.1", "requestId" => "300802", "status" => "success", "timestamp" => 1788346285920, "type" => "tms_response"}, request_id: "300802", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:51:27.254] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-09-02T10:51:25Z"} [2026-09-02 10:51:27.254] [INFO ] Received device ACK from 98251226730001: oid= status=error [2026-09-02 10:51:27.254] [WARN ] Unhandled device ACK oid= from 98251226730001: %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-09-02T10:51:25Z"} [2026-09-02 10:51:27.254] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-09-02T10:51:25Z"} [2026-09-02 10:51:27.254] [INFO ] Received device ACK from 98251226730001: oid= status=error [2026-09-02 10:51:27.254] [WARN ] Unhandled device ACK oid= from 98251226730001: %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-09-02T10:51:25Z"} [2026-09-02 10:51:27.254] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-09-02T10:51:25Z"} [2026-09-02 10:51:27.255] [INFO ] Received device ACK from 98251226730001: oid= status=error [2026-09-02 10:51:27.255] [WARN ] Unhandled device ACK oid= from 98251226730001: %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-09-02T10:51:25Z"} [2026-09-02 10:51:27.255] [WARN ] Unexpected async result [2026-09-02 10:51:27.256] [WARN ] Unexpected async result [2026-09-02 10:53:44.537] [INFO ] Received status update for terminal 98251226730001 [2026-09-02 10:53:44.537] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-09-02T10:53:43Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-09-02T10:53:43Z","value":"34"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-09-02T10:53:43Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-09-02T10:53:43Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-09-02T10:53:43Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-09-02T10:53:43Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-09-02T10:53:43Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-09-02T10:53:43Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-09-02T10:53:43Z","vendor":"MoreFun"} [2026-09-02 10:53:44.537] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-09-02T10:53:43Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-09-02T10:53:43Z", "value" => "34"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-09-02T10:53:43Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-09-02T10:53:43Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-09-02T10:53:43Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-09-02T10:53:43Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-09-02T10:53:43Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-09-02T10:53:43Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-09-02T10:53:43Z", "vendor" => "MoreFun"} [2026-09-02 10:53:44.537] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-09-02 10:53:44.537] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-09-02 10:53:44.537] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-09-02 10:53:44.542] [DEBUG] QUERY OK source="parameter_templates" db=1.5ms queue=0.2ms idle=671.6ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-09-02 10:53:44.545] [DEBUG] QUERY OK source="tms_terminals" db=1.9ms queue=0.3ms idle=421.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-09-02 10:53:44.556] [DEBUG] QUERY OK source="parameter_template_values" db=10.7ms idle=2.8ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-09-02 10:53:44.558] [DEBUG] QUERY OK source="parameter_definitions" db=0.9ms queue=1.0ms idle=11.6ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-09-02 10:53:44.561] [DEBUG] QUERY OK source="pos_terminal" db=0.6ms idle=4.7ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-09-02 10:53:44.601] [DEBUG] QUERY OK source="pos_merchant" db=38.1ms idle=3.3ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [350] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-09-02 10:53:44.608] [DEBUG] QUERY OK db=0.8ms queue=4.2ms idle=1557.8ms SELECT COALESCE(JSON_UNQUOTE(JSON_EXTRACT(mc.settings, '$.BASE_MERCHANT_NAME')), '') as base_merchant_name, COALESCE(u.name, '') as user_name, COALESCE(um.softpos_uuid, '') as softpos_uuid, COALESCE(mc.settings, '{}') as settings FROM user_metadata um LEFT JOIN merchant_configuration mc ON mc.user_id = um.user_id LEFT JOIN users u ON u.id = um.user_id WHERE um.merchant_refrence_number = ? LIMIT 1 ["667267350000000"] [2026-09-02 10:53:44.610] [INFO ] ParamsZipBuilder: Merchant info for merchantid=667267350000000 - business_name=Shubham003, QR_USE_SSL=, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-09-02 10:53:44.611] [DEBUG] QUERY OK source="pos_terminal_data" db=0.6ms idle=49.4ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["26735914"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-09-02 10:53:44.613] [DEBUG] QUERY OK source="address" db=0.8ms idle=11.8ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [639] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-09-02 10:53:44.613] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="667267350000000" [2026-09-02 10:53:44.615] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-09-02 10:53:44.701] [DEBUG] QUERY OK db=85.0ms idle=4.9ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "8fb2d6eac072448510840c8b7a77a6bbe9251accac89f324c1dd4a274cc42426", 3588, 912, ~U[2026-09-02 10:53:44Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-09-02 10:53:44], ~N[2026-09-02 10:53:44]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-09-02 10:53:44.702] [INFO ] AutoPushService: Created push log 60624 for MF919 params.zip [2026-09-02 10:53:44.702] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4017/ota/98251226730001/params.zip", "requestId" => 3588, "type" => "tms_command", "version" => "1.0.0"} [2026-09-02 10:53:44.702] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-09-02 10:53:44.703] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-09-02 10:53:44.706] [DEBUG] QUERY OK source="config_file_versions" db=1.2ms queue=0.6ms idle=91.5ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-09-02 10:53:44.714] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730001 at priv/ota/98251226730001/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-09-02 10:53:44.780] [DEBUG] QUERY OK db=62.8ms idle=15.7ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "8944983d39d41f03df1bcf6989035b640332410737fc96eee89f9d42d180c257", 7747, 17947, ~U[2026-09-02 10:53:44Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-09-02 10:53:44], ~N[2026-09-02 10:53:44]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-09-02 10:53:44.781] [INFO ] AutoPushService: Created push log 60626 for MF919 l3config.zip (version: 1.0.1) [2026-09-02 10:53:44.782] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4017/ota/98251226730001/l3config.zip", "requestId" => 7747, "type" => "tms_command", "version" => "1.0.1"} [2026-09-02 10:53:44.782] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-09-02 10:53:44.782] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-09-02 10:53:44.785] [DEBUG] QUERY OK source="config_file_versions" db=1.5ms idle=77.2ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-09-02 10:53:44.787] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-09-02 10:53:44.791] [DEBUG] QUERY OK source="tms_terminals" db=3.4ms idle=7.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-09-02 10:53:44.791] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730001 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-09-02 10:53:44.796] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-09-02 10:53:44.796] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 10:53:44.796] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 10:53:44.798] [DEBUG] QUERY OK source="config_file_versions" db=1.6ms idle=11.9ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-09-02 10:53:44.803] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-09-02 10:53:44.804] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-09-02 10:53:44.805] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms idle=13.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:140 [2026-09-02 10:53:44.806] [INFO ] Terminal updated: 98251226730001 [2026-09-02 10:53:44.808] [DEBUG] QUERY OK source="parameter_templates" db=2.0ms idle=7.3ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) ORDER BY p0.`updated_at` DESC LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_parameter_version/2, at: lib/tms_core/terminal_management/version_compliance_checker.ex:105 [2026-09-02 10:53:44.811] [DEBUG] QUERY OK source="config_file_versions" db=1.4ms idle=3.8ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-09-02 10:53:44.812] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms idle=3.0ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-09-02 10:53:44.812] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-09-02 10:53:44.834] [DEBUG] QUERY OK source="parameter_push_logs" db=21.9ms idle=1.3ms SELECT TRUE FROM `parameter_push_logs` AS p0 WHERE ((((p0.`terminal_id` = ?) AND (p0.`config_type` = ?)) AND (p0.`inserted_at` >= ?)) AND p0.`status` IN ('pending','sent')) LIMIT 1 [33, "application", ~N[2026-09-02 10:23:44]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-09-02 10:53:44.834] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-09-02 10:53:44.834] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-09-02 10:53:44.835] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=22.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-09-02 10:53:44.836] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms queue=0.1ms idle=1.6ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-09-02 10:53:44.837] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-09-02 10:53:44.838] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=1.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:1184 [2026-09-02 10:53:44.881] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=42.5ms idle=1.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:53:44], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:174 [2026-09-02 10:53:44.890] [DEBUG] QUERY OK source="app_upgrade_device_statuses" db=0.7ms queue=7.0ms idle=0.0ms SELECT a0.`id`, a0.`config_id`, a0.`device_id`, a0.`device_sn`, a0.`vendor`, a0.`model`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`update_result`, a0.`status`, a0.`remark`, a0.`finish_time`, a0.`pushed_time`, a0.`retry_count`, a0.`inserted_at`, a0.`updated_at` FROM `app_upgrade_device_statuses` AS a0 WHERE ((a0.`device_sn` = ?) AND a0.`status` IN ('pending','pushed')) ["98251226730001"] ↳ TmsCore.TerminalManagement.AppUpgradeService.maybe_repush_for_device/1, at: lib/tms_core/terminal_management/app_upgrade_service.ex:148 [2026-09-02 10:53:44.948] [DEBUG] QUERY OK db=57.1ms idle=0.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-09-02T10:53:43Z", ~N[2026-09-02 10:53:44], ~N[2026-09-02 10:53:44]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:179 [2026-09-02 10:53:44.948] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 105860, oid: "organization_id", upload_time: "2026-09-02T10:53:43Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:53:44], updated_at: ~N[2026-09-02 10:53:44]} [2026-09-02 10:53:44.948] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-09-02T10:53:43Z", "value" => "online"} [2026-09-02 10:53:44.998] [DEBUG] QUERY OK db=48.8ms idle=36.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-09-02T10:53:43Z", "online", "status", 105860, ~N[2026-09-02 10:53:44], ~N[2026-09-02 10:53:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:53:44.998] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084727, itemkey: "status", value: "online", timestamp: "2026-09-02T10:53:43Z", message: "Terminal status update", status_log_id: 105860, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:53:44], updated_at: ~N[2026-09-02 10:53:44]}} [2026-09-02 10:53:44.998] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-09-02 10:53:44.999] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=50.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:53:44], 33] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:203 [2026-09-02 10:53:45.000] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-09-02T10:53:43Z", "value" => "34"} [2026-09-02 10:53:45.061] [DEBUG] QUERY OK db=60.9ms idle=2.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-09-02T10:53:43Z", "34", "battery", 105860, ~N[2026-09-02 10:53:45], ~N[2026-09-02 10:53:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:53:45.061] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084729, itemkey: "battery", value: "34", timestamp: "2026-09-02T10:53:43Z", message: "Battery level", status_log_id: 105860, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:53:45], updated_at: ~N[2026-09-02 10:53:45]}} [2026-09-02 10:53:45.061] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-09-02T10:53:43Z", "value" => "online"} [2026-09-02 10:53:45.133] [DEBUG] QUERY OK db=70.2ms idle=63.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-09-02T10:53:43Z", "online", "network", 105860, ~N[2026-09-02 10:53:45], ~N[2026-09-02 10:53:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:53:45.133] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084731, itemkey: "network", value: "online", timestamp: "2026-09-02T10:53:43Z", message: "Network connectivity", status_log_id: 105860, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:53:45], updated_at: ~N[2026-09-02 10:53:45]}} [2026-09-02 10:53:45.133] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-09-02 10:53:45.135] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=72.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:53:45], 33] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:203 [2026-09-02 10:53:45.137] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-09-02T10:53:43Z", "value" => "0"} [2026-09-02 10:53:45.205] [DEBUG] QUERY OK db=67.6ms queue=0.1ms idle=4.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-09-02T10:53:43Z", "0", "cpu", 105860, ~N[2026-09-02 10:53:45], ~N[2026-09-02 10:53:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:53:45.205] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084736, itemkey: "cpu", value: "0", timestamp: "2026-09-02T10:53:43Z", message: "CPU usage percentage", status_log_id: 105860, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:53:45], updated_at: ~N[2026-09-02 10:53:45]}} [2026-09-02 10:53:45.206] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-09-02T10:53:43Z", "value" => "1.0.0"} [2026-09-02 10:53:45.274] [DEBUG] QUERY OK db=67.1ms queue=0.3ms idle=71.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-09-02T10:53:43Z", "1.0.0", "parameter_config", 105860, ~N[2026-09-02 10:53:45], ~N[2026-09-02 10:53:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:53:45.275] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084738, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-09-02T10:53:43Z", message: "Current parameters version", status_log_id: 105860, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:53:45], updated_at: ~N[2026-09-02 10:53:45]}} [2026-09-02 10:53:45.275] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-09-02T10:53:43Z", "value" => "1.0.1"} [2026-09-02 10:53:45.382] [DEBUG] QUERY OK db=104.0ms queue=3.1ms idle=69.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-09-02T10:53:43Z", "1.0.1", "emv_config", 105860, ~N[2026-09-02 10:53:45], ~N[2026-09-02 10:53:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:53:45.382] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084741, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-09-02T10:53:43Z", message: "Current EMV config version", status_log_id: 105860, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:53:45], updated_at: ~N[2026-09-02 10:53:45]}} [2026-09-02 10:53:45.383] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-09-02T10:53:43Z", "value" => ""} [2026-09-02 10:53:45.429] [DEBUG] QUERY OK db=38.7ms queue=2.3ms idle=114.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-09-02T10:53:43Z", "keys_config", 105860, ~N[2026-09-02 10:53:45], ~N[2026-09-02 10:53:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:53:45.432] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084744, itemkey: "keys_config", value: nil, timestamp: "2026-09-02T10:53:43Z", message: "Current keys config version", status_log_id: 105860, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:53:45], updated_at: ~N[2026-09-02 10:53:45]}} [2026-09-02 10:53:45.433] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-09-02T10:53:43Z", "value" => "3.8.7.3"} [2026-09-02 10:53:45.529] [DEBUG] QUERY OK db=92.5ms queue=1.8ms idle=52.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-09-02T10:53:43Z", "3.8.7.3", "application", 105860, ~N[2026-09-02 10:53:45], ~N[2026-09-02 10:53:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:53:45.530] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084746, itemkey: "application", value: "3.8.7.3", timestamp: "2026-09-02T10:53:43Z", message: "Current application version", status_log_id: 105860, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:53:45], updated_at: ~N[2026-09-02 10:53:45]}} [2026-09-02 10:53:45.533] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms queue=1.1ms idle=101.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:53:45], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:233 [2026-09-02 10:53:45.534] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.0","requestId":"301282","status":"success","timestamp":1788346424210,"type":"tms_response"} [2026-09-02 10:53:45.535] [INFO ] Processing file download response for device 98251226730001, request_id: 301282 [2026-09-02 10:53:45.537] [DEBUG] QUERY OK source="file_download_logs" db=1.0ms idle=6.4ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["301282"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:53:45.537] [INFO ] No file download log for request_id 301282; response not attached to a push [2026-09-02 10:53:45.537] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:53:45.537476Z], response: %{"message" => "Already up to date: 1.0.0", "requestId" => "301282", "status" => "success", "timestamp" => 1788346424210, "type" => "tms_response"}, request_id: "301282", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:53:45.537] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.0","requestId":"3588","status":"success","timestamp":1788346424230,"type":"tms_response"} [2026-09-02 10:53:45.537] [INFO ] Processing file download response for device 98251226730001, request_id: 3588 [2026-09-02 10:53:45.539] [DEBUG] QUERY OK source="file_download_logs" db=1.2ms idle=4.9ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["3588"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:53:45.539] [INFO ] No file download log for request_id 3588; response not attached to a push [2026-09-02 10:53:45.539] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:53:45.539524Z], response: %{"message" => "Already up to date: 1.0.0", "requestId" => "3588", "status" => "success", "timestamp" => 1788346424230, "type" => "tms_response"}, request_id: "3588", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:53:45.540] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.1","requestId":"301346","status":"success","timestamp":1788346424255,"type":"tms_response"} [2026-09-02 10:53:45.541] [INFO ] Processing file download response for device 98251226730001, request_id: 301346 [2026-09-02 10:53:45.542] [DEBUG] QUERY OK source="file_download_logs" db=0.7ms idle=4.8ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["301346"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:53:45.543] [INFO ] No file download log for request_id 301346; response not attached to a push [2026-09-02 10:53:45.545] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:53:45.543880Z], response: %{"message" => "Already up to date: 1.0.1", "requestId" => "301346", "status" => "success", "timestamp" => 1788346424255, "type" => "tms_response"}, request_id: "301346", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:53:45.545] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.1","requestId":"7747","status":"success","timestamp":1788346424275,"type":"tms_response"} [2026-09-02 10:53:45.545] [INFO ] Processing file download response for device 98251226730001, request_id: 7747 [2026-09-02 10:53:45.553] [DEBUG] QUERY OK source="file_download_logs" db=7.7ms idle=6.1ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["7747"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:53:45.553] [INFO ] No file download log for request_id 7747; response not attached to a push [2026-09-02 10:53:45.553] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:53:45.553484Z], response: %{"message" => "Already up to date: 1.0.1", "requestId" => "7747", "status" => "success", "timestamp" => 1788346424275, "type" => "tms_response"}, request_id: "7747", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:53:45.553] [WARN ] Unexpected async result [2026-09-02 10:53:45.553] [WARN ] Unexpected async result [2026-09-02 10:54:12.987] [INFO ] Running offline device check... [2026-09-02 10:54:12.987] [INFO ] Starting offline device check... [2026-09-02 10:54:12.989] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms queue=0.3ms idle=954.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1234 [2026-09-02 10:54:12.991] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=862.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [1] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:54:12.994] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=0.8ms idle=2.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:54:12.996] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms queue=0.1ms idle=2.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:54:13.000] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.5ms idle=2.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:54:13.004] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.3ms idle=4.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:54:13.005] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=4.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:54:13.007] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:54:13.008] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:54:13.009] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:54:13.012] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:54:13.014] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=3.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:54:13.015] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.7ms idle=4.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:54:13.016] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:54:13.019] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:54:13.020] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=3.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:54:13.021] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:54:13.022] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.3ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:54:13.025] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.6ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:54:13.026] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=3.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:54:13.027] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:54:13.028] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:54:13.029] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:54:13.030] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.4ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:54:13.031] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.1ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:54:13.031] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:54:13.032] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:54:13.033] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:54:13.034] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:54:13.035] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:54:13.037] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms queue=0.1ms idle=0.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:54:13.038] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=0.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:54:13.039] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:54:13.041] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms queue=0.3ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:54:13.043] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:54:13.044] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:54:13.044] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:54:13.046] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:54:13.047] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms queue=0.4ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:54:13.047] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.2ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:54:13.048] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:54:13.049] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:54:13.050] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.2ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:54:13.051] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:54:13.052] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:54:13.053] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:54:13.055] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:54:13.056] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:54:13.059] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms queue=0.1ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:54:13.061] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms queue=0.9ms idle=3.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:54:13.062] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=3.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:54:13.064] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:54:13.065] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:54:13.065] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [82] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:54:13.066] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [83] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:54:13.066] [INFO ] Offline device check completed. Found 50 offline devices, updated 0 statuses. [2026-09-02 10:54:13.067] [INFO ] Offline device check completed successfully [2026-09-02 10:55:38.901] [INFO ] Received status update for terminal 61250415798001 [2026-09-02 10:55:38.903] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61250415798001","vendor":"MoreFun","model":"SR600","uploadTime":"-3709478-07-11T19:43:37Z","org.device":[{"itemkey":"status","value":"online","timestamp":"-3709478-07-11T19:43:37Z","message":"Device Connected"}]} [2026-09-02 10:55:38.903] [INFO ] Decoded JSON: %{"model" => "SR600", "oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "status", "message" => "Device Connected", "timestamp" => "-3709478-07-11T19:43:37Z", "value" => "online"}], "sn" => "61250415798001", "uploadTime" => "-3709478-07-11T19:43:37Z", "vendor" => "MoreFun"} [2026-09-02 10:55:38.903] [INFO ] Extracted versions for 61250415798001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-09-02 10:55:38.903] [INFO ] Detected missing versions for 61250415798001, triggering auto-push [2026-09-02 10:55:38.903] [INFO ] AutoPushService: Triggering auto-push for 61250415798001 (MoreFun SR600) - missing version [2026-09-02 10:55:38.905] [DEBUG] QUERY OK source="parameter_templates" db=1.2ms idle=1444.4ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["MoreFun", "SR600"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-09-02 10:55:38.911] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms queue=0.5ms idle=446.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-09-02 10:55:38.915] [DEBUG] QUERY OK source="parameter_template_values" db=3.3ms idle=6.8ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [7] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-09-02 10:55:38.998] [DEBUG] QUERY OK db=81.1ms idle=5.6ms INSERT INTO `parameter_push_logs` (`status`,`request_id`,`log_time`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", 11746, ~U[2026-09-02 10:55:38Z], 1, "parameter", "SR600", "MoreFun", %{}, "full", 7, "missing_version", "1.0.0", ~N[2026-09-02 10:55:38], ~N[2026-09-02 10:55:38]] ↳ TmsCore.TerminalManagement.AutoPushService.push_generic_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:235 [2026-09-02 10:55:38.999] [INFO ] AutoPushService: Created push log 60627 for parameters (template: 7) [2026-09-02 10:55:38.999] [INFO ] SR600 MQTT Command: %{"command" => "file_download", "merchant_config" => "true", "request_id" => 11746, "retry_count" => "3", "version" => "1.0.0"} [2026-09-02 10:55:39.000] [INFO ] AutoPushService: Sending parameter push to 61250415798001 on topic: /ota/pFppbioOCKlo5c8E/61250415798001/update [2026-09-02 10:55:39.000] [INFO ] AutoPushService: Parameter push sent successfully to 61250415798001 [2026-09-02 10:55:39.068] [DEBUG] QUERY OK db=65.6ms queue=2.4ms idle=85.1ms INSERT INTO `parameter_push_logs` (`status`,`request_id`,`log_time`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?) ["pending", 11810, ~U[2026-09-02 10:55:39Z], 1, "emv_config", "SR600", "MoreFun", "full", "missing_version", ~N[2026-09-02 10:55:39], ~N[2026-09-02 10:55:39]] ↳ TmsCore.TerminalManagement.AutoPushService.push_regular_config/5, at: lib/tms_core/terminal_management/auto_push_service.ex:427 [2026-09-02 10:55:39.069] [INFO ] AutoPushService: Created push log for emv_config [2026-09-02 10:55:39.069] [INFO ] SR600 MQTT Command: %{"command" => "file_download", "merchant_config" => "true", "request_id" => 11810, "retry_count" => "3"} [2026-09-02 10:55:39.072] [INFO ] AutoPushService: Sending emv_config push to 61250415798001 on topic: /ota/pFppbioOCKlo5c8E/61250415798001/update [2026-09-02 10:55:39.072] [INFO ] AutoPushService: emv_config push sent successfully to 61250415798001 [2026-09-02 10:55:39.074] [DEBUG] QUERY OK source="config_file_versions" db=1.3ms queue=0.1ms idle=74.2ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "SR600"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-09-02 10:55:39.074] [INFO ] KeysConfigService: Generating keys.json for 61250415798001 (SR600) [2026-09-02 10:55:39.076] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms idle=6.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-09-02 10:55:39.077] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 61250415798001 with params: %{"kekKcv" => "112233", "model" => "SR600", "serialNumber" => "61250415798001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-09-02 10:55:39.079] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-09-02 10:55:39.079] [ERROR] KeysConfigService: Failed to generate keys for 61250415798001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 10:55:39.079] [ERROR] AutoPushService: Failed to generate keys.json for 61250415798001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 10:55:39.130] [DEBUG] QUERY OK db=45.1ms idle=10.0ms INSERT INTO `parameter_push_logs` (`status`,`request_id`,`log_time`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?) ["pending", 3684, ~U[2026-09-02 10:55:39Z], 1, "application", "SR600", "MoreFun", "full", "missing_version", ~N[2026-09-02 10:55:39], ~N[2026-09-02 10:55:39]] ↳ TmsCore.TerminalManagement.AutoPushService.push_regular_config/5, at: lib/tms_core/terminal_management/auto_push_service.ex:427 [2026-09-02 10:55:39.130] [INFO ] AutoPushService: Created push log for application [2026-09-02 10:55:39.132] [INFO ] SR600 MQTT Command: %{"command" => "file_download", "merchant_config" => "true", "request_id" => 3684, "retry_count" => "3"} [2026-09-02 10:55:39.132] [INFO ] AutoPushService: Sending application push to 61250415798001 on topic: /ota/pFppbioOCKlo5c8E/61250415798001/update [2026-09-02 10:55:39.132] [INFO ] AutoPushService: application push sent successfully to 61250415798001 [2026-09-02 10:55:39.132] [INFO ] AutoPushService: Auto-push completed for 61250415798001 [2026-09-02 10:55:39.145] [DEBUG] QUERY OK source="tms_terminals" db=2.0ms idle=67.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:140 [2026-09-02 10:55:39.147] [INFO ] Terminal updated: 61250415798001 [2026-09-02 10:55:39.187] [DEBUG] QUERY OK source="tms_terminals" db=36.7ms queue=0.5ms idle=20.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-09-02 10:55:39], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:164 [2026-09-02 10:55:39.187] [DEBUG] VersionComplianceChecker: 61250415798001 — all versions compliant [2026-09-02 10:55:39.194] [DEBUG] QUERY OK source="tms_terminals" db=7.4ms idle=41.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:1184 [2026-09-02 10:55:39.235] [DEBUG] QUERY OK source="tms_terminals" db=39.7ms queue=0.2ms idle=8.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:55:39], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:174 [2026-09-02 10:55:39.238] [DEBUG] QUERY OK source="app_upgrade_device_statuses" db=0.6ms idle=46.1ms SELECT a0.`id`, a0.`config_id`, a0.`device_id`, a0.`device_sn`, a0.`vendor`, a0.`model`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`update_result`, a0.`status`, a0.`remark`, a0.`finish_time`, a0.`pushed_time`, a0.`retry_count`, a0.`inserted_at`, a0.`updated_at` FROM `app_upgrade_device_statuses` AS a0 WHERE ((a0.`device_sn` = ?) AND a0.`status` IN ('pending','pushed')) ["61250415798001"] ↳ TmsCore.TerminalManagement.AppUpgradeService.maybe_repush_for_device/1, at: lib/tms_core/terminal_management/app_upgrade_service.ex:148 [2026-09-02 10:55:39.309] [DEBUG] QUERY OK db=68.4ms idle=5.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [1, "org-id-placeholder", "-3709478-07-11T19:43:37Z", ~N[2026-09-02 10:55:39], ~N[2026-09-02 10:55:39]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:179 [2026-09-02 10:55:39.310] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 105862, oid: "org-id-placeholder", upload_time: "-3709478-07-11T19:43:37Z", terminal_id: 1, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:55:39], updated_at: ~N[2026-09-02 10:55:39]} [2026-09-02 10:55:39.310] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Device Connected", "timestamp" => "-3709478-07-11T19:43:37Z", "value" => "online"} [2026-09-02 10:55:39.355] [DEBUG] QUERY OK db=44.0ms idle=73.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Device Connected", "-3709478-07-11T19:43:37Z", "online", "status", 105862, ~N[2026-09-02 10:55:39], ~N[2026-09-02 10:55:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:55:39.357] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084750, itemkey: "status", value: "online", timestamp: "-3709478-07-11T19:43:37Z", message: "Device Connected", status_log_id: 105862, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:55:39], updated_at: ~N[2026-09-02 10:55:39]}} [2026-09-02 10:55:39.360] [INFO ] Setting terminal 61250415798001 status to 'online' from status itemkey [2026-09-02 10:55:39.361] [WARN ] Unexpected async result [2026-09-02 10:55:39.361] [WARN ] Unexpected async result [2026-09-02 10:55:39.361] [WARN ] Unexpected async result [2026-09-02 10:56:02.607] [INFO ] Received status update for terminal 98251226730001 [2026-09-02 10:56:02.607] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-09-02T10:56:01Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-09-02T10:56:01Z","value":"34"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-09-02T10:56:01Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-09-02T10:56:01Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-09-02T10:56:01Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-09-02T10:56:01Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-09-02T10:56:01Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-09-02T10:56:01Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-09-02T10:56:01Z","vendor":"MoreFun"} [2026-09-02 10:56:02.608] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-09-02T10:56:01Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-09-02T10:56:01Z", "value" => "34"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-09-02T10:56:01Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-09-02T10:56:01Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-09-02T10:56:01Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-09-02T10:56:01Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-09-02T10:56:01Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-09-02T10:56:01Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-09-02T10:56:01Z", "vendor" => "MoreFun"} [2026-09-02 10:56:02.608] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-09-02 10:56:02.618] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-09-02 10:56:02.622] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-09-02 10:56:02.633] [DEBUG] QUERY OK source="parameter_templates" db=8.6ms idle=471.7ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-09-02 10:56:02.645] [DEBUG] QUERY OK source="tms_terminals" db=11.9ms idle=63.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-09-02 10:56:02.655] [DEBUG] QUERY OK source="parameter_template_values" db=2.5ms queue=0.4ms idle=18.9ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-09-02 10:56:02.670] [DEBUG] QUERY OK source="parameter_definitions" db=2.8ms queue=7.9ms idle=14.4ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-09-02 10:56:02.673] [DEBUG] QUERY OK source="pos_terminal" db=1.6ms idle=16.1ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-09-02 10:56:02.713] [DEBUG] QUERY OK source="pos_merchant" db=40.2ms idle=2.4ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [350] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-09-02 10:56:02.720] [DEBUG] QUERY OK db=3.1ms queue=3.3ms idle=648.7ms SELECT COALESCE(JSON_UNQUOTE(JSON_EXTRACT(mc.settings, '$.BASE_MERCHANT_NAME')), '') as base_merchant_name, COALESCE(u.name, '') as user_name, COALESCE(um.softpos_uuid, '') as softpos_uuid, COALESCE(mc.settings, '{}') as settings FROM user_metadata um LEFT JOIN merchant_configuration mc ON mc.user_id = um.user_id LEFT JOIN users u ON u.id = um.user_id WHERE um.merchant_refrence_number = ? LIMIT 1 ["667267350000000"] [2026-09-02 10:56:02.720] [INFO ] ParamsZipBuilder: Merchant info for merchantid=667267350000000 - business_name=Shubham003, QR_USE_SSL=, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-09-02 10:56:02.725] [DEBUG] QUERY OK source="pos_terminal_data" db=3.8ms queue=0.6ms idle=47.6ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["26735914"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-09-02 10:56:02.732] [DEBUG] QUERY OK source="address" db=0.4ms idle=12.0ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [639] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-09-02 10:56:02.732] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="667267350000000" [2026-09-02 10:56:02.742] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-09-02 10:56:02.808] [DEBUG] QUERY OK db=60.9ms idle=21.5ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "9df87bf9ba11b0ad4ea8c0ff3b929c36acf28f2c1c285923fbe6b0652f2d6a53", 3269, 912, ~U[2026-09-02 10:56:02Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-09-02 10:56:02], ~N[2026-09-02 10:56:02]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-09-02 10:56:02.808] [INFO ] AutoPushService: Created push log 60636 for MF919 params.zip [2026-09-02 10:56:02.808] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4017/ota/98251226730001/params.zip", "requestId" => 3269, "type" => "tms_command", "version" => "1.0.0"} [2026-09-02 10:56:02.808] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-09-02 10:56:02.808] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-09-02 10:56:02.812] [DEBUG] QUERY OK source="config_file_versions" db=3.1ms idle=83.0ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-09-02 10:56:02.878] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730001 at priv/ota/98251226730001/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-09-02 10:56:02.938] [DEBUG] QUERY OK db=47.1ms idle=83.2ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "79a4a377996659d7a2c2f937c13f77375da8c590a594ef056ef39cf9888cb819", 8035, 17947, ~U[2026-09-02 10:56:02Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-09-02 10:56:02], ~N[2026-09-02 10:56:02]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-09-02 10:56:02.938] [INFO ] AutoPushService: Created push log 60638 for MF919 l3config.zip (version: 1.0.1) [2026-09-02 10:56:02.938] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4017/ota/98251226730001/l3config.zip", "requestId" => 8035, "type" => "tms_command", "version" => "1.0.1"} [2026-09-02 10:56:02.938] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-09-02 10:56:02.938] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-09-02 10:56:02.940] [DEBUG] QUERY OK source="config_file_versions" db=0.9ms idle=126.8ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-09-02 10:56:02.940] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-09-02 10:56:02.942] [DEBUG] QUERY OK source="tms_terminals" db=2.3ms idle=2.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-09-02 10:56:02.942] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730001 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-09-02 10:56:02.989] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-09-02 10:56:02.999] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 10:56:02.999] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 10:56:03.014] [DEBUG] QUERY OK source="config_file_versions" db=15.3ms idle=59.3ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-09-02 10:56:03.029] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-09-02 10:56:03.031] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-09-02 10:56:03.034] [DEBUG] QUERY OK source="tms_terminals" db=2.2ms idle=89.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:140 [2026-09-02 10:56:03.034] [INFO ] Terminal updated: 98251226730001 [2026-09-02 10:56:03.094] [DEBUG] QUERY OK source="tms_terminals" db=59.7ms idle=20.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-09-02 10:56:03], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:164 [2026-09-02 10:56:03.105] [DEBUG] QUERY OK source="parameter_templates" db=10.6ms idle=60.6ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) ORDER BY p0.`updated_at` DESC LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_parameter_version/2, at: lib/tms_core/terminal_management/version_compliance_checker.ex:105 [2026-09-02 10:56:03.119] [DEBUG] QUERY OK source="config_file_versions" db=8.5ms idle=16.7ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-09-02 10:56:03.121] [DEBUG] QUERY OK source="config_file_versions" db=1.5ms idle=14.5ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-09-02 10:56:03.121] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-09-02 10:56:03.171] [DEBUG] QUERY OK source="parameter_push_logs" db=48.9ms idle=2.3ms SELECT TRUE FROM `parameter_push_logs` AS p0 WHERE ((((p0.`terminal_id` = ?) AND (p0.`config_type` = ?)) AND (p0.`inserted_at` >= ?)) AND p0.`status` IN ('pending','sent')) LIMIT 1 [33, "application", ~N[2026-09-02 10:26:03]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-09-02 10:56:03.171] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-09-02 10:56:03.171] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-09-02 10:56:03.179] [DEBUG] QUERY OK source="tms_terminals" db=7.8ms idle=49.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-09-02 10:56:03.195] [DEBUG] QUERY OK source="config_file_versions" db=15.6ms idle=8.7ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-09-02 10:56:03.196] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-09-02 10:56:03.210] [DEBUG] QUERY OK source="tms_terminals" db=13.2ms idle=17.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:1184 [2026-09-02 10:56:03.329] [DEBUG] QUERY OK source="tms_terminals" db=114.1ms idle=19.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:56:03], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:174 [2026-09-02 10:56:03.332] [DEBUG] QUERY OK source="app_upgrade_device_statuses" db=1.7ms idle=120.3ms SELECT a0.`id`, a0.`config_id`, a0.`device_id`, a0.`device_sn`, a0.`vendor`, a0.`model`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`update_result`, a0.`status`, a0.`remark`, a0.`finish_time`, a0.`pushed_time`, a0.`retry_count`, a0.`inserted_at`, a0.`updated_at` FROM `app_upgrade_device_statuses` AS a0 WHERE ((a0.`device_sn` = ?) AND a0.`status` IN ('pending','pushed')) ["98251226730001"] ↳ TmsCore.TerminalManagement.AppUpgradeService.maybe_repush_for_device/1, at: lib/tms_core/terminal_management/app_upgrade_service.ex:148 [2026-09-02 10:56:03.417] [DEBUG] QUERY OK db=84.1ms idle=2.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-09-02T10:56:01Z", ~N[2026-09-02 10:56:03], ~N[2026-09-02 10:56:03]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:179 [2026-09-02 10:56:03.417] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 105865, oid: "organization_id", upload_time: "2026-09-02T10:56:01Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:56:03], updated_at: ~N[2026-09-02 10:56:03]} [2026-09-02 10:56:03.418] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-09-02T10:56:01Z", "value" => "online"} [2026-09-02 10:56:03.552] [DEBUG] QUERY OK db=134.2ms idle=86.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-09-02T10:56:01Z", "online", "status", 105865, ~N[2026-09-02 10:56:03], ~N[2026-09-02 10:56:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:56:03.552] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084756, itemkey: "status", value: "online", timestamp: "2026-09-02T10:56:01Z", message: "Terminal status update", status_log_id: 105865, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:56:03], updated_at: ~N[2026-09-02 10:56:03]}} [2026-09-02 10:56:03.553] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-09-02 10:56:03.553] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-09-02T10:56:01Z", "value" => "34"} [2026-09-02 10:56:03.707] [DEBUG] QUERY OK db=154.3ms idle=136.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-09-02T10:56:01Z", "34", "battery", 105865, ~N[2026-09-02 10:56:03], ~N[2026-09-02 10:56:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:56:03.708] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084758, itemkey: "battery", value: "34", timestamp: "2026-09-02T10:56:01Z", message: "Battery level", status_log_id: 105865, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:56:03], updated_at: ~N[2026-09-02 10:56:03]}} [2026-09-02 10:56:03.712] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-09-02T10:56:01Z", "value" => "online"} [2026-09-02 10:56:03.856] [DEBUG] QUERY OK db=125.2ms idle=147.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-09-02T10:56:01Z", "online", "network", 105865, ~N[2026-09-02 10:56:03], ~N[2026-09-02 10:56:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:56:03.859] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084762, itemkey: "network", value: "online", timestamp: "2026-09-02T10:56:01Z", message: "Network connectivity", status_log_id: 105865, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:56:03], updated_at: ~N[2026-09-02 10:56:03]}} [2026-09-02 10:56:03.859] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-09-02 10:56:03.860] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-09-02T10:56:01Z", "value" => "0"} [2026-09-02 10:56:03.961] [DEBUG] QUERY OK db=100.4ms idle=152.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-09-02T10:56:01Z", "0", "cpu", 105865, ~N[2026-09-02 10:56:03], ~N[2026-09-02 10:56:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:56:03.961] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084764, itemkey: "cpu", value: "0", timestamp: "2026-09-02T10:56:01Z", message: "CPU usage percentage", status_log_id: 105865, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:56:03], updated_at: ~N[2026-09-02 10:56:03]}} [2026-09-02 10:56:03.961] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-09-02T10:56:01Z", "value" => "1.0.0"} [2026-09-02 10:56:04.027] [DEBUG] QUERY OK db=55.8ms queue=2.0ms idle=110.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-09-02T10:56:01Z", "1.0.0", "parameter_config", 105865, ~N[2026-09-02 10:56:03], ~N[2026-09-02 10:56:03]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:56:04.027] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084767, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-09-02T10:56:01Z", message: "Current parameters version", status_log_id: 105865, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:56:03], updated_at: ~N[2026-09-02 10:56:03]}} [2026-09-02 10:56:04.027] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-09-02T10:56:01Z", "value" => "1.0.1"} [2026-09-02 10:56:04.121] [DEBUG] QUERY OK db=91.5ms queue=0.2ms idle=68.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-09-02T10:56:01Z", "1.0.1", "emv_config", 105865, ~N[2026-09-02 10:56:04], ~N[2026-09-02 10:56:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:56:04.121] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084768, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-09-02T10:56:01Z", message: "Current EMV config version", status_log_id: 105865, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:56:04], updated_at: ~N[2026-09-02 10:56:04]}} [2026-09-02 10:56:04.121] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-09-02T10:56:01Z", "value" => ""} [2026-09-02 10:56:04.195] [DEBUG] QUERY OK db=73.6ms idle=97.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-09-02T10:56:01Z", "keys_config", 105865, ~N[2026-09-02 10:56:04], ~N[2026-09-02 10:56:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:56:04.196] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084769, itemkey: "keys_config", value: nil, timestamp: "2026-09-02T10:56:01Z", message: "Current keys config version", status_log_id: 105865, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:56:04], updated_at: ~N[2026-09-02 10:56:04]}} [2026-09-02 10:56:04.196] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-09-02T10:56:01Z", "value" => "3.8.7.3"} [2026-09-02 10:56:04.310] [DEBUG] QUERY OK db=111.8ms queue=2.2ms idle=75.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-09-02T10:56:01Z", "3.8.7.3", "application", 105865, ~N[2026-09-02 10:56:04], ~N[2026-09-02 10:56:04]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:56:04.311] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084771, itemkey: "application", value: "3.8.7.3", timestamp: "2026-09-02T10:56:01Z", message: "Current application version", status_log_id: 105865, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:56:04], updated_at: ~N[2026-09-02 10:56:04]}} [2026-09-02 10:56:04.312] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.0","requestId":"3269","status":"success","timestamp":1788346562310,"type":"tms_response"} [2026-09-02 10:56:04.312] [INFO ] Processing file download response for device 98251226730001, request_id: 3269 [2026-09-02 10:56:04.313] [DEBUG] QUERY OK source="file_download_logs" db=0.4ms idle=117.0ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["3269"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:56:04.313] [INFO ] No file download log for request_id 3269; response not attached to a push [2026-09-02 10:56:04.313] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:56:04.313660Z], response: %{"message" => "Already up to date: 1.0.0", "requestId" => "3269", "status" => "success", "timestamp" => 1788346562310, "type" => "tms_response"}, request_id: "3269", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:56:04.313] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.0","requestId":"262691","status":"success","timestamp":1788346562346,"type":"tms_response"} [2026-09-02 10:56:04.313] [INFO ] Processing file download response for device 98251226730001, request_id: 262691 [2026-09-02 10:56:04.317] [DEBUG] QUERY OK source="file_download_logs" db=2.3ms idle=3.3ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["262691"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:56:04.317] [INFO ] No file download log for request_id 262691; response not attached to a push [2026-09-02 10:56:04.318] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:56:04.317976Z], response: %{"message" => "Already up to date: 1.0.0", "requestId" => "262691", "status" => "success", "timestamp" => 1788346562346, "type" => "tms_response"}, request_id: "262691", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:56:04.318] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.1","requestId":"8035","status":"success","timestamp":1788346562436,"type":"tms_response"} [2026-09-02 10:56:04.318] [INFO ] Processing file download response for device 98251226730001, request_id: 8035 [2026-09-02 10:56:04.320] [DEBUG] QUERY OK source="file_download_logs" db=1.7ms idle=5.1ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["8035"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:56:04.320] [INFO ] No file download log for request_id 8035; response not attached to a push [2026-09-02 10:56:04.320] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:56:04.320625Z], response: %{"message" => "Already up to date: 1.0.1", "requestId" => "8035", "status" => "success", "timestamp" => 1788346562436, "type" => "tms_response"}, request_id: "8035", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:56:04.320] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.1","requestId":"262755","status":"success","timestamp":1788346562594,"type":"tms_response"} [2026-09-02 10:56:04.320] [INFO ] Processing file download response for device 98251226730001, request_id: 262755 [2026-09-02 10:56:04.329] [DEBUG] QUERY OK source="file_download_logs" db=8.6ms idle=4.6ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["262755"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:56:04.329] [INFO ] No file download log for request_id 262755; response not attached to a push [2026-09-02 10:56:04.336] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:56:04.336008Z], response: %{"message" => "Already up to date: 1.0.1", "requestId" => "262755", "status" => "success", "timestamp" => 1788346562594, "type" => "tms_response"}, request_id: "262755", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:56:04.336] [WARN ] Unexpected async result [2026-09-02 10:56:04.336] [WARN ] Unexpected async result [2026-09-02 10:58:27.701] [INFO ] Received status update for terminal 98251226730001 [2026-09-02 10:58:27.701] [INFO ] Incoming JSON payload: {"oid":"ffe8c9c0-3dda-48d0-8f68-7b7bfc0e02a4","sn":"98251226730001","uploadTime":"2026-09-02T10:58:26Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-09-02T10:58:26Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-09-02T10:58:26Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-09-02T10:58:26Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-09-02T10:58:26Z"},{"itemkey":"ram_free_mb","value":"854","timestamp":"2026-09-02T10:58:26Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-09-02T10:58:26Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-09-02T10:58:26Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-09-02T10:58:26Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-09-02T10:58:26Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-09-02T10:58:26Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-09-02T10:58:26Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-09-02T10:58:26Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-09-02T10:58:26Z"},{"itemkey":"data_usage_mb","value":"39","timestamp":"2026-09-02T10:58:26Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-09-02T10:58:26Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-09-02 10:58:27.703] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "ffe8c9c0-3dda-48d0-8f68-7b7bfc0e02a4", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-09-02T10:58:26Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-09-02T10:58:26Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-09-02T10:58:26Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-09-02T10:58:26Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-09-02T10:58:26Z", "value" => "854"}, %{"itemkey" => "network_type", "timestamp" => "2026-09-02T10:58:26Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-09-02T10:58:26Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-09-02T10:58:26Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-09-02T10:58:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-09-02T10:58:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-09-02T10:58:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-09-02T10:58:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-09-02T10:58:26Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-09-02T10:58:26Z", "value" => "39"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-09-02T10:58:26Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-09-02T10:58:26Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-09-02T10:58:26Z", "vendor" => "morefun"} [2026-09-02 10:58:27.703] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-09-02 10:58:27.703] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-09-02 10:58:27.703] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-09-02 10:58:27.704] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms idle=516.1ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-09-02 10:58:27.705] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=333.6ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-09-02 10:58:27.705] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-09-02 10:58:27.706] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms idle=0.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:140 [2026-09-02 10:58:27.776] [DEBUG] QUERY OK source="tms_terminals" db=28.7ms queue=41.0ms idle=1.3ms UPDATE `tms_terminals` SET `model` = ?, `vendor` = ?, `updated_at` = ? WHERE `id` = ? ["kiosk_launcher", "morefun", ~N[2026-09-02 10:58:27], 33] ↳ TmsCore.TerminalManagement.update_terminal/2, at: lib/tms_core/terminal_management.ex:41 [2026-09-02 10:58:27.776] [INFO ] Terminal updated: 98251226730001 [2026-09-02 10:58:27.776] [INFO ] Event published: terminal_updated [2026-09-02 10:58:27.777] [DEBUG] Processing terminal event: terminal_updated [2026-09-02 10:58:27.778] [INFO ] Processing terminal_updated event for terminal 33 [2026-09-02 10:58:27.779] [INFO ] Changed fields: [:vendor, :model] [2026-09-02 10:58:27.780] [DEBUG] QUERY OK source="terminal_group_memberships" db=2.0ms idle=72.3ms UPDATE `terminal_group_memberships` AS t0 SET t0.`is_active` = ?, t0.`updated_at` = ? WHERE ((t0.`terminal_id` = ?) AND (t0.`is_active` = TRUE)) [false, ~N[2026-09-02 10:58:27], 33] ↳ TmsCore.TerminalManagement.TerminalEventDispatcher.terminal_updated/2, at: lib/tms_core/terminal_management/terminal_event_dispatcher.ex:52 [2026-09-02 10:58:27.783] [DEBUG] QUERY OK source="tms_terminals" db=2.2ms idle=4.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`id` = ?) [33] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:207 [2026-09-02 10:58:27.784] [DEBUG] QUERY OK source="terminal_group_rules" db=0.5ms idle=0.4ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_rules_to_terminal/1, at: lib/tms_core/terminal_management/terminal_group_service.ex:213 [2026-09-02 10:58:27.784] [INFO ] Applied 0 rules to terminal 98251226730001 [2026-09-02 10:58:27.857] [DEBUG] QUERY OK source="tms_terminals" db=34.9ms queue=41.7ms idle=0.3ms UPDATE `tms_terminals` SET `status` = ?, `model` = ?, `vendor` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "kiosk_launcher", "morefun", nil, nil, nil, nil, ~N[2026-09-02 10:58:27], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:164 [2026-09-02 10:58:27.857] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-09-02 10:58:27.859] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=74.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:1184 [2026-09-02 10:58:27.942] [DEBUG] QUERY OK source="tms_terminals" db=39.1ms queue=41.6ms idle=4.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:58:27], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:174 [2026-09-02 10:58:27.944] [DEBUG] QUERY OK source="app_upgrade_device_statuses" db=1.6ms idle=83.7ms SELECT a0.`id`, a0.`config_id`, a0.`device_id`, a0.`device_sn`, a0.`vendor`, a0.`model`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`update_result`, a0.`status`, a0.`remark`, a0.`finish_time`, a0.`pushed_time`, a0.`retry_count`, a0.`inserted_at`, a0.`updated_at` FROM `app_upgrade_device_statuses` AS a0 WHERE ((a0.`device_sn` = ?) AND a0.`status` IN ('pending','pushed')) ["98251226730001"] ↳ TmsCore.TerminalManagement.AppUpgradeService.maybe_repush_for_device/1, at: lib/tms_core/terminal_management/app_upgrade_service.ex:148 [2026-09-02 10:58:27.999] [DEBUG] QUERY OK db=53.7ms idle=2.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "ffe8c9c0-3dda-48d0-8f68-7b7bfc0e02a4", "2026-09-02T10:58:26Z", ~N[2026-09-02 10:58:27], ~N[2026-09-02 10:58:27]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:179 [2026-09-02 10:58:28.000] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 105867, oid: "ffe8c9c0-3dda-48d0-8f68-7b7bfc0e02a4", upload_time: "2026-09-02T10:58:26Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:58:27], updated_at: ~N[2026-09-02 10:58:27]} [2026-09-02 10:58:28.000] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-09-02T10:58:26Z", "value" => "morefun"} [2026-09-02 10:58:28.079] [DEBUG] QUERY OK db=36.2ms queue=42.6ms idle=55.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:58:26Z", "morefun", "vendor", 105867, ~N[2026-09-02 10:58:28], ~N[2026-09-02 10:58:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:58:28.079] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084776, itemkey: "vendor", value: "morefun", timestamp: "2026-09-02T10:58:26Z", message: nil, status_log_id: 105867, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:58:28], updated_at: ~N[2026-09-02 10:58:28]}} [2026-09-02 10:58:28.079] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-09-02T10:58:26Z", "value" => "kiosk_launcher"} [2026-09-02 10:58:28.155] [DEBUG] QUERY OK db=72.3ms queue=3.2ms idle=81.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:58:26Z", "kiosk_launcher", "model", 105867, ~N[2026-09-02 10:58:28], ~N[2026-09-02 10:58:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:58:28.156] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084779, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-09-02T10:58:26Z", message: nil, status_log_id: 105867, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:58:28], updated_at: ~N[2026-09-02 10:58:28]}} [2026-09-02 10:58:28.157] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-09-02T10:58:26Z", "value" => "1.0"} [2026-09-02 10:58:28.226] [DEBUG] QUERY OK db=68.1ms idle=78.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:58:26Z", "1.0", "app_version", 105867, ~N[2026-09-02 10:58:28], ~N[2026-09-02 10:58:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:58:28.226] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084782, itemkey: "app_version", value: "1.0", timestamp: "2026-09-02T10:58:26Z", message: nil, status_log_id: 105867, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:58:28], updated_at: ~N[2026-09-02 10:58:28]}} [2026-09-02 10:58:28.226] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-09-02T10:58:26Z", "value" => "13"} [2026-09-02 10:58:28.277] [DEBUG] QUERY OK db=50.0ms idle=71.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:58:26Z", "13", "android_version", 105867, ~N[2026-09-02 10:58:28], ~N[2026-09-02 10:58:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:58:28.277] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084785, itemkey: "android_version", value: "13", timestamp: "2026-09-02T10:58:26Z", message: nil, status_log_id: 105867, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:58:28], updated_at: ~N[2026-09-02 10:58:28]}} [2026-09-02 10:58:28.277] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-09-02T10:58:26Z", "value" => "854"} [2026-09-02 10:58:28.326] [DEBUG] QUERY OK db=48.4ms idle=51.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:58:26Z", "854", "ram_free_mb", 105867, ~N[2026-09-02 10:58:28], ~N[2026-09-02 10:58:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:58:28.326] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084788, itemkey: "ram_free_mb", value: "854", timestamp: "2026-09-02T10:58:26Z", message: nil, status_log_id: 105867, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:58:28], updated_at: ~N[2026-09-02 10:58:28]}} [2026-09-02 10:58:28.327] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-09-02T10:58:26Z", "value" => "WIFI"} [2026-09-02 10:58:28.368] [DEBUG] QUERY OK db=41.0ms idle=50.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:58:26Z", "WIFI", "network_type", 105867, ~N[2026-09-02 10:58:28], ~N[2026-09-02 10:58:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:58:28.372] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084791, itemkey: "network_type", value: "WIFI", timestamp: "2026-09-02T10:58:26Z", message: nil, status_log_id: 105867, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:58:28], updated_at: ~N[2026-09-02 10:58:28]}} [2026-09-02 10:58:28.372] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-09-02T10:58:26Z", "value" => "true"} [2026-09-02 10:58:28.415] [DEBUG] QUERY OK db=42.4ms idle=4.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:58:26Z", "true", "kiosk_active", 105867, ~N[2026-09-02 10:58:28], ~N[2026-09-02 10:58:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:58:28.415] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084794, itemkey: "kiosk_active", value: "true", timestamp: "2026-09-02T10:58:26Z", message: nil, status_log_id: 105867, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:58:28], updated_at: ~N[2026-09-02 10:58:28]}} [2026-09-02 10:58:28.415] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-09-02T10:58:26Z", "value" => ""} [2026-09-02 10:58:28.473] [DEBUG] QUERY OK db=56.7ms idle=39.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-09-02T10:58:26Z", "sim_operator", 105867, ~N[2026-09-02 10:58:28], ~N[2026-09-02 10:58:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:58:28.473] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084796, itemkey: "sim_operator", value: nil, timestamp: "2026-09-02T10:58:26Z", message: nil, status_log_id: 105867, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:58:28], updated_at: ~N[2026-09-02 10:58:28]}} [2026-09-02 10:58:28.473] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-09-02T10:58:26Z", "value" => "UNKNOWN"} [2026-09-02 10:58:28.529] [DEBUG] QUERY OK db=56.0ms idle=58.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:58:26Z", "UNKNOWN", "sim_number", 105867, ~N[2026-09-02 10:58:28], ~N[2026-09-02 10:58:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:58:28.534] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084799, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-09-02T10:58:26Z", message: nil, status_log_id: 105867, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:58:28], updated_at: ~N[2026-09-02 10:58:28]}} [2026-09-02 10:58:28.535] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-09-02T10:58:26Z", "value" => "UNKNOWN"} [2026-09-02 10:58:28.645] [DEBUG] QUERY OK db=109.8ms idle=62.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:58:26Z", "UNKNOWN", "sim_iccid", 105867, ~N[2026-09-02 10:58:28], ~N[2026-09-02 10:58:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:58:28.645] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084802, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-09-02T10:58:26Z", message: nil, status_log_id: 105867, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:58:28], updated_at: ~N[2026-09-02 10:58:28]}} [2026-09-02 10:58:28.645] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-09-02T10:58:26Z", "value" => "UNKNOWN"} [2026-09-02 10:58:28.693] [DEBUG] QUERY OK db=47.0ms idle=116.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:58:26Z", "UNKNOWN", "sim_imsi", 105867, ~N[2026-09-02 10:58:28], ~N[2026-09-02 10:58:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:58:28.695] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084805, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-09-02T10:58:26Z", message: nil, status_log_id: 105867, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:58:28], updated_at: ~N[2026-09-02 10:58:28]}} [2026-09-02 10:58:28.696] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-09-02T10:58:26Z", "value" => "UNKNOWN"} [2026-09-02 10:58:28.740] [DEBUG] QUERY OK db=42.8ms idle=52.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:58:26Z", "UNKNOWN", "sim_iccid2", 105867, ~N[2026-09-02 10:58:28], ~N[2026-09-02 10:58:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:58:28.740] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084808, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-09-02T10:58:26Z", message: nil, status_log_id: 105867, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:58:28], updated_at: ~N[2026-09-02 10:58:28]}} [2026-09-02 10:58:28.740] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-09-02T10:58:26Z", "value" => "UNKNOWN"} [2026-09-02 10:58:28.807] [DEBUG] QUERY OK db=66.3ms idle=48.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:58:26Z", "UNKNOWN", "sim_imsi2", 105867, ~N[2026-09-02 10:58:28], ~N[2026-09-02 10:58:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:58:28.807] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084811, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-09-02T10:58:26Z", message: nil, status_log_id: 105867, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:58:28], updated_at: ~N[2026-09-02 10:58:28]}} [2026-09-02 10:58:28.807] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-09-02T10:58:26Z", "value" => "39"} [2026-09-02 10:58:28.851] [DEBUG] QUERY OK db=43.5ms idle=67.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:58:26Z", "39", "data_usage_mb", 105867, ~N[2026-09-02 10:58:28], ~N[2026-09-02 10:58:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:58:28.852] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084813, itemkey: "data_usage_mb", value: "39", timestamp: "2026-09-02T10:58:26Z", message: nil, status_log_id: 105867, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:58:28], updated_at: ~N[2026-09-02 10:58:28]}} [2026-09-02 10:58:28.852] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-09-02T10:58:26Z", "value" => "0"} [2026-09-02 10:58:28.917] [DEBUG] QUERY OK db=57.7ms idle=52.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:58:26Z", "0", "mobile_data_mb", 105867, ~N[2026-09-02 10:58:28], ~N[2026-09-02 10:58:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:58:28.918] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084817, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-09-02T10:58:26Z", message: nil, status_log_id: 105867, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:58:28], updated_at: ~N[2026-09-02 10:58:28]}} [2026-09-02 10:58:28.918] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-09-02T10:58:26Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-09-02 10:58:28.991] [DEBUG] QUERY OK db=69.8ms idle=68.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T10:58:26Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 105867, ~N[2026-09-02 10:58:28], ~N[2026-09-02 10:58:28]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:58:28.993] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084820, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-09-02T10:58:26Z", message: nil, status_log_id: 105867, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:58:28], updated_at: ~N[2026-09-02 10:58:28]}} [2026-09-02 10:58:28.993] [INFO ] Received status update for terminal 98251226730001 [2026-09-02 10:58:28.993] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-09-02T10:58:27Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-09-02T10:58:27Z","value":"34"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-09-02T10:58:27Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-09-02T10:58:27Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-09-02T10:58:27Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-09-02T10:58:27Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-09-02T10:58:27Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-09-02T10:58:27Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-09-02T10:58:27Z","vendor":"MoreFun"} [2026-09-02 10:58:28.993] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-09-02T10:58:27Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-09-02T10:58:27Z", "value" => "34"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-09-02T10:58:27Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-09-02T10:58:27Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-09-02T10:58:27Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-09-02T10:58:27Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-09-02T10:58:27Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-09-02T10:58:27Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-09-02T10:58:27Z", "vendor" => "MoreFun"} [2026-09-02 10:58:28.993] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-09-02 10:58:28.993] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-09-02 10:58:28.993] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-09-02 10:58:28.998] [DEBUG] QUERY OK source="parameter_templates" db=4.1ms idle=76.2ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-09-02 10:58:29.004] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=5.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-09-02 10:58:29.006] [DEBUG] QUERY OK source="parameter_template_values" db=1.1ms idle=0.2ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-09-02 10:58:29.010] [DEBUG] QUERY OK source="parameter_definitions" db=1.7ms queue=1.7ms idle=0.5ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-09-02 10:58:29.052] [DEBUG] QUERY OK source="pos_terminal" db=40.9ms idle=0.7ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-09-02 10:58:29.054] [DEBUG] QUERY OK source="pos_merchant" db=1.2ms idle=0.7ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [350] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-09-02 10:58:29.056] [DEBUG] QUERY OK db=0.9ms queue=1.0ms idle=954.2ms SELECT COALESCE(JSON_UNQUOTE(JSON_EXTRACT(mc.settings, '$.BASE_MERCHANT_NAME')), '') as base_merchant_name, COALESCE(u.name, '') as user_name, COALESCE(um.softpos_uuid, '') as softpos_uuid, COALESCE(mc.settings, '{}') as settings FROM user_metadata um LEFT JOIN merchant_configuration mc ON mc.user_id = um.user_id LEFT JOIN users u ON u.id = um.user_id WHERE um.merchant_refrence_number = ? LIMIT 1 ["667267350000000"] [2026-09-02 10:58:29.056] [INFO ] ParamsZipBuilder: Merchant info for merchantid=667267350000000 - business_name=Shubham003, QR_USE_SSL=, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-09-02 10:58:29.057] [DEBUG] QUERY OK source="pos_terminal_data" db=0.7ms idle=2.8ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["26735914"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-09-02 10:58:29.059] [DEBUG] QUERY OK source="address" db=1.5ms idle=0.1ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [639] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-09-02 10:58:29.060] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="667267350000000" [2026-09-02 10:58:29.062] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-09-02 10:58:29.120] [DEBUG] QUERY OK db=56.1ms decode=0.2ms idle=4.3ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "b4e24909641f5c3a6c52595246c57e88c22d6edd650ae5ac3542cd2d07bd83aa", 3589, 912, ~U[2026-09-02 10:58:29Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-09-02 10:58:29], ~N[2026-09-02 10:58:29]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-09-02 10:58:29.120] [INFO ] AutoPushService: Created push log 60640 for MF919 params.zip [2026-09-02 10:58:29.120] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4017/ota/98251226730001/params.zip", "requestId" => 3589, "type" => "tms_command", "version" => "1.0.0"} [2026-09-02 10:58:29.121] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-09-02 10:58:29.122] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-09-02 10:58:29.125] [DEBUG] QUERY OK source="config_file_versions" db=1.9ms queue=0.4ms idle=32.8ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-09-02 10:58:29.135] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730001 at priv/ota/98251226730001/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-09-02 10:58:29.213] [DEBUG] QUERY OK db=77.0ms queue=0.2ms idle=16.4ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "f542f2b1b3ba3d78baded06876b338d1c82676ea44af118e69a79f09952c1302", 3780, 17947, ~U[2026-09-02 10:58:29Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-09-02 10:58:29], ~N[2026-09-02 10:58:29]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-09-02 10:58:29.213] [INFO ] AutoPushService: Created push log 60641 for MF919 l3config.zip (version: 1.0.1) [2026-09-02 10:58:29.213] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4017/ota/98251226730001/l3config.zip", "requestId" => 3780, "type" => "tms_command", "version" => "1.0.1"} [2026-09-02 10:58:29.213] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-09-02 10:58:29.214] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-09-02 10:58:29.219] [DEBUG] QUERY OK source="config_file_versions" db=5.5ms idle=88.7ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-09-02 10:58:29.220] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-09-02 10:58:29.223] [DEBUG] QUERY OK source="tms_terminals" db=2.1ms queue=1.2ms idle=7.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-09-02 10:58:29.224] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730001 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-09-02 10:58:29.225] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-09-02 10:58:29.225] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 10:58:29.225] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 10:58:29.230] [DEBUG] QUERY OK source="config_file_versions" db=1.8ms idle=8.0ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-09-02 10:58:29.232] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-09-02 10:58:29.232] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-09-02 10:58:29.237] [DEBUG] QUERY OK source="tms_terminals" db=3.2ms idle=9.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:140 [2026-09-02 10:58:29.237] [INFO ] Terminal updated: 98251226730001 [2026-09-02 10:58:29.306] [DEBUG] QUERY OK source="tms_terminals" db=27.8ms queue=41.0ms idle=8.1ms UPDATE `tms_terminals` SET `status` = ?, `app_version` = ?, `data_version` = ?, `emv_config_version` = ?, `parameter_config_version` = ?, `updated_at` = ? WHERE `id` = ? ["connected", "3.8.7.3", "1.0.0", "1.0.1", "1.0.0", ~N[2026-09-02 10:58:29], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:164 [2026-09-02 10:58:29.308] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=71.6ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) ORDER BY p0.`updated_at` DESC LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_parameter_version/2, at: lib/tms_core/terminal_management/version_compliance_checker.ex:105 [2026-09-02 10:58:29.310] [DEBUG] QUERY OK source="config_file_versions" db=0.9ms idle=2.8ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-09-02 10:58:29.311] [DEBUG] QUERY OK source="config_file_versions" db=1.0ms idle=2.1ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-09-02 10:58:29.313] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-09-02 10:58:29.368] [DEBUG] QUERY OK source="parameter_push_logs" db=52.0ms queue=0.9ms idle=4.8ms SELECT TRUE FROM `parameter_push_logs` AS p0 WHERE ((((p0.`terminal_id` = ?) AND (p0.`config_type` = ?)) AND (p0.`inserted_at` >= ?)) AND p0.`status` IN ('pending','sent')) LIMIT 1 [33, "application", ~N[2026-09-02 10:28:29]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-09-02 10:58:29.368] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-09-02 10:58:29.368] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-09-02 10:58:29.376] [DEBUG] QUERY OK source="tms_terminals" db=3.9ms queue=0.1ms idle=60.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-09-02 10:58:29.384] [DEBUG] QUERY OK source="config_file_versions" db=4.8ms idle=11.2ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-09-02 10:58:29.388] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-09-02 10:58:29.389] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=5.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:1184 [2026-09-02 10:58:29.483] [DEBUG] QUERY OK source="tms_terminals" db=88.3ms queue=0.1ms idle=5.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 10:58:29], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:174 [2026-09-02 10:58:29.484] [DEBUG] QUERY OK source="app_upgrade_device_statuses" db=0.7ms idle=94.2ms SELECT a0.`id`, a0.`config_id`, a0.`device_id`, a0.`device_sn`, a0.`vendor`, a0.`model`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`update_result`, a0.`status`, a0.`remark`, a0.`finish_time`, a0.`pushed_time`, a0.`retry_count`, a0.`inserted_at`, a0.`updated_at` FROM `app_upgrade_device_statuses` AS a0 WHERE ((a0.`device_sn` = ?) AND a0.`status` IN ('pending','pushed')) ["98251226730001"] ↳ TmsCore.TerminalManagement.AppUpgradeService.maybe_repush_for_device/1, at: lib/tms_core/terminal_management/app_upgrade_service.ex:148 [2026-09-02 10:58:29.564] [DEBUG] QUERY OK db=79.1ms idle=1.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-09-02T10:58:27Z", ~N[2026-09-02 10:58:29], ~N[2026-09-02 10:58:29]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:179 [2026-09-02 10:58:29.564] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 105870, oid: "organization_id", upload_time: "2026-09-02T10:58:27Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:58:29], updated_at: ~N[2026-09-02 10:58:29]} [2026-09-02 10:58:29.564] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-09-02T10:58:27Z", "value" => "online"} [2026-09-02 10:58:29.625] [DEBUG] QUERY OK db=60.0ms idle=80.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-09-02T10:58:27Z", "online", "status", 105870, ~N[2026-09-02 10:58:29], ~N[2026-09-02 10:58:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:58:29.626] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084824, itemkey: "status", value: "online", timestamp: "2026-09-02T10:58:27Z", message: "Terminal status update", status_log_id: 105870, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:58:29], updated_at: ~N[2026-09-02 10:58:29]}} [2026-09-02 10:58:29.626] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-09-02 10:58:29.627] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-09-02T10:58:27Z", "value" => "34"} [2026-09-02 10:58:29.685] [DEBUG] QUERY OK db=55.0ms queue=3.2ms idle=63.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-09-02T10:58:27Z", "34", "battery", 105870, ~N[2026-09-02 10:58:29], ~N[2026-09-02 10:58:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:58:29.686] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084826, itemkey: "battery", value: "34", timestamp: "2026-09-02T10:58:27Z", message: "Battery level", status_log_id: 105870, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:58:29], updated_at: ~N[2026-09-02 10:58:29]}} [2026-09-02 10:58:29.686] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-09-02T10:58:27Z", "value" => "online"} [2026-09-02 10:58:29.745] [DEBUG] QUERY OK db=59.3ms idle=61.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-09-02T10:58:27Z", "online", "network", 105870, ~N[2026-09-02 10:58:29], ~N[2026-09-02 10:58:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:58:29.746] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084827, itemkey: "network", value: "online", timestamp: "2026-09-02T10:58:27Z", message: "Network connectivity", status_log_id: 105870, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:58:29], updated_at: ~N[2026-09-02 10:58:29]}} [2026-09-02 10:58:29.746] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-09-02 10:58:29.747] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-09-02T10:58:27Z", "value" => "0"} [2026-09-02 10:58:29.859] [DEBUG] QUERY OK db=111.6ms idle=62.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-09-02T10:58:27Z", "0", "cpu", 105870, ~N[2026-09-02 10:58:29], ~N[2026-09-02 10:58:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:58:29.859] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084829, itemkey: "cpu", value: "0", timestamp: "2026-09-02T10:58:27Z", message: "CPU usage percentage", status_log_id: 105870, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:58:29], updated_at: ~N[2026-09-02 10:58:29]}} [2026-09-02 10:58:29.859] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-09-02T10:58:27Z", "value" => "1.0.0"} [2026-09-02 10:58:29.984] [DEBUG] QUERY OK db=124.5ms idle=114.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-09-02T10:58:27Z", "1.0.0", "parameter_config", 105870, ~N[2026-09-02 10:58:29], ~N[2026-09-02 10:58:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:58:29.985] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084831, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-09-02T10:58:27Z", message: "Current parameters version", status_log_id: 105870, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:58:29], updated_at: ~N[2026-09-02 10:58:29]}} [2026-09-02 10:58:29.985] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-09-02T10:58:27Z", "value" => "1.0.1"} [2026-09-02 10:58:30.081] [DEBUG] QUERY OK db=92.8ms idle=128.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-09-02T10:58:27Z", "1.0.1", "emv_config", 105870, ~N[2026-09-02 10:58:29], ~N[2026-09-02 10:58:29]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:58:30.081] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084833, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-09-02T10:58:27Z", message: "Current EMV config version", status_log_id: 105870, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:58:29], updated_at: ~N[2026-09-02 10:58:29]}} [2026-09-02 10:58:30.081] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-09-02T10:58:27Z", "value" => ""} [2026-09-02 10:58:30.158] [DEBUG] QUERY OK db=75.0ms queue=1.7ms idle=96.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-09-02T10:58:27Z", "keys_config", 105870, ~N[2026-09-02 10:58:30], ~N[2026-09-02 10:58:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:58:30.158] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084835, itemkey: "keys_config", value: nil, timestamp: "2026-09-02T10:58:27Z", message: "Current keys config version", status_log_id: 105870, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:58:30], updated_at: ~N[2026-09-02 10:58:30]}} [2026-09-02 10:58:30.159] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-09-02T10:58:27Z", "value" => "3.8.7.3"} [2026-09-02 10:58:30.249] [DEBUG] QUERY OK db=84.7ms queue=0.9ms idle=83.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-09-02T10:58:27Z", "3.8.7.3", "application", 105870, ~N[2026-09-02 10:58:30], ~N[2026-09-02 10:58:30]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 10:58:30.251] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084838, itemkey: "application", value: "3.8.7.3", timestamp: "2026-09-02T10:58:27Z", message: "Current application version", status_log_id: 105870, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 10:58:30], updated_at: ~N[2026-09-02 10:58:30]}} [2026-09-02 10:58:30.251] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.0","requestId":"3589","status":"success","timestamp":1788346708835,"type":"tms_response"} [2026-09-02 10:58:30.251] [INFO ] Processing file download response for device 98251226730001, request_id: 3589 [2026-09-02 10:58:30.259] [DEBUG] QUERY OK source="file_download_logs" db=5.8ms queue=1.2ms idle=93.6ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["3589"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:58:30.259] [INFO ] No file download log for request_id 3589; response not attached to a push [2026-09-02 10:58:30.260] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:58:30.260880Z], response: %{"message" => "Already up to date: 1.0.0", "requestId" => "3589", "status" => "success", "timestamp" => 1788346708835, "type" => "tms_response"}, request_id: "3589", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:58:30.261] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-09-02T10:58:28Z"} [2026-09-02 10:58:30.261] [INFO ] Received device ACK from 98251226730001: oid= status=error [2026-09-02 10:58:30.261] [WARN ] Unhandled device ACK oid= from 98251226730001: %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-09-02T10:58:28Z"} [2026-09-02 10:58:30.261] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.1","requestId":"3780","status":"success","timestamp":1788346708861,"type":"tms_response"} [2026-09-02 10:58:30.261] [INFO ] Processing file download response for device 98251226730001, request_id: 3780 [2026-09-02 10:58:30.262] [DEBUG] QUERY OK source="file_download_logs" db=0.6ms idle=12.0ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["3780"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:58:30.262] [INFO ] No file download log for request_id 3780; response not attached to a push [2026-09-02 10:58:30.263] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:58:30.263212Z], response: %{"message" => "Already up to date: 1.0.1", "requestId" => "3780", "status" => "success", "timestamp" => 1788346708861, "type" => "tms_response"}, request_id: "3780", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:58:30.263] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.0","requestId":"103781","status":"success","timestamp":1788346708911,"type":"tms_response"} [2026-09-02 10:58:30.263] [INFO ] Processing file download response for device 98251226730001, request_id: 103781 [2026-09-02 10:58:30.268] [DEBUG] QUERY OK source="file_download_logs" db=1.5ms idle=7.7ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["103781"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:58:30.268] [INFO ] No file download log for request_id 103781; response not attached to a push [2026-09-02 10:58:30.268] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:58:30.268894Z], response: %{"message" => "Already up to date: 1.0.0", "requestId" => "103781", "status" => "success", "timestamp" => 1788346708911, "type" => "tms_response"}, request_id: "103781", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:58:30.269] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-09-02T10:58:28Z"} [2026-09-02 10:58:30.269] [INFO ] Received device ACK from 98251226730001: oid= status=error [2026-09-02 10:58:30.269] [WARN ] Unhandled device ACK oid= from 98251226730001: %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-09-02T10:58:28Z"} [2026-09-02 10:58:30.269] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-09-02T10:58:28Z"} [2026-09-02 10:58:30.271] [INFO ] Received device ACK from 98251226730001: oid= status=error [2026-09-02 10:58:30.271] [WARN ] Unhandled device ACK oid= from 98251226730001: %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-09-02T10:58:28Z"} [2026-09-02 10:58:30.271] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-09-02T10:58:29Z"} [2026-09-02 10:58:30.273] [INFO ] Received device ACK from 98251226730001: oid= status=error [2026-09-02 10:58:30.273] [WARN ] Unhandled device ACK oid= from 98251226730001: %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-09-02T10:58:29Z"} [2026-09-02 10:58:30.273] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.1","requestId":"302658","status":"success","timestamp":1788346709041,"type":"tms_response"} [2026-09-02 10:58:30.274] [INFO ] Processing file download response for device 98251226730001, request_id: 302658 [2026-09-02 10:58:30.277] [DEBUG] QUERY OK source="file_download_logs" db=2.0ms idle=12.6ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["302658"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 10:58:30.277] [INFO ] No file download log for request_id 302658; response not attached to a push [2026-09-02 10:58:30.277] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 10:58:30.277578Z], response: %{"message" => "Already up to date: 1.0.1", "requestId" => "302658", "status" => "success", "timestamp" => 1788346709041, "type" => "tms_response"}, request_id: "302658", error_message: nil, device_serial: "98251226730001"} [2026-09-02 10:58:30.277] [WARN ] Unexpected async result [2026-09-02 10:58:30.277] [WARN ] Unexpected async result [2026-09-02 10:59:12.453] [INFO ] Performing scheduled filter cache refresh... [2026-09-02 10:59:12.456] [DEBUG] QUERY OK source="tms_terminals" db=2.1ms idle=844.3ms SELECT t0.`area`, t0.`vendor`, t0.`model` FROM `tms_terminals` AS t0 WHERE ((NOT (t0.`area` IS NULL) OR NOT (t0.`vendor` IS NULL)) OR NOT (t0.`model` IS NULL)) [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_terminal_filter_data/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:153 [2026-09-02 10:59:12.457] [DEBUG] QUERY OK source="filter_usage" db=1.4ms idle=843.6ms SELECT f0.`filter_type`, f0.`filter_value`, coalesce(sum(f0.`usage_count`), 0) FROM `filter_usage` AS f0 GROUP BY f0.`filter_type`, f0.`filter_value` [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_usage_statistics/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:190 [2026-09-02 10:59:12.457] [INFO ] Filter cache rebuilt: 0 areas, 5 vendors, 8 models [2026-09-02 10:59:13.067] [INFO ] Running offline device check... [2026-09-02 10:59:13.068] [INFO ] Starting offline device check... [2026-09-02 10:59:13.069] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=610.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1234 [2026-09-02 10:59:13.072] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=453.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [1] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:59:13.073] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=3.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:59:13.074] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.1ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:59:13.077] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.3ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:59:13.079] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms queue=0.2ms idle=3.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:59:13.080] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:59:13.081] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:59:13.082] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:59:13.083] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:59:13.084] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.2ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:59:13.085] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:59:13.086] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:59:13.087] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=0.4ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:59:13.088] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:59:13.089] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:59:13.090] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:59:13.091] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.8ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:59:13.092] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:59:13.094] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:59:13.095] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:59:13.098] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.5ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:59:13.100] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=3.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:59:13.101] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:59:13.102] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:59:13.103] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:59:13.104] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:59:13.105] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:59:13.106] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:59:13.108] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms queue=0.1ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:59:13.110] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms queue=0.9ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:59:13.112] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=3.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:59:13.117] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.9ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:59:13.118] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=5.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:59:13.119] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:59:13.120] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:59:13.121] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:59:13.121] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:59:13.122] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:59:13.123] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:59:13.124] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:59:13.125] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:59:13.125] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:59:13.126] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:59:13.127] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:59:13.128] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:59:13.129] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:59:13.129] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:59:13.130] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:59:13.131] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:59:13.133] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:59:13.134] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:59:13.136] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:59:13.138] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=1.3ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [82] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:59:13.140] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=2.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [83] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 10:59:13.140] [INFO ] Offline device check completed. Found 50 offline devices, updated 0 statuses. [2026-09-02 10:59:13.140] [INFO ] Offline device check completed successfully [2026-09-02 11:00:43.986] [INFO ] Received status update for terminal 61250415798001 [2026-09-02 11:00:43.986] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61250415798001","vendor":"MoreFun","model":"SR600","uploadTime":"855931-03-22T06:45:46Z","org.device":[{"itemkey":"status","value":"online","timestamp":"855931-03-22T06:45:46Z","message":"Device Connected"}]} [2026-09-02 11:00:43.987] [INFO ] Decoded JSON: %{"model" => "SR600", "oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "status", "message" => "Device Connected", "timestamp" => "855931-03-22T06:45:46Z", "value" => "online"}], "sn" => "61250415798001", "uploadTime" => "855931-03-22T06:45:46Z", "vendor" => "MoreFun"} [2026-09-02 11:00:43.987] [INFO ] Extracted versions for 61250415798001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-09-02 11:00:43.987] [INFO ] Detected missing versions for 61250415798001, triggering auto-push [2026-09-02 11:00:43.987] [INFO ] AutoPushService: Triggering auto-push for 61250415798001 (MoreFun SR600) - missing version [2026-09-02 11:00:43.988] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms idle=1776.6ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["MoreFun", "SR600"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-09-02 11:00:43.989] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=824.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-09-02 11:00:43.995] [DEBUG] QUERY OK source="parameter_template_values" db=0.6ms queue=0.1ms idle=5.4ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [7] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-09-02 11:00:44.053] [DEBUG] QUERY OK db=53.3ms queue=0.1ms idle=10.2ms INSERT INTO `parameter_push_logs` (`status`,`request_id`,`log_time`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", 3908, ~U[2026-09-02 11:00:43Z], 1, "parameter", "SR600", "MoreFun", %{}, "full", 7, "missing_version", "1.0.0", ~N[2026-09-02 11:00:43], ~N[2026-09-02 11:00:43]] ↳ TmsCore.TerminalManagement.AutoPushService.push_generic_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:235 [2026-09-02 11:00:44.054] [INFO ] AutoPushService: Created push log 60645 for parameters (template: 7) [2026-09-02 11:00:44.056] [INFO ] SR600 MQTT Command: %{"command" => "file_download", "merchant_config" => "true", "request_id" => 3908, "retry_count" => "3", "version" => "1.0.0"} [2026-09-02 11:00:44.058] [INFO ] AutoPushService: Sending parameter push to 61250415798001 on topic: /ota/pFppbioOCKlo5c8E/61250415798001/update [2026-09-02 11:00:44.059] [INFO ] AutoPushService: Parameter push sent successfully to 61250415798001 [2026-09-02 11:00:44.101] [DEBUG] QUERY OK db=41.4ms queue=0.9ms idle=65.1ms INSERT INTO `parameter_push_logs` (`status`,`request_id`,`log_time`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?) ["pending", 11938, ~U[2026-09-02 11:00:44Z], 1, "emv_config", "SR600", "MoreFun", "full", "missing_version", ~N[2026-09-02 11:00:44], ~N[2026-09-02 11:00:44]] ↳ TmsCore.TerminalManagement.AutoPushService.push_regular_config/5, at: lib/tms_core/terminal_management/auto_push_service.ex:427 [2026-09-02 11:00:44.103] [INFO ] AutoPushService: Created push log for emv_config [2026-09-02 11:00:44.104] [INFO ] SR600 MQTT Command: %{"command" => "file_download", "merchant_config" => "true", "request_id" => 11938, "retry_count" => "3"} [2026-09-02 11:00:44.105] [INFO ] AutoPushService: Sending emv_config push to 61250415798001 on topic: /ota/pFppbioOCKlo5c8E/61250415798001/update [2026-09-02 11:00:44.106] [INFO ] AutoPushService: emv_config push sent successfully to 61250415798001 [2026-09-02 11:00:44.111] [DEBUG] QUERY OK source="config_file_versions" db=2.7ms queue=1.8ms idle=52.7ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "SR600"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-09-02 11:00:44.111] [INFO ] KeysConfigService: Generating keys.json for 61250415798001 (SR600) [2026-09-02 11:00:44.115] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=12.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-09-02 11:00:44.115] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 61250415798001 with params: %{"kekKcv" => "112233", "model" => "SR600", "serialNumber" => "61250415798001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-09-02 11:00:44.121] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-09-02 11:00:44.122] [ERROR] KeysConfigService: Failed to generate keys for 61250415798001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 11:00:44.123] [ERROR] AutoPushService: Failed to generate keys.json for 61250415798001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 11:00:44.195] [DEBUG] QUERY OK db=71.7ms idle=12.8ms INSERT INTO `parameter_push_logs` (`status`,`request_id`,`log_time`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?) ["pending", 8323, ~U[2026-09-02 11:00:44Z], 1, "application", "SR600", "MoreFun", "full", "missing_version", ~N[2026-09-02 11:00:44], ~N[2026-09-02 11:00:44]] ↳ TmsCore.TerminalManagement.AutoPushService.push_regular_config/5, at: lib/tms_core/terminal_management/auto_push_service.ex:427 [2026-09-02 11:00:44.195] [INFO ] AutoPushService: Created push log for application [2026-09-02 11:00:44.195] [INFO ] SR600 MQTT Command: %{"command" => "file_download", "merchant_config" => "true", "request_id" => 8323, "retry_count" => "3"} [2026-09-02 11:00:44.196] [INFO ] AutoPushService: Sending application push to 61250415798001 on topic: /ota/pFppbioOCKlo5c8E/61250415798001/update [2026-09-02 11:00:44.196] [INFO ] AutoPushService: application push sent successfully to 61250415798001 [2026-09-02 11:00:44.196] [INFO ] AutoPushService: Auto-push completed for 61250415798001 [2026-09-02 11:00:44.200] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=3.2ms idle=29.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:140 [2026-09-02 11:00:44.200] [INFO ] Terminal updated: 61250415798001 [2026-09-02 11:00:44.255] [DEBUG] QUERY OK source="tms_terminals" db=54.5ms idle=5.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-09-02 11:00:44], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:164 [2026-09-02 11:00:44.256] [DEBUG] VersionComplianceChecker: 61250415798001 — all versions compliant [2026-09-02 11:00:44.261] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms idle=59.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:1184 [2026-09-02 11:00:44.325] [DEBUG] QUERY OK source="tms_terminals" db=63.4ms idle=5.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 11:00:44], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:174 [2026-09-02 11:00:44.328] [DEBUG] QUERY OK source="app_upgrade_device_statuses" db=0.7ms queue=2.1ms idle=64.3ms SELECT a0.`id`, a0.`config_id`, a0.`device_id`, a0.`device_sn`, a0.`vendor`, a0.`model`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`update_result`, a0.`status`, a0.`remark`, a0.`finish_time`, a0.`pushed_time`, a0.`retry_count`, a0.`inserted_at`, a0.`updated_at` FROM `app_upgrade_device_statuses` AS a0 WHERE ((a0.`device_sn` = ?) AND a0.`status` IN ('pending','pushed')) ["61250415798001"] ↳ TmsCore.TerminalManagement.AppUpgradeService.maybe_repush_for_device/1, at: lib/tms_core/terminal_management/app_upgrade_service.ex:148 [2026-09-02 11:00:44.411] [DEBUG] QUERY OK db=82.4ms idle=3.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [1, "org-id-placeholder", "855931-03-22T06:45:46Z", ~N[2026-09-02 11:00:44], ~N[2026-09-02 11:00:44]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:179 [2026-09-02 11:00:44.411] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 105875, oid: "org-id-placeholder", upload_time: "855931-03-22T06:45:46Z", terminal_id: 1, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 11:00:44], updated_at: ~N[2026-09-02 11:00:44]} [2026-09-02 11:00:44.411] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Device Connected", "timestamp" => "855931-03-22T06:45:46Z", "value" => "online"} [2026-09-02 11:00:44.454] [DEBUG] QUERY OK db=42.3ms idle=83.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Device Connected", "855931-03-22T06:45:46Z", "online", "status", 105875, ~N[2026-09-02 11:00:44], ~N[2026-09-02 11:00:44]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 11:00:44.454] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084850, itemkey: "status", value: "online", timestamp: "855931-03-22T06:45:46Z", message: "Device Connected", status_log_id: 105875, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 11:00:44], updated_at: ~N[2026-09-02 11:00:44]}} [2026-09-02 11:00:44.454] [INFO ] Setting terminal 61250415798001 status to 'online' from status itemkey [2026-09-02 11:00:44.455] [WARN ] Unexpected async result [2026-09-02 11:00:44.455] [WARN ] Unexpected async result [2026-09-02 11:00:44.455] [WARN ] Unexpected async result [2026-09-02 11:01:09.983] [INFO ] Received status update for terminal 98251226730001 [2026-09-02 11:01:09.983] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-09-02T11:01:09Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-09-02T11:01:09Z","value":"34"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-09-02T11:01:09Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-09-02T11:01:09Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-09-02T11:01:09Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-09-02T11:01:09Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-09-02T11:01:09Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-09-02T11:01:09Z","value":"3.8.7.3"}],"model":"MF919","oid":"organization_id","sn":"98251226730001","uploadTime":"2026-09-02T11:01:09Z","vendor":"MoreFun"} [2026-09-02 11:01:09.983] [INFO ] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-09-02T11:01:09Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-09-02T11:01:09Z", "value" => "34"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-09-02T11:01:09Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-09-02T11:01:09Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-09-02T11:01:09Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-09-02T11:01:09Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-09-02T11:01:09Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-09-02T11:01:09Z", "value" => "3.8.7.3"}], "sn" => "98251226730001", "uploadTime" => "2026-09-02T11:01:09Z", "vendor" => "MoreFun"} [2026-09-02 11:01:09.983] [INFO ] Extracted versions for 98251226730001: %{application: "3.8.7.3", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-09-02 11:01:09.983] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-09-02 11:01:09.983] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (MoreFun MF919) - missing version [2026-09-02 11:01:09.990] [DEBUG] QUERY OK source="parameter_templates" db=6.7ms idle=1694.2ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-09-02 11:01:09.995] [DEBUG] QUERY OK source="tms_terminals" db=3.1ms queue=1.6ms idle=696.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-09-02 11:01:09.998] [DEBUG] QUERY OK source="parameter_template_values" db=2.0ms idle=5.2ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [10] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-09-02 11:01:10.002] [DEBUG] QUERY OK source="parameter_definitions" db=1.1ms queue=1.6ms idle=4.2ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-09-02 11:01:10.004] [DEBUG] QUERY OK source="pos_terminal" db=1.3ms idle=5.1ms SELECT p0.`id`, p0.`terminalid`, p0.`serial_number`, p0.`pos_merchant_id` FROM `pos_terminal` AS p0 WHERE (p0.`serial_number` = ?) LIMIT 1 ["98251226730001"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_terminal/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:165 [2026-09-02 11:01:10.044] [DEBUG] QUERY OK source="pos_merchant" db=38.7ms idle=2.5ms SELECT p0.`id`, p0.`merchantid`, p0.`merchant_name`, p0.`address_id` FROM `pos_merchant` AS p0 WHERE (p0.`id` = ?) [350] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_pos_merchant/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:176 [2026-09-02 11:01:10.049] [DEBUG] QUERY OK db=1.4ms queue=3.0ms idle=1918.3ms SELECT COALESCE(JSON_UNQUOTE(JSON_EXTRACT(mc.settings, '$.BASE_MERCHANT_NAME')), '') as base_merchant_name, COALESCE(u.name, '') as user_name, COALESCE(um.softpos_uuid, '') as softpos_uuid, COALESCE(mc.settings, '{}') as settings FROM user_metadata um LEFT JOIN merchant_configuration mc ON mc.user_id = um.user_id LEFT JOIN users u ON u.id = um.user_id WHERE um.merchant_refrence_number = ? LIMIT 1 ["667267350000000"] [2026-09-02 11:01:10.049] [INFO ] ParamsZipBuilder: Merchant info for merchantid=667267350000000 - business_name=Shubham003, QR_USE_SSL=, MQTT_HEARTBEAT_INTERVAL=60, softpos_uuid= [2026-09-02 11:01:10.052] [DEBUG] QUERY OK source="pos_terminal_data" db=0.5ms queue=2.0ms idle=44.8ms SELECT p0.`id`, p0.`pos_terminalId`, p0.`stan`, p0.`batch_number`, p0.`transaction_date`, p0.`transaction_time`, p0.`transaction_id` FROM `pos_terminal_data` AS p0 WHERE (p0.`pos_terminalId` = ?) ORDER BY p0.`id` DESC LIMIT 1 ["26735914"] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_terminal_data/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:262 [2026-09-02 11:01:10.053] [DEBUG] QUERY OK source="address" db=1.4ms idle=8.1ms SELECT a0.`id`, a0.`line1`, a0.`line2`, a0.`line3`, a0.`line4`, a0.`city`, a0.`state`, a0.`country`, a0.`postalcode` FROM `address` AS a0 WHERE (a0.`id` = ?) [639] ↳ TmsCore.TerminalManagement.ParamsZipBuilder.get_merchant_address/1, at: lib/tms_core/terminal_management/params_zip_builder.ex:80 [2026-09-02 11:01:10.053] [INFO ] ParamsZipBuilder: fetch_merchant_data for serial=98251226730001, pos_merchant.merchantid="667267350000000" [2026-09-02 11:01:10.055] [INFO ] ParamsZipBuilder: params.zip stored for 98251226730001 at priv/ota/98251226730001/params.zip [2026-09-02 11:01:10.102] [DEBUG] QUERY OK db=45.0ms idle=4.8ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`parameters_sent`,`push_type`,`template_id`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "e8c49af966207ab7b1c084948d8208d022ae56c7fb9c7cc2b62620f9da949605", 4068, 912, ~U[2026-09-02 11:01:10Z], "priv/ota/98251226730001/params.zip", 33, "parameter", "MF919", "MoreFun", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", ...}, "full", 10, "missing_version", "1.0.0", ~N[2026-09-02 11:01:10], ~N[2026-09-02 11:01:10]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:202 [2026-09-02 11:01:10.102] [INFO ] AutoPushService: Created push log 60653 for MF919 params.zip [2026-09-02 11:01:10.102] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "downloadUrl" => "http://demo.ctrmv.com:4017/ota/98251226730001/params.zip", "requestId" => 4068, "type" => "tms_command", "version" => "1.0.0"} [2026-09-02 11:01:10.102] [INFO ] AutoPushService: Sending MF919 UPDATE_PARAMS to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-09-02 11:01:10.103] [INFO ] AutoPushService: MF919 UPDATE_PARAMS sent successfully to 98251226730001 [2026-09-02 11:01:10.105] [DEBUG] QUERY OK source="config_file_versions" db=1.5ms queue=0.4ms idle=49.6ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:278 [2026-09-02 11:01:10.113] [INFO ] L3ConfigZipBuilder: l3config.zip stored for 98251226730001 at priv/ota/98251226730001/l3config.zip (source: priv/static/mf919/1.0.1/YSDK_L3_configuration.xml) [2026-09-02 11:01:10.174] [DEBUG] QUERY OK db=58.2ms idle=14.1ms INSERT INTO `parameter_push_logs` (`status`,`checksum`,`request_id`,`file_size`,`log_time`,`file_path`,`terminal_id`,`config_type`,`device_model`,`device_vendor`,`push_type`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "0c4be07c7d5a97864c29098dc7b08c859135c7e44a0614a8fe66b5acc185b2e8", 4132, 17947, ~U[2026-09-02 11:01:10Z], "priv/ota/98251226730001/l3config.zip", 33, "emv_config", "MF919", "MoreFun", "full", "missing_version", "1.0.1", ~N[2026-09-02 11:01:10], ~N[2026-09-02 11:01:10]] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_emv_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:304 [2026-09-02 11:01:10.174] [INFO ] AutoPushService: Created push log 60655 for MF919 l3config.zip (version: 1.0.1) [2026-09-02 11:01:10.174] [INFO ] MF919 MQTT Command: %{"command" => "UPDATE_L3_CONFIG", "downloadUrl" => "http://demo.ctrmv.com:4017/ota/98251226730001/l3config.zip", "requestId" => 4132, "type" => "tms_command", "version" => "1.0.1"} [2026-09-02 11:01:10.174] [INFO ] AutoPushService: Sending MF919 UPDATE_L3_CONFIG to 98251226730001 on topic: /ota/pFppbioOCKlo5c8E/98251226730001/update [2026-09-02 11:01:10.174] [INFO ] AutoPushService: MF919 UPDATE_L3_CONFIG sent successfully to 98251226730001 [2026-09-02 11:01:10.176] [DEBUG] QUERY OK source="config_file_versions" db=1.5ms idle=69.8ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-09-02 11:01:10.176] [INFO ] KeysConfigService: Generating keys.json for 98251226730001 (MF919) [2026-09-02 11:01:10.179] [DEBUG] QUERY OK source="tms_terminals" db=2.6ms idle=2.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-09-02 11:01:10.179] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 98251226730001 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "98251226730001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-09-02 11:01:10.182] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-09-02 11:01:10.182] [ERROR] KeysConfigService: Failed to generate keys for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 11:01:10.184] [ERROR] AutoPushService: Failed to generate keys.json for 98251226730001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 11:01:10.186] [DEBUG] QUERY OK source="config_file_versions" db=1.3ms idle=7.9ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-09-02 11:01:10.187] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-09-02 11:01:10.187] [INFO ] AutoPushService: Auto-push completed for 98251226730001 [2026-09-02 11:01:10.188] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=8.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:140 [2026-09-02 11:01:10.189] [INFO ] Terminal updated: 98251226730001 [2026-09-02 11:01:10.200] [DEBUG] QUERY OK source="parameter_templates" db=4.9ms idle=4.7ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) ORDER BY p0.`updated_at` DESC LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_parameter_version/2, at: lib/tms_core/terminal_management/version_compliance_checker.ex:105 [2026-09-02 11:01:10.204] [DEBUG] QUERY OK source="config_file_versions" db=3.3ms idle=11.9ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-09-02 11:01:10.208] [DEBUG] QUERY OK source="config_file_versions" db=2.1ms queue=1.8ms idle=8.8ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-09-02 11:01:10.209] [INFO ] VersionComplianceChecker: 98251226730001 — outdated configs: [{:application, "3.8.7.3", "3.8.5"}] [2026-09-02 11:01:10.245] [DEBUG] QUERY OK source="parameter_push_logs" db=35.5ms idle=5.7ms SELECT TRUE FROM `parameter_push_logs` AS p0 WHERE ((((p0.`terminal_id` = ?) AND (p0.`config_type` = ?)) AND (p0.`inserted_at` >= ?)) AND p0.`status` IN ('pending','sent')) LIMIT 1 [33, "application", ~N[2026-09-02 10:31:10]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-09-02 11:01:10.245] [INFO ] VersionComplianceChecker: Triggering re-push of application for 98251226730001 (reported: 3.8.7.3, target: 3.8.5) [2026-09-02 11:01:10.245] [INFO ] AutoPushService: Targeted application push for 98251226730001 (MoreFun MF919) [2026-09-02 11:01:10.249] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=40.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_config_push/4, at: lib/tms_core/terminal_management/auto_push_service.ex:63 [2026-09-02 11:01:10.252] [DEBUG] QUERY OK source="config_file_versions" db=1.0ms idle=6.2ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.push_mf919_application/4, at: lib/tms_core/terminal_management/auto_push_service.ex:365 [2026-09-02 11:01:10.253] [ERROR] AutoPushService: Failed to resolve application artifact for 98251226730001: "application artifact not found: priv/static/mf919/agent_app.apk" [2026-09-02 11:01:10.255] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=4.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:1184 [2026-09-02 11:01:10.276] [DEBUG] QUERY OK source="tms_terminals" db=20.9ms idle=2.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 11:01:10], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:174 [2026-09-02 11:01:10.278] [DEBUG] QUERY OK source="app_upgrade_device_statuses" db=0.7ms idle=22.2ms SELECT a0.`id`, a0.`config_id`, a0.`device_id`, a0.`device_sn`, a0.`vendor`, a0.`model`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`update_result`, a0.`status`, a0.`remark`, a0.`finish_time`, a0.`pushed_time`, a0.`retry_count`, a0.`inserted_at`, a0.`updated_at` FROM `app_upgrade_device_statuses` AS a0 WHERE ((a0.`device_sn` = ?) AND a0.`status` IN ('pending','pushed')) ["98251226730001"] ↳ TmsCore.TerminalManagement.AppUpgradeService.maybe_repush_for_device/1, at: lib/tms_core/terminal_management/app_upgrade_service.ex:148 [2026-09-02 11:01:10.318] [DEBUG] QUERY OK db=40.0ms idle=2.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "organization_id", "2026-09-02T11:01:09Z", ~N[2026-09-02 11:01:10], ~N[2026-09-02 11:01:10]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:179 [2026-09-02 11:01:10.318] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 105876, oid: "organization_id", upload_time: "2026-09-02T11:01:09Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 11:01:10], updated_at: ~N[2026-09-02 11:01:10]} [2026-09-02 11:01:10.318] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-09-02T11:01:09Z", "value" => "online"} [2026-09-02 11:01:10.372] [DEBUG] QUERY OK db=53.6ms idle=22.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-09-02T11:01:09Z", "online", "status", 105876, ~N[2026-09-02 11:01:10], ~N[2026-09-02 11:01:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 11:01:10.373] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084851, itemkey: "status", value: "online", timestamp: "2026-09-02T11:01:09Z", message: "Terminal status update", status_log_id: 105876, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 11:01:10], updated_at: ~N[2026-09-02 11:01:10]}} [2026-09-02 11:01:10.373] [INFO ] Setting terminal 98251226730001 status to 'online' from status itemkey [2026-09-02 11:01:10.374] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=54.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 11:01:10], 33] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:203 [2026-09-02 11:01:10.374] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-09-02T11:01:09Z", "value" => "34"} [2026-09-02 11:01:10.429] [DEBUG] QUERY OK db=54.5ms idle=2.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-09-02T11:01:09Z", "34", "battery", 105876, ~N[2026-09-02 11:01:10], ~N[2026-09-02 11:01:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 11:01:10.430] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084854, itemkey: "battery", value: "34", timestamp: "2026-09-02T11:01:09Z", message: "Battery level", status_log_id: 105876, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 11:01:10], updated_at: ~N[2026-09-02 11:01:10]}} [2026-09-02 11:01:10.430] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-09-02T11:01:09Z", "value" => "online"} [2026-09-02 11:01:10.488] [DEBUG] QUERY OK db=57.6ms idle=56.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-09-02T11:01:09Z", "online", "network", 105876, ~N[2026-09-02 11:01:10], ~N[2026-09-02 11:01:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 11:01:10.491] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084857, itemkey: "network", value: "online", timestamp: "2026-09-02T11:01:09Z", message: "Network connectivity", status_log_id: 105876, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 11:01:10], updated_at: ~N[2026-09-02 11:01:10]}} [2026-09-02 11:01:10.491] [INFO ] Setting terminal 98251226730001 status to 'online' from network itemkey [2026-09-02 11:01:10.494] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=1.0ms idle=63.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 11:01:10], 33] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:203 [2026-09-02 11:01:10.495] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-09-02T11:01:09Z", "value" => "0"} [2026-09-02 11:01:10.537] [DEBUG] QUERY OK db=41.9ms queue=0.1ms idle=6.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-09-02T11:01:09Z", "0", "cpu", 105876, ~N[2026-09-02 11:01:10], ~N[2026-09-02 11:01:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 11:01:10.538] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084860, itemkey: "cpu", value: "0", timestamp: "2026-09-02T11:01:09Z", message: "CPU usage percentage", status_log_id: 105876, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 11:01:10], updated_at: ~N[2026-09-02 11:01:10]}} [2026-09-02 11:01:10.538] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-09-02T11:01:09Z", "value" => "1.0.0"} [2026-09-02 11:01:10.618] [DEBUG] QUERY OK db=79.7ms idle=43.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-09-02T11:01:09Z", "1.0.0", "parameter_config", 105876, ~N[2026-09-02 11:01:10], ~N[2026-09-02 11:01:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 11:01:10.619] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084862, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-09-02T11:01:09Z", message: "Current parameters version", status_log_id: 105876, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 11:01:10], updated_at: ~N[2026-09-02 11:01:10]}} [2026-09-02 11:01:10.619] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-09-02T11:01:09Z", "value" => "1.0.1"} [2026-09-02 11:01:10.664] [DEBUG] QUERY OK db=45.0ms idle=82.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-09-02T11:01:09Z", "1.0.1", "emv_config", 105876, ~N[2026-09-02 11:01:10], ~N[2026-09-02 11:01:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 11:01:10.665] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084865, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-09-02T11:01:09Z", message: "Current EMV config version", status_log_id: 105876, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 11:01:10], updated_at: ~N[2026-09-02 11:01:10]}} [2026-09-02 11:01:10.665] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-09-02T11:01:09Z", "value" => ""} [2026-09-02 11:01:10.744] [DEBUG] QUERY OK db=76.1ms idle=49.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-09-02T11:01:09Z", "keys_config", 105876, ~N[2026-09-02 11:01:10], ~N[2026-09-02 11:01:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 11:01:10.744] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084868, itemkey: "keys_config", value: nil, timestamp: "2026-09-02T11:01:09Z", message: "Current keys config version", status_log_id: 105876, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 11:01:10], updated_at: ~N[2026-09-02 11:01:10]}} [2026-09-02 11:01:10.744] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-09-02T11:01:09Z", "value" => "3.8.7.3"} [2026-09-02 11:01:10.874] [DEBUG] QUERY OK db=129.6ms idle=80.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-09-02T11:01:09Z", "3.8.7.3", "application", 105876, ~N[2026-09-02 11:01:10], ~N[2026-09-02 11:01:10]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 11:01:10.874] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084871, itemkey: "application", value: "3.8.7.3", timestamp: "2026-09-02T11:01:09Z", message: "Current application version", status_log_id: 105876, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 11:01:10], updated_at: ~N[2026-09-02 11:01:10]}} [2026-09-02 11:01:10.876] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=130.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 11:01:10], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:233 [2026-09-02 11:01:10.877] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-09-02T11:01:09Z"} [2026-09-02 11:01:10.878] [INFO ] Received device ACK from 98251226730001: oid= status=error [2026-09-02 11:01:10.878] [WARN ] Unhandled device ACK oid= from 98251226730001: %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-09-02T11:01:09Z"} [2026-09-02 11:01:10.878] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.0","requestId":"4068","status":"success","timestamp":1788346869760,"type":"tms_response"} [2026-09-02 11:01:10.878] [INFO ] Processing file download response for device 98251226730001, request_id: 4068 [2026-09-02 11:01:10.895] [DEBUG] QUERY OK source="file_download_logs" db=16.3ms idle=4.2ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["4068"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 11:01:10.895] [INFO ] No file download log for request_id 4068; response not attached to a push [2026-09-02 11:01:10.895] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 11:01:10.895517Z], response: %{"message" => "Already up to date: 1.0.0", "requestId" => "4068", "status" => "success", "timestamp" => 1788346869760, "type" => "tms_response"}, request_id: "4068", error_message: nil, device_serial: "98251226730001"} [2026-09-02 11:01:10.895] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_PARAMS","timestamp":"2026-09-02T11:01:09Z"} [2026-09-02 11:01:10.895] [INFO ] Received device ACK from 98251226730001: oid= status=error [2026-09-02 11:01:10.896] [WARN ] Unhandled device ACK oid= from 98251226730001: %{"message" => "Unknown command: UPDATE_PARAMS", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-09-02T11:01:09Z"} [2026-09-02 11:01:10.896] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-09-02T11:01:09Z"} [2026-09-02 11:01:10.896] [INFO ] Received device ACK from 98251226730001: oid= status=error [2026-09-02 11:01:10.896] [WARN ] Unhandled device ACK oid= from 98251226730001: %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-09-02T11:01:09Z"} [2026-09-02 11:01:10.896] [INFO ] Received OTA ACK from device 98251226730001: {"oid":"","sn":"98251226730001","status":"error","message":"Unknown command: UPDATE_L3_CONFIG","timestamp":"2026-09-02T11:01:09Z"} [2026-09-02 11:01:10.896] [INFO ] Received device ACK from 98251226730001: oid= status=error [2026-09-02 11:01:10.896] [WARN ] Unhandled device ACK oid= from 98251226730001: %{"message" => "Unknown command: UPDATE_L3_CONFIG", "oid" => "", "sn" => "98251226730001", "status" => "error", "timestamp" => "2026-09-02T11:01:09Z"} [2026-09-02 11:01:10.897] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.0","requestId":"304738","status":"success","timestamp":1788346869780,"type":"tms_response"} [2026-09-02 11:01:10.897] [INFO ] Processing file download response for device 98251226730001, request_id: 304738 [2026-09-02 11:01:10.899] [DEBUG] QUERY OK source="file_download_logs" db=2.0ms idle=20.7ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["304738"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 11:01:10.899] [INFO ] No file download log for request_id 304738; response not attached to a push [2026-09-02 11:01:10.899] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 11:01:10.899664Z], response: %{"message" => "Already up to date: 1.0.0", "requestId" => "304738", "status" => "success", "timestamp" => 1788346869780, "type" => "tms_response"}, request_id: "304738", error_message: nil, device_serial: "98251226730001"} [2026-09-02 11:01:10.899] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.1","requestId":"4132","status":"success","timestamp":1788346869797,"type":"tms_response"} [2026-09-02 11:01:10.899] [INFO ] Processing file download response for device 98251226730001, request_id: 4132 [2026-09-02 11:01:10.903] [DEBUG] QUERY OK source="file_download_logs" db=0.3ms idle=7.2ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["4132"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 11:01:10.903] [INFO ] No file download log for request_id 4132; response not attached to a push [2026-09-02 11:01:10.903] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 11:01:10.903232Z], response: %{"message" => "Already up to date: 1.0.1", "requestId" => "4132", "status" => "success", "timestamp" => 1788346869797, "type" => "tms_response"}, request_id: "4132", error_message: nil, device_serial: "98251226730001"} [2026-09-02 11:01:10.903] [INFO ] Received device response from 98251226730001: {"message":"Already up to date: 1.0.1","requestId":"264259","status":"success","timestamp":1788346869813,"type":"tms_response"} [2026-09-02 11:01:10.903] [INFO ] Processing file download response for device 98251226730001, request_id: 264259 [2026-09-02 11:01:10.906] [DEBUG] QUERY OK source="file_download_logs" db=2.3ms decode=0.1ms idle=4.2ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["264259"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 11:01:10.906] [INFO ] No file download log for request_id 264259; response not attached to a push [2026-09-02 11:01:10.906] [INFO ] File download response log: %{command: "file_download_response", status: "completed", timestamp: ~U[2026-09-02 11:01:10.906717Z], response: %{"message" => "Already up to date: 1.0.1", "requestId" => "264259", "status" => "success", "timestamp" => 1788346869813, "type" => "tms_response"}, request_id: "264259", error_message: nil, device_serial: "98251226730001"} [2026-09-02 11:01:10.906] [WARN ] Unexpected async result [2026-09-02 11:01:10.907] [WARN ] Unexpected async result [2026-09-02 11:15:15.221] [INFO ] [Ysp.Scheduler] Started. SFTP in 15h 44m, MIS in 20h 44m [2026-09-02 11:15:15.249] [INFO ] :alarm_handler: {:set, {{:disk_almost_full, ~c"/"}, []}} [2026-09-02 11:15:15.270] [INFO ] :alarm_handler: {:set, {:system_memory_high_watermark, []}} [2026-09-02 11:15:16.801] [INFO ] Terminal Event Listener started and listening to events [2026-09-02 11:15:16.802] [INFO ] Rule Validation Worker started - will run every hour [2026-09-02 11:15:16.804] [INFO ] Building initial filter cache... [2026-09-02 11:15:16.815] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.6ms idle=932.7ms SELECT t0.`area`, t0.`vendor`, t0.`model` FROM `tms_terminals` AS t0 WHERE ((NOT (t0.`area` IS NULL) OR NOT (t0.`vendor` IS NULL)) OR NOT (t0.`model` IS NULL)) [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_terminal_filter_data/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:153 [2026-09-02 11:15:16.823] [DEBUG] QUERY OK source="filter_usage" db=1.3ms queue=1.3ms idle=107.6ms SELECT f0.`filter_type`, f0.`filter_value`, coalesce(sum(f0.`usage_count`), 0) FROM `filter_usage` AS f0 GROUP BY f0.`filter_type`, f0.`filter_value` [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_usage_statistics/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:190 [2026-09-02 11:15:16.823] [INFO ] Filter cache rebuilt: 0 areas, 5 vendors, 8 models [2026-09-02 11:15:16.932] [INFO ] Running PlatformWeb.Endpoint with Bandit 1.10.2 at 0.0.0.0:5329 (http) [2026-09-02 11:15:16.942] [INFO ] Device phoenix_client_tms_apps_vidya connected [2026-09-02 11:15:16.944] [INFO ] Access PlatformWeb.Endpoint at http://localhost:5329 [2026-09-02 11:15:19.860] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 59µs Transport: :longpoll Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "GlEPSmIdJzcdPCYZE14DN38lLmJCR3B0C4V-VwFhIDvHglnE2dj26rF2", "_live_referer" => "http://localhost:5329/admin/settlements/payouts", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://localhost:5329/assets/app.css", "1" => "http://localhost:5329/assets/app.js"}, "vsn" => "2.0.0"} [2026-09-02 11:15:20.262] [DEBUG] MOUNT PlatformWeb.SettlementLive.MisApproval Parameters: %{} Session: %{"_csrf_token" => "YeYg4ja_TxPQt2mrMADPt56F", "live_socket_id" => "users_sessions:1SCMkuUViXFyTH5BPBDsb34g_qe7I7Ttdm5i6LAnpjM=", "user_token" => <<213, 32, 140, 146, 229, 21, 137, 113, 114, 76, 126, 65, 60, 16, 236, 111, 126, 32, 254, 167, 187, 35, 180, 237, 118, 110, 98, 232, 176, 39, 166, 51>>} [2026-09-02 11:15:20.285] [DEBUG] QUERY OK source="users_tokens" db=0.6ms queue=0.7ms idle=1559.7ms SELECT u1.`id`, u1.`email`, u1.`hashed_password`, u1.`confirmed_at`, u1.`role`, u1.`name`, u1.`first_name`, u1.`last_name`, u1.`data`, u1.`inserted_at`, u1.`updated_at` FROM `users_tokens` AS u0 INNER JOIN `users` AS u1 ON u1.`id` = u0.`user_id` WHERE ((u0.`token` = ?) AND (u0.`context` = ?)) AND (u0.`inserted_at` > date_add(?, INTERVAL -(60) day)) [<<213, 32, 140, 146, 229, 21, 137, 113, 114, 76, 126, 65, 60, 16, 236, 111, 126, 32, 254, 167, 187, 35, 180, 237, 118, 110, 98, 232, 176, 39, 166, 51>>, "session", ~U[2026-09-02 11:15:20.272181Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-09-02 11:15:20.296] [DEBUG] QUERY OK source="settlement_mis" db=2.4ms queue=0.4ms idle=1381.3ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 ORDER BY s0.`mis_date` DESC LIMIT 100 [] ↳ PlatformWeb.SettlementLive.MisApproval.load_mis_rows/1, at: lib/platform_web/live/settlement_live/mis_approval.ex:505 [2026-09-02 11:15:20.303] [DEBUG] Replied in 48ms [2026-09-02 11:15:58.291] [INFO ] Received status update for terminal 61250415798001 [2026-09-02 11:15:58.291] [INFO ] Incoming JSON payload: {"oid":"org-id-placeholder","sn":"61250415798001","vendor":"MoreFun","model":"SR600","uploadTime":"3694884-10-29T11:55:24Z","org.device":[{"itemkey":"status","value":"online","timestamp":"3694884-10-29T11:55:24Z","message":"Device Connected"}]} [2026-09-02 11:15:58.292] [INFO ] Decoded JSON: %{"model" => "SR600", "oid" => "org-id-placeholder", "org.device" => [%{"itemkey" => "status", "message" => "Device Connected", "timestamp" => "3694884-10-29T11:55:24Z", "value" => "online"}], "sn" => "61250415798001", "uploadTime" => "3694884-10-29T11:55:24Z", "vendor" => "MoreFun"} [2026-09-02 11:15:58.292] [INFO ] Extracted versions for 61250415798001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-09-02 11:15:58.302] [INFO ] Detected missing versions for 61250415798001, triggering auto-push [2026-09-02 11:15:58.302] [INFO ] AutoPushService: Triggering auto-push for 61250415798001 (MoreFun SR600) - missing version [2026-09-02 11:15:58.303] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms queue=0.4ms idle=275.9ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["MoreFun", "SR600"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-09-02 11:15:58.305] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.4ms idle=45.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-09-02 11:15:58.310] [DEBUG] QUERY OK source="parameter_template_values" db=0.3ms queue=0.5ms idle=5.6ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [7] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-09-02 11:15:58.424] [DEBUG] QUERY OK db=93.2ms queue=1.2ms idle=21.3ms INSERT INTO `parameter_push_logs` (`status`,`request_id`,`terminal_id`,`template_id`,`push_type`,`config_type`,`device_vendor`,`device_model`,`parameters_sent`,`log_time`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", 35587, 1, 7, "full", "parameter", "MoreFun", "SR600", %{}, ~U[2026-09-02 11:15:58Z], "missing_version", "1.0.0", ~N[2026-09-02 11:15:58], ~N[2026-09-02 11:15:58]] ↳ TmsCore.TerminalManagement.AutoPushService.push_generic_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:235 [2026-09-02 11:15:58.424] [INFO ] AutoPushService: Created push log 60681 for parameters (template: 7) [2026-09-02 11:15:58.428] [INFO ] SR600 MQTT Command: %{"command" => "file_download", "merchant_config" => "true", "request_id" => 35587, "retry_count" => "3", "version" => "1.0.0"} [2026-09-02 11:15:58.429] [INFO ] AutoPushService: Sending parameter push to 61250415798001 on topic: /ota/pFppbioOCKlo5c8E/61250415798001/update [2026-09-02 11:15:58.435] [INFO ] AutoPushService: Parameter push sent successfully to 61250415798001 [2026-09-02 11:15:58.466] [DEBUG] QUERY OK db=27.2ms queue=2.6ms idle=126.1ms INSERT INTO `parameter_push_logs` (`status`,`request_id`,`terminal_id`,`push_type`,`config_type`,`device_vendor`,`device_model`,`log_time`,`trigger_reason`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?) ["pending", 34082, 1, "full", "emv_config", "MoreFun", "SR600", ~U[2026-09-02 11:15:58Z], "missing_version", ~N[2026-09-02 11:15:58], ~N[2026-09-02 11:15:58]] ↳ TmsCore.TerminalManagement.AutoPushService.push_regular_config/5, at: lib/tms_core/terminal_management/auto_push_service.ex:427 [2026-09-02 11:15:58.466] [INFO ] AutoPushService: Created push log for emv_config [2026-09-02 11:15:58.466] [INFO ] SR600 MQTT Command: %{"command" => "file_download", "merchant_config" => "true", "request_id" => 34082, "retry_count" => "3"} [2026-09-02 11:15:58.466] [INFO ] AutoPushService: Sending emv_config push to 61250415798001 on topic: /ota/pFppbioOCKlo5c8E/61250415798001/update [2026-09-02 11:15:58.466] [INFO ] AutoPushService: emv_config push sent successfully to 61250415798001 [2026-09-02 11:15:58.469] [DEBUG] QUERY OK source="config_file_versions" db=1.2ms queue=1.6ms idle=45.9ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "SR600"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-09-02 11:15:58.482] [INFO ] KeysConfigService: Generating keys.json for 61250415798001 (SR600) [2026-09-02 11:15:58.483] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=16.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-09-02 11:15:58.484] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 61250415798001 with params: %{"kekKcv" => "112233", "model" => "SR600", "serialNumber" => "61250415798001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-09-02 11:15:58.550] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-09-02 11:15:58.550] [ERROR] KeysConfigService: Failed to generate keys for 61250415798001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 11:15:58.551] [ERROR] AutoPushService: Failed to generate keys.json for 61250415798001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 11:15:58.624] [DEBUG] QUERY OK db=71.6ms queue=0.5ms idle=81.9ms INSERT INTO `parameter_push_logs` (`status`,`request_id`,`terminal_id`,`push_type`,`config_type`,`device_vendor`,`device_model`,`log_time`,`trigger_reason`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?) ["pending", 34242, 1, "full", "application", "MoreFun", "SR600", ~U[2026-09-02 11:15:58Z], "missing_version", ~N[2026-09-02 11:15:58], ~N[2026-09-02 11:15:58]] ↳ TmsCore.TerminalManagement.AutoPushService.push_regular_config/5, at: lib/tms_core/terminal_management/auto_push_service.ex:427 [2026-09-02 11:15:58.624] [INFO ] AutoPushService: Created push log for application [2026-09-02 11:15:58.624] [INFO ] SR600 MQTT Command: %{"command" => "file_download", "merchant_config" => "true", "request_id" => 34242, "retry_count" => "3"} [2026-09-02 11:15:58.624] [INFO ] AutoPushService: Sending application push to 61250415798001 on topic: /ota/pFppbioOCKlo5c8E/61250415798001/update [2026-09-02 11:15:58.624] [INFO ] AutoPushService: application push sent successfully to 61250415798001 [2026-09-02 11:15:58.624] [INFO ] AutoPushService: Auto-push completed for 61250415798001 [2026-09-02 11:15:58.648] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=164.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:140 [2026-09-02 11:15:58.654] [INFO ] Terminal updated: 61250415798001 [2026-09-02 11:15:58.661] [DEBUG] VersionComplianceChecker: 61250415798001 — all versions compliant [2026-09-02 11:15:58.662] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=37.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250415798001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:1184 [2026-09-02 11:15:58.664] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=1.3ms idle=14.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 11:15:58], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:174 [2026-09-02 11:15:58.675] [DEBUG] QUERY OK source="app_upgrade_device_statuses" db=0.4ms queue=1.4ms idle=11.2ms SELECT a0.`id`, a0.`config_id`, a0.`device_id`, a0.`device_sn`, a0.`vendor`, a0.`model`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`update_result`, a0.`status`, a0.`remark`, a0.`finish_time`, a0.`pushed_time`, a0.`retry_count`, a0.`inserted_at`, a0.`updated_at` FROM `app_upgrade_device_statuses` AS a0 WHERE ((a0.`device_sn` = ?) AND a0.`status` IN ('pending','pushed')) ["61250415798001"] ↳ TmsCore.TerminalManagement.AppUpgradeService.maybe_repush_for_device/1, at: lib/tms_core/terminal_management/app_upgrade_service.ex:148 [2026-09-02 11:15:58.732] [DEBUG] QUERY OK db=48.5ms queue=1.1ms idle=18.1ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [1, "org-id-placeholder", "3694884-10-29T11:55:24Z", ~N[2026-09-02 11:15:58], ~N[2026-09-02 11:15:58]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:179 [2026-09-02 11:15:58.743] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 105897, oid: "org-id-placeholder", upload_time: "3694884-10-29T11:55:24Z", terminal_id: 1, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 11:15:58], updated_at: ~N[2026-09-02 11:15:58]} [2026-09-02 11:15:58.743] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Device Connected", "timestamp" => "3694884-10-29T11:55:24Z", "value" => "online"} [2026-09-02 11:15:58.779] [DEBUG] QUERY OK db=34.9ms queue=0.6ms idle=68.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Device Connected", "3694884-10-29T11:55:24Z", "online", "status", 105897, ~N[2026-09-02 11:15:58], ~N[2026-09-02 11:15:58]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 11:15:58.782] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1084993, itemkey: "status", value: "online", timestamp: "3694884-10-29T11:55:24Z", message: "Device Connected", status_log_id: 105897, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 11:15:58], updated_at: ~N[2026-09-02 11:15:58]}} [2026-09-02 11:15:58.783] [INFO ] Setting terminal 61250415798001 status to 'online' from status itemkey [2026-09-02 11:15:58.786] [DEBUG] QUERY OK source="tms_terminals" db=2.0ms decode=1.2ms idle=50.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 11:15:58], 1] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:203 [2026-09-02 11:15:58.788] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms queue=0.9ms idle=7.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 11:15:58], 1] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:233 [2026-09-02 11:15:58.794] [WARN ] Unexpected async result [2026-09-02 11:15:58.794] [WARN ] Unexpected async result [2026-09-02 11:15:58.794] [WARN ] Unexpected async result [2026-09-02 11:16:54.445] [INFO ] [Ysp.Scheduler] Started. SFTP in 15h 43m, MIS in 20h 43m [2026-09-02 11:16:54.489] [INFO ] :alarm_handler: {:set, {{:disk_almost_full, ~c"/"}, []}} [2026-09-02 11:16:54.505] [INFO ] :alarm_handler: {:set, {:system_memory_high_watermark, []}} [2026-09-02 11:16:56.586] [INFO ] Terminal Event Listener started and listening to events [2026-09-02 11:16:56.586] [INFO ] Rule Validation Worker started - will run every hour [2026-09-02 11:16:56.586] [INFO ] Building initial filter cache... [2026-09-02 11:16:56.602] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.4ms idle=715.7ms SELECT t0.`area`, t0.`vendor`, t0.`model` FROM `tms_terminals` AS t0 WHERE ((NOT (t0.`area` IS NULL) OR NOT (t0.`vendor` IS NULL)) OR NOT (t0.`model` IS NULL)) [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_terminal_filter_data/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:153 [2026-09-02 11:16:56.610] [DEBUG] QUERY OK source="filter_usage" db=0.4ms queue=0.6ms idle=517.4ms SELECT f0.`filter_type`, f0.`filter_value`, coalesce(sum(f0.`usage_count`), 0) FROM `filter_usage` AS f0 GROUP BY f0.`filter_type`, f0.`filter_value` [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_usage_statistics/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:190 [2026-09-02 11:16:56.610] [INFO ] Filter cache rebuilt: 0 areas, 5 vendors, 8 models [2026-09-02 11:16:56.692] [INFO ] Device phoenix_client_tms_apps_vidya disconnected [2026-09-02 11:16:56.700] [INFO ] Device phoenix_client_tms_apps_vidya connected [2026-09-02 11:17:15.835] [INFO ] [Ysp.Scheduler] Started. SFTP in 15h 42m, MIS in 20h 42m [2026-09-02 11:17:15.889] [INFO ] :alarm_handler: {:set, {{:disk_almost_full, ~c"/"}, []}} [2026-09-02 11:17:15.916] [INFO ] :alarm_handler: {:set, {:system_memory_high_watermark, []}} [2026-09-02 11:17:17.727] [INFO ] Terminal Event Listener started and listening to events [2026-09-02 11:17:17.727] [INFO ] Rule Validation Worker started - will run every hour [2026-09-02 11:17:17.727] [INFO ] Building initial filter cache... [2026-09-02 11:17:17.741] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.4ms idle=659.8ms SELECT t0.`area`, t0.`vendor`, t0.`model` FROM `tms_terminals` AS t0 WHERE ((NOT (t0.`area` IS NULL) OR NOT (t0.`vendor` IS NULL)) OR NOT (t0.`model` IS NULL)) [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_terminal_filter_data/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:153 [2026-09-02 11:17:17.750] [DEBUG] QUERY OK source="filter_usage" db=2.2ms queue=0.8ms idle=349.3ms SELECT f0.`filter_type`, f0.`filter_value`, coalesce(sum(f0.`usage_count`), 0) FROM `filter_usage` AS f0 GROUP BY f0.`filter_type`, f0.`filter_value` [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_usage_statistics/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:190 [2026-09-02 11:17:17.750] [INFO ] Filter cache rebuilt: 0 areas, 5 vendors, 8 models [2026-09-02 11:17:17.809] [INFO ] Device phoenix_client_tms_apps_vidya disconnected [2026-09-02 11:17:17.814] [INFO ] Device phoenix_client_tms_apps_vidya connected [2026-09-02 11:17:47.499] [INFO ] [Ysp.Scheduler] Started. SFTP in 15h 42m, MIS in 20h 42m [2026-09-02 11:17:47.531] [INFO ] :alarm_handler: {:set, {{:disk_almost_full, ~c"/"}, []}} [2026-09-02 11:17:47.546] [INFO ] :alarm_handler: {:set, {:system_memory_high_watermark, []}} [2026-09-02 11:17:49.277] [INFO ] Terminal Event Listener started and listening to events [2026-09-02 11:17:49.278] [INFO ] Rule Validation Worker started - will run every hour [2026-09-02 11:17:49.278] [INFO ] Building initial filter cache... [2026-09-02 11:17:49.298] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=1.1ms idle=267.9ms SELECT t0.`area`, t0.`vendor`, t0.`model` FROM `tms_terminals` AS t0 WHERE ((NOT (t0.`area` IS NULL) OR NOT (t0.`vendor` IS NULL)) OR NOT (t0.`model` IS NULL)) [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_terminal_filter_data/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:153 [2026-09-02 11:17:49.317] [DEBUG] QUERY OK source="filter_usage" db=1.0ms queue=1.7ms idle=85.7ms SELECT f0.`filter_type`, f0.`filter_value`, coalesce(sum(f0.`usage_count`), 0) FROM `filter_usage` AS f0 GROUP BY f0.`filter_type`, f0.`filter_value` [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_usage_statistics/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:190 [2026-09-02 11:17:49.317] [INFO ] Filter cache rebuilt: 0 areas, 5 vendors, 8 models [2026-09-02 11:17:49.420] [INFO ] Device phoenix_client_tms_apps_vidya disconnected [2026-09-02 11:17:49.428] [INFO ] Device phoenix_client_tms_apps_vidya connected [2026-09-02 11:17:49.501] [INFO ] Device phoenix_client_tms_apps_vidya connected [2026-09-02 11:17:49.508] [ERROR] Socket closed before we handed it to the receiver [2026-09-02 11:17:49.508] [INFO ] Device phoenix_client_tms_apps_vidya disconnected [2026-09-02 11:17:49.556] [DEBUG] QUERY OK source="settlement_mis" db=7.1ms queue=0.5ms idle=259.1ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 WHERE (s0.`id` = ?) [326] ↳ :elixir_compiler_8.__FILE__/1, at: e2e_verify_bug_a_fix.exs:11 [2026-09-02 11:17:49.562] [DEBUG] QUERY OK source="payout_batches" db=0.6ms queue=0.8ms idle=243.5ms SELECT p0.`id`, p0.`settlement_mis_id`, p0.`payout_date`, p0.`batch_type`, p0.`total_merchants`, p0.`total_items`, p0.`total_amount`, p0.`currency`, p0.`file_path`, p0.`file_name`, p0.`encryption_method`, p0.`batch_reference`, p0.`encrypted_file_path`, p0.`file_hash`, p0.`encryption_key_ref`, p0.`generated_by`, p0.`generated_at`, p0.`transmission_method`, p0.`status`, p0.`transmitted_at`, p0.`transmission_reference`, p0.`bank_confirmation_ref`, p0.`failure_reason`, p0.`confirmed_at`, p0.`confirmed_item_count`, p0.`rejected_item_count`, p0.`inserted_at`, p0.`updated_at` FROM `payout_batches` AS p0 WHERE (p0.`settlement_mis_id` = ?) [326] ↳ SettlementCore.PayoutGenerator.generate_for_mis/1, at: lib/settlement_core/payout_generator.ex:54 [2026-09-02 11:17:49.562] [INFO ] [PayoutGenerator] Starting batch generation for mis_id=326 date=2026-08-31 [2026-09-02 11:17:49.569] [DEBUG] QUERY OK source="settlement_mis_items" db=1.2ms queue=1.1ms idle=13.5ms SELECT s0.`id`, s0.`settlement_mis_id`, s0.`core_transaction_id`, s0.`merchant_mid`, s0.`merchant_id`, s0.`merchant_name`, s0.`merchant_ref_number`, s0.`bank_name`, s0.`iban`, s0.`account_number`, s0.`settlement_date`, s0.`rrn`, s0.`tid`, s0.`auth_number`, s0.`transaction_date`, s0.`transaction_type`, s0.`scheme_name`, s0.`card_type_code`, s0.`gross_amount`, s0.`mdr_percentage_rate`, s0.`mdr_amount`, s0.`vat_rate`, s0.`vat_amount`, s0.`interchange_fee`, s0.`adjustment_amount`, s0.`ar_recovery`, s0.`net_payable`, s0.`transaction_count`, s0.`total_gross_amount`, s0.`total_mdr_amount`, s0.`total_vat_amount`, s0.`total_interchange_fee`, s0.`total_net_settlement_amount`, s0.`risk_status`, s0.`exception_type`, s0.`mpr_sent`, s0.`margin_contribution`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis_items` AS s0 WHERE (s0.`settlement_mis_id` = ?) [326] ↳ SettlementCore.PayoutGenerator.do_generate/1, at: lib/settlement_core/payout_generator.ex:224 [2026-09-02 11:17:49.593] [DEBUG] QUERY OK source="merchant_adjustments" db=0.8ms queue=1.2ms idle=24.0ms SELECT DISTINCT m0.`merchant_mid` FROM `merchant_adjustments` AS m0 WHERE (m0.`adjustment_date` = ?) AND (m0.`approval_status` = 'approved') AND (NOT (m0.`merchant_mid` IN (?,?))) [~D[2026-08-31], "419926360000000", "425590250000000"] ↳ SettlementCore.PayoutGenerator.do_generate/1, at: lib/settlement_core/payout_generator.ex:226 [2026-09-02 11:17:49.595] [DEBUG] QUERY OK db=0.4ms queue=0.8ms idle=24.5ms begin [] ↳ :elixir_compiler_8.__FILE__/1, at: e2e_verify_bug_a_fix.exs:13 [2026-09-02 11:17:49.607] [DEBUG] QUERY OK source="tid_masters" db=0.9ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` = ?) ["419926360000000"] ↳ anonymous fn/3 in Ecto.Adapters.SQL.checkout_or_transaction/4, at: lib/ecto/adapters/sql.ex:1473 [2026-09-02 11:17:49.608] [DEBUG] QUERY OK source="tid_masters" db=0.5ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` = ?) ["425590250000000"] ↳ anonymous fn/3 in Ecto.Adapters.SQL.checkout_or_transaction/4, at: lib/ecto/adapters/sql.ex:1473 [2026-09-02 11:17:49.609] [DEBUG] QUERY OK source="tid_masters" db=0.6ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` = ?) ["E2E_M3_TEST001"] ↳ anonymous fn/3 in Ecto.Adapters.SQL.checkout_or_transaction/4, at: lib/ecto/adapters/sql.ex:1473 [2026-09-02 11:17:49.611] [DEBUG] QUERY OK source="merchant_adjustments" db=0.5ms SELECT m0.`id`, m0.`merchant_mid`, m0.`merchant_name`, m0.`adjustment_date`, m0.`debit_credit`, m0.`amount`, m0.`currency`, m0.`adjustment_type`, m0.`description`, m0.`settlement_mis_id`, m0.`status`, m0.`applied_at`, m0.`cancelled_at`, m0.`cancel_reason`, m0.`approval_status`, m0.`level1_reviewed_by`, m0.`level1_reviewed_at`, m0.`level2_approved_by`, m0.`level2_approved_at`, m0.`rejected_by`, m0.`rejected_at`, m0.`rejection_reason`, m0.`created_by`, m0.`updated_by`, m0.`inserted_at`, m0.`updated_at` FROM `merchant_adjustments` AS m0 WHERE (m0.`adjustment_date` = ?) AND (m0.`approval_status` = 'approved') [~D[2026-08-31]] ↳ anonymous fn/3 in Ecto.Adapters.SQL.checkout_or_transaction/4, at: lib/ecto/adapters/sql.ex:1473 [2026-09-02 11:17:49.660] [DEBUG] QUERY OK db=0.5ms INSERT INTO `payout_batches` (`status`,`batch_reference`,`batch_type`,`settlement_mis_id`,`generated_at`,`payout_date`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?) ["generated", "BATCH-20260831-326", "payout", 326, ~N[2026-09-02 11:17:49], ~D[2026-08-31], ~N[2026-09-02 11:17:49], ~N[2026-09-02 11:17:49]] ↳ anonymous fn/3 in Ecto.Adapters.SQL.checkout_or_transaction/4, at: lib/ecto/adapters/sql.ex:1473 [2026-09-02 11:17:49.667] [DEBUG] QUERY OK db=0.7ms INSERT INTO `payout_items` (`status`,`currency`,`total_vat_amount`,`total_gross_amount`,`merchant_name`,`settlement_date`,`merchant_mid`,`bank_name`,`iban`,`gross_amount`,`net_settlement_amount`,`final_payout_amount`,`transaction_count`,`total_mdr_amount`,`merchant_id`,`payout_batch_id`,`payout_amount`,`settlement_mis_id`,`bank_code`,`merchant_ref_number`,`account_number`,`total_adjustments_credit`,`total_adjustments_debit`,`total_deductions`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "AED", Decimal.new("1.66"), Decimal.new("1750.00"), "Kalyan Mart", ~D[2026-08-31], "419926360000000", "Kalyan bnk", "78979888888888888888888", Decimal.new("1750.00"), Decimal.new("1715.21"), Decimal.new("1815.21"), 2, Decimal.new("33.13"), 1684, 181, Decimal.new("1815.21"), 326, "BANK001", "419926360000000", "412412342134", Decimal.new("100.00"), Decimal.new("0"), Decimal.new("-65.21"), ~N[2026-09-02 11:17:49], ~N[2026-09-02 11:17:49]] ↳ anonymous fn/3 in Ecto.Adapters.SQL.checkout_or_transaction/4, at: lib/ecto/adapters/sql.ex:1473 [2026-09-02 11:17:49.669] [DEBUG] QUERY OK db=0.7ms INSERT INTO `payout_items` (`status`,`currency`,`total_vat_amount`,`total_gross_amount`,`merchant_name`,`settlement_date`,`merchant_mid`,`bank_name`,`iban`,`gross_amount`,`net_settlement_amount`,`final_payout_amount`,`transaction_count`,`total_mdr_amount`,`merchant_id`,`payout_batch_id`,`payout_amount`,`settlement_mis_id`,`bank_code`,`merchant_ref_number`,`account_number`,`total_adjustments_credit`,`total_adjustments_debit`,`total_deductions`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "AED", Decimal.new("0.89"), Decimal.new("650.00"), "Golden Sands Retail LLC", ~D[2026-08-31], "425590250000000", "Abu Dhabi Commercial Bank", "AE070331234567890123456", Decimal.new("650.00"), Decimal.new("631.23"), Decimal.new("631.23"), 1, Decimal.new("17.88"), 990002, 181, Decimal.new("631.23"), 326, "ADCB", "GRP-B-2050", "512300998877", Decimal.new("0"), Decimal.new("0"), Decimal.new("18.77"), ~N[2026-09-02 11:17:49], ~N[2026-09-02 11:17:49]] ↳ anonymous fn/3 in Ecto.Adapters.SQL.checkout_or_transaction/4, at: lib/ecto/adapters/sql.ex:1473 [2026-09-02 11:17:49.670] [DEBUG] QUERY OK source="payout_batches" db=0.6ms UPDATE `payout_batches` SET `total_amount` = ?, `total_items` = ?, `total_merchants` = ?, `updated_at` = ? WHERE `id` = ? [Decimal.new("2446.44"), 2, 2, ~N[2026-09-02 11:17:49], 181] ↳ anonymous fn/3 in Ecto.Adapters.SQL.checkout_or_transaction/4, at: lib/ecto/adapters/sql.ex:1473 [2026-09-02 11:17:49.675] [INFO ] [PayoutGenerator] Generated payout batch_id=181 items=2 total=2446.44 [2026-09-02 11:17:49.677] [DEBUG] QUERY OK db=0.8ms INSERT INTO `payout_batches` (`status`,`batch_reference`,`batch_type`,`settlement_mis_id`,`generated_at`,`payout_date`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?) ["generated", "BATCH-20260831-326-RCV", "recovery", 326, ~N[2026-09-02 11:17:49], ~D[2026-08-31], ~N[2026-09-02 11:17:49], ~N[2026-09-02 11:17:49]] ↳ anonymous fn/3 in Ecto.Adapters.SQL.checkout_or_transaction/4, at: lib/ecto/adapters/sql.ex:1473 [2026-09-02 11:17:49.679] [DEBUG] QUERY OK db=0.5ms INSERT INTO `payout_items` (`status`,`currency`,`total_vat_amount`,`total_gross_amount`,`merchant_name`,`settlement_date`,`merchant_mid`,`bank_name`,`iban`,`gross_amount`,`net_settlement_amount`,`final_payout_amount`,`transaction_count`,`total_mdr_amount`,`payout_batch_id`,`payout_amount`,`settlement_mis_id`,`bank_code`,`merchant_ref_number`,`account_number`,`total_adjustments_credit`,`total_adjustments_debit`,`total_deductions`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", "AED", Decimal.new("0"), Decimal.new("0"), "E2E Test Merchant Three", ~D[2026-08-31], "E2E_M3_TEST001", "Test Bank", "AE000000000000000000003", Decimal.new("0"), Decimal.new("0"), Decimal.new("-120.00"), 0, Decimal.new("0"), 182, Decimal.new("-120.00"), 326, "TESTBANK", "E2E_M3_TEST001", "E2EM3ACCT001", Decimal.new("0"), Decimal.new("120.00"), Decimal.new("120.00"), ~N[2026-09-02 11:17:49], ~N[2026-09-02 11:17:49]] ↳ anonymous fn/3 in Ecto.Adapters.SQL.checkout_or_transaction/4, at: lib/ecto/adapters/sql.ex:1473 [2026-09-02 11:17:49.681] [DEBUG] QUERY OK source="payout_batches" db=0.9ms UPDATE `payout_batches` SET `total_amount` = ?, `total_items` = ?, `total_merchants` = ?, `updated_at` = ? WHERE `id` = ? [Decimal.new("-120.00"), 1, 1, ~N[2026-09-02 11:17:49], 182] ↳ anonymous fn/3 in Ecto.Adapters.SQL.checkout_or_transaction/4, at: lib/ecto/adapters/sql.ex:1473 [2026-09-02 11:17:49.681] [INFO ] [PayoutGenerator] Generated recovery batch_id=182 items=1 total=-120.00 [2026-09-02 11:17:49.690] [DEBUG] QUERY OK source="merchant_adjustments" db=1.1ms UPDATE `merchant_adjustments` AS m0 SET m0.`status` = ?, m0.`applied_at` = ?, m0.`settlement_mis_id` = ? WHERE (m0.`adjustment_date` = ?) AND (m0.`approval_status` = 'approved') AND (m0.`merchant_mid` IN (?,?,?)) ["applied", ~N[2026-09-02 11:17:49], 326, ~D[2026-08-31], "419926360000000", "425590250000000", "E2E_M3_TEST001"] ↳ anonymous fn/3 in Ecto.Adapters.SQL.checkout_or_transaction/4, at: lib/ecto/adapters/sql.ex:1473 [2026-09-02 11:17:49.836] [DEBUG] QUERY OK db=146.5ms commit [] ↳ :elixir_compiler_8.__FILE__/1, at: e2e_verify_bug_a_fix.exs:13 [2026-09-02 11:17:49.839] [INFO ] generate_for_mis returned 2 batch(es) [2026-09-02 11:17:49.843] [DEBUG] QUERY OK source="payout_items" db=2.4ms queue=1.3ms idle=251.8ms SELECT p0.`id`, p0.`payout_batch_id`, p0.`settlement_mis_id`, p0.`settlement_date`, p0.`merchant_mid`, p0.`merchant_id`, p0.`merchant_name`, p0.`merchant_ref_number`, p0.`bank_name`, p0.`iban`, p0.`account_number`, p0.`bank_code`, p0.`currency`, p0.`gross_amount`, p0.`total_deductions`, p0.`payout_amount`, p0.`transaction_count`, p0.`net_settlement_amount`, p0.`total_adjustments_credit`, p0.`total_adjustments_debit`, p0.`final_payout_amount`, p0.`total_gross_amount`, p0.`total_mdr_amount`, p0.`total_vat_amount`, p0.`status`, p0.`bank_transfer_ref`, p0.`confirmed_at`, p0.`rejection_reason`, p0.`rejected_at`, p0.`re_initiated_at`, p0.`re_initiated_batch_id`, p0.`inserted_at`, p0.`updated_at` FROM `payout_items` AS p0 WHERE (p0.`payout_batch_id` = ?) [181] ↳ anonymous fn/1 in :elixir_compiler_8.__FILE__/1, at: e2e_verify_bug_a_fix.exs:18 [2026-09-02 11:17:49.844] [INFO ] --- batch id=181 type=payout total_amount=2446.44 total_items=2 --- [2026-09-02 11:17:49.844] [INFO ] 419926360000000 payout_amount=1815.21 gross=1750.00 [2026-09-02 11:17:49.844] [INFO ] 425590250000000 payout_amount=631.23 gross=650.00 [2026-09-02 11:17:49.847] [DEBUG] QUERY OK source="payout_items" db=2.7ms idle=8.0ms SELECT p0.`id`, p0.`payout_batch_id`, p0.`settlement_mis_id`, p0.`settlement_date`, p0.`merchant_mid`, p0.`merchant_id`, p0.`merchant_name`, p0.`merchant_ref_number`, p0.`bank_name`, p0.`iban`, p0.`account_number`, p0.`bank_code`, p0.`currency`, p0.`gross_amount`, p0.`total_deductions`, p0.`payout_amount`, p0.`transaction_count`, p0.`net_settlement_amount`, p0.`total_adjustments_credit`, p0.`total_adjustments_debit`, p0.`final_payout_amount`, p0.`total_gross_amount`, p0.`total_mdr_amount`, p0.`total_vat_amount`, p0.`status`, p0.`bank_transfer_ref`, p0.`confirmed_at`, p0.`rejection_reason`, p0.`rejected_at`, p0.`re_initiated_at`, p0.`re_initiated_batch_id`, p0.`inserted_at`, p0.`updated_at` FROM `payout_items` AS p0 WHERE (p0.`payout_batch_id` = ?) [182] ↳ anonymous fn/1 in :elixir_compiler_8.__FILE__/1, at: e2e_verify_bug_a_fix.exs:18 [2026-09-02 11:17:49.848] [INFO ] --- batch id=182 type=recovery total_amount=-120.00 total_items=1 --- [2026-09-02 11:17:49.848] [INFO ] E2E_M3_TEST001 payout_amount=-120.00 gross=0.00 [2026-09-02 11:20:16.785] [INFO ] Running offline device check... [2026-09-02 11:20:16.785] [INFO ] Starting offline device check... [2026-09-02 11:20:16.788] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms queue=0.4ms idle=910.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1234 [2026-09-02 11:20:16.790] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.3ms idle=33.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [1] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:20:16.792] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=2.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:20:16.793] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.1ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:20:16.794] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:20:16.795] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms queue=0.2ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:20:16.795] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:20:16.796] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:20:16.797] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:20:16.798] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:20:16.799] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:20:16.799] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:20:16.800] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:20:16.801] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:20:16.801] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:20:16.802] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:20:16.802] [INFO ] Starting scheduled rule validation [2026-09-02 11:20:16.802] [DEBUG] Validating missing assignments [2026-09-02 11:20:16.803] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.2ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:20:16.804] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:20:16.805] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:20:16.816] [DEBUG] QUERY OK source="terminal_group_rules" db=0.3ms queue=1.7ms idle=8.1ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_all_rules/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:194 [2026-09-02 11:20:16.819] [DEBUG] QUERY OK source="tms_terminals" db=2.5ms queue=0.2ms idle=0.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_all_rules/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:196 [2026-09-02 11:20:16.820] [DEBUG] Re-applied 0 rules during validation [2026-09-02 11:20:16.820] [DEBUG] Validating invalid assignments [2026-09-02 11:20:16.820] [DEBUG] Validating rule consistency [2026-09-02 11:20:16.820] [DEBUG] Updating group terminal counts [2026-09-02 11:20:16.827] [DEBUG] QUERY OK source="terminal_groups" db=0.5ms queue=1.0ms idle=7.3ms SELECT count(t0.`id`) FROM `terminal_groups` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:248 [2026-09-02 11:20:16.829] [DEBUG] QUERY OK source="terminal_groups" db=0.4ms queue=0.5ms idle=0.3ms SELECT count(t0.`id`) FROM `terminal_groups` AS t0 WHERE (t0.`is_active` = TRUE) [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:249 [2026-09-02 11:20:16.831] [DEBUG] QUERY OK source="terminal_groups" db=1.0ms queue=0.6ms idle=0.2ms SELECT t0.`group_type`, count(t0.`id`) FROM `terminal_groups` AS t0 GROUP BY t0.`group_type` [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:255 [2026-09-02 11:20:16.832] [DEBUG] QUERY OK source="terminal_group_rules" db=0.5ms queue=0.3ms idle=0.2ms SELECT count(t0.`id`) FROM `terminal_group_rules` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:258 [2026-09-02 11:20:16.833] [DEBUG] QUERY OK source="terminal_group_rules" db=0.4ms queue=0.9ms idle=0.2ms SELECT count(t0.`id`) FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:259 [2026-09-02 11:20:16.840] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.2ms queue=1.4ms idle=5.2ms SELECT count(t0.`id`) FROM `terminal_group_memberships` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:261 [2026-09-02 11:20:16.842] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.3ms queue=0.8ms idle=0.3ms SELECT count(t0.`id`) FROM `terminal_group_memberships` AS t0 WHERE (t0.`is_active` = TRUE) [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:262 [2026-09-02 11:20:16.843] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.3ms queue=0.3ms idle=0.6ms SELECT t0.`assignment_type`, count(t0.`id`) FROM `terminal_group_memberships` AS t0 WHERE (t0.`is_active` = TRUE) GROUP BY t0.`assignment_type` [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:269 [2026-09-02 11:20:16.843] [DEBUG] Current group statistics: %{rules: %{active: 0, total: 0}, groups: %{active: 4, total: 4, by_type: %{"custom" => 4}}, assignments: %{active: 2, total: 2, by_type: %{"manual" => 2}}} [2026-09-02 11:20:16.844] [INFO ] Rule validation completed - applied 0 fixes [2026-09-02 11:20:16.845] [DEBUG] QUERY OK source="tms_terminals" db=39.2ms queue=0.6ms idle=1.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 11:20:16], 19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1283 [2026-09-02 11:20:16.845] [INFO ] Terminal 98250623730001 back online [2026-09-02 11:20:16.846] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:20:16.848] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:20:16.849] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:20:16.850] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:20:16.852] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.6ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:20:16.852] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:20:16.853] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.1ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:20:16.854] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:20:16.855] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:20:16.855] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:20:16.856] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:20:16.857] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:20:16.858] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:20:16.860] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:20:16.861] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:20:16.862] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:20:16.864] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:20:16.866] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:20:16.868] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:20:16.870] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms queue=0.1ms idle=3.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:20:16.871] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:20:16.872] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:20:16.873] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:20:16.874] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:20:16.875] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.7ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:20:16.877] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:20:16.880] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms queue=0.4ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:20:16.881] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.8ms idle=0.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:20:16.882] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:20:16.883] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:20:16.884] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:20:16.885] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:20:16.886] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:20:16.887] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:20:16.888] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.1ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [82] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:20:16.888] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [83] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:20:16.889] [INFO ] Offline device check completed. Found 51 offline devices, updated 1 statuses. [2026-09-02 11:20:16.889] [INFO ] Offline device check completed successfully [2026-09-02 11:25:16.890] [INFO ] Running offline device check... [2026-09-02 11:25:16.890] [INFO ] Starting offline device check... [2026-09-02 11:25:16.891] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=1066.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1234 [2026-09-02 11:25:16.893] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=640.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [1] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:25:16.894] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:25:16.895] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:25:16.896] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:25:16.897] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:25:16.897] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:25:16.898] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:25:16.899] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:25:16.899] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms queue=0.3ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:25:16.900] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:25:16.901] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:25:16.902] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:25:16.903] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:25:16.904] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:25:16.905] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:25:16.909] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.7ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:25:16.911] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=4.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:25:16.912] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:25:16.913] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:25:16.913] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:25:16.915] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:25:16.915] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:25:16.916] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.3ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:25:16.918] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:25:16.919] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.5ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:25:16.920] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.1ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:25:16.921] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:25:16.922] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:25:16.924] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:25:16.926] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:25:16.928] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=3.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:25:16.929] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:25:16.930] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:25:16.931] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms queue=0.1ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:25:16.932] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.1ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:25:16.933] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:25:16.935] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:25:16.935] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:25:16.936] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:25:16.937] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:25:16.939] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:25:16.941] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:25:16.942] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:25:16.944] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms queue=0.2ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:25:16.945] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:25:16.946] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:25:16.948] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:25:16.950] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:25:16.950] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:25:16.952] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms queue=0.1ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:25:16.952] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:25:16.953] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:25:16.954] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [82] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:25:16.955] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [83] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:25:16.955] [INFO ] Offline device check completed. Found 52 offline devices, updated 0 statuses. [2026-09-02 11:25:16.955] [INFO ] Offline device check completed successfully [2026-09-02 11:28:49.714] [INFO ] GET / [2026-09-02 11:28:49.738] [DEBUG] Processing with PlatformWeb.PageController.home/2 Parameters: %{} Pipelines: [:browser] [2026-09-02 11:28:49.739] [DEBUG] QUERY OK source="users_tokens" db=0.8ms queue=0.1ms idle=1961.2ms SELECT u1.`id`, u1.`email`, u1.`hashed_password`, u1.`confirmed_at`, u1.`role`, u1.`name`, u1.`first_name`, u1.`last_name`, u1.`data`, u1.`inserted_at`, u1.`updated_at` FROM `users_tokens` AS u0 INNER JOIN `users` AS u1 ON u1.`id` = u0.`user_id` WHERE ((u0.`token` = ?) AND (u0.`context` = ?)) AND (u0.`inserted_at` > date_add(?, INTERVAL -(60) day)) [<<213, 32, 140, 146, 229, 21, 137, 113, 114, 76, 126, 65, 60, 16, 236, 111, 126, 32, 254, 167, 187, 35, 180, 237, 118, 110, 98, 232, 176, 39, 166, 51>>, "session", ~U[2026-09-02 11:28:49.738530Z]] ↳ PlatformWeb.UserAuth.fetch_current_user/2, at: lib/platform_web/user_auth.ex:97 [2026-09-02 11:28:49.754] [INFO ] Sent 200 in 40ms [2026-09-02 11:29:09.910] [INFO ] GET /users/settings [2026-09-02 11:29:09.910] [DEBUG] Processing with PlatformWeb.UserSettingsLive.edit/2 Parameters: %{} Pipelines: [:browser, :require_authenticated_user] [2026-09-02 11:29:09.913] [DEBUG] QUERY OK source="users_tokens" db=0.9ms queue=0.7ms idle=1132.8ms SELECT u1.`id`, u1.`email`, u1.`hashed_password`, u1.`confirmed_at`, u1.`role`, u1.`name`, u1.`first_name`, u1.`last_name`, u1.`data`, u1.`inserted_at`, u1.`updated_at` FROM `users_tokens` AS u0 INNER JOIN `users` AS u1 ON u1.`id` = u0.`user_id` WHERE ((u0.`token` = ?) AND (u0.`context` = ?)) AND (u0.`inserted_at` > date_add(?, INTERVAL -(60) day)) [<<213, 32, 140, 146, 229, 21, 137, 113, 114, 76, 126, 65, 60, 16, 236, 111, 126, 32, 254, 167, 187, 35, 180, 237, 118, 110, 98, 232, 176, 39, 166, 51>>, "session", ~U[2026-09-02 11:29:09.911231Z]] ↳ PlatformWeb.UserAuth.fetch_current_user/2, at: lib/platform_web/user_auth.ex:97 [2026-09-02 11:29:09.937] [INFO ] Sent 200 in 26ms [2026-09-02 11:29:11.425] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 38µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "MTUeM1kGLA4uOxceOmgcKnx5JmQxA3QzhPGTmlMQzCGONZqX18b4E6Bu", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://localhost:5329/assets/app.css", "1" => "http://localhost:5329/assets/app.js"}, "vsn" => "2.0.0"} [2026-09-02 11:29:11.606] [DEBUG] MOUNT PlatformWeb.UserSettingsLive Parameters: %{} Session: %{"_csrf_token" => "YeYg4ja_TxPQt2mrMADPt56F", "live_socket_id" => "users_sessions:1SCMkuUViXFyTH5BPBDsb34g_qe7I7Ttdm5i6LAnpjM=", "user_token" => <<213, 32, 140, 146, 229, 21, 137, 113, 114, 76, 126, 65, 60, 16, 236, 111, 126, 32, 254, 167, 187, 35, 180, 237, 118, 110, 98, 232, 176, 39, 166, 51>>} [2026-09-02 11:29:11.607] [DEBUG] QUERY OK source="users_tokens" db=0.6ms idle=1693.2ms SELECT u1.`id`, u1.`email`, u1.`hashed_password`, u1.`confirmed_at`, u1.`role`, u1.`name`, u1.`first_name`, u1.`last_name`, u1.`data`, u1.`inserted_at`, u1.`updated_at` FROM `users_tokens` AS u0 INNER JOIN `users` AS u1 ON u1.`id` = u0.`user_id` WHERE ((u0.`token` = ?) AND (u0.`context` = ?)) AND (u0.`inserted_at` > date_add(?, INTERVAL -(60) day)) [<<213, 32, 140, 146, 229, 21, 137, 113, 114, 76, 126, 65, 60, 16, 236, 111, 126, 32, 254, 167, 187, 35, 180, 237, 118, 110, 98, 232, 176, 39, 166, 51>>, "session", ~U[2026-09-02 11:29:11.606167Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-09-02 11:29:11.607] [DEBUG] Replied in 1ms [2026-09-02 11:29:19.549] [DEBUG] HANDLE EVENT "validate_email" in PlatformWeb.UserSettingsLive Parameters: %{"_target" => ["current_password"], "current_password" => "[FILTERED]", "user" => %{"_unused_email" => "", "email" => "demo@mercury.com"}} [2026-09-02 11:29:19.549] [DEBUG] Replied in 303µs [2026-09-02 11:29:19.766] [WARN ] navigate event to "http://localhost:5329/admin/settlements/mis" failed because you are redirecting across live_sessions. A full page reload will be performed instead [2026-09-02 11:29:20.076] [INFO ] GET /admin/settlements/mis [2026-09-02 11:29:20.076] [DEBUG] Processing with PlatformWeb.SettlementLive.MisApproval.index/2 Parameters: %{} Pipelines: [:browser, :require_authenticated_user] [2026-09-02 11:29:20.078] [DEBUG] QUERY OK source="users_tokens" db=0.9ms idle=1298.1ms SELECT u1.`id`, u1.`email`, u1.`hashed_password`, u1.`confirmed_at`, u1.`role`, u1.`name`, u1.`first_name`, u1.`last_name`, u1.`data`, u1.`inserted_at`, u1.`updated_at` FROM `users_tokens` AS u0 INNER JOIN `users` AS u1 ON u1.`id` = u0.`user_id` WHERE ((u0.`token` = ?) AND (u0.`context` = ?)) AND (u0.`inserted_at` > date_add(?, INTERVAL -(60) day)) [<<213, 32, 140, 146, 229, 21, 137, 113, 114, 76, 126, 65, 60, 16, 236, 111, 126, 32, 254, 167, 187, 35, 180, 237, 118, 110, 98, 232, 176, 39, 166, 51>>, "session", ~U[2026-09-02 11:29:20.077161Z]] ↳ PlatformWeb.UserAuth.fetch_current_user/2, at: lib/platform_web/user_auth.ex:97 [2026-09-02 11:29:20.081] [DEBUG] QUERY OK source="settlement_mis" db=2.4ms idle=300.1ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 ORDER BY s0.`mis_date` DESC LIMIT 100 [] ↳ PlatformWeb.SettlementLive.MisApproval.load_mis_rows/1, at: lib/platform_web/live/settlement_live/mis_approval.ex:505 [2026-09-02 11:29:20.085] [INFO ] Sent 200 in 8ms [2026-09-02 11:29:21.515] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 41µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "DTEhF3EDVD4yORc5RUYqPXsUdTknY1R_TTxpEi5afAGh1tGO6U1iSVb9", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://localhost:5329/assets/app.css", "1" => "http://localhost:5329/assets/app.js"}, "vsn" => "2.0.0"} [2026-09-02 11:29:21.661] [DEBUG] MOUNT PlatformWeb.SettlementLive.MisApproval Parameters: %{} Session: %{"_csrf_token" => "YeYg4ja_TxPQt2mrMADPt56F", "live_socket_id" => "users_sessions:1SCMkuUViXFyTH5BPBDsb34g_qe7I7Ttdm5i6LAnpjM=", "user_token" => <<213, 32, 140, 146, 229, 21, 137, 113, 114, 76, 126, 65, 60, 16, 236, 111, 126, 32, 254, 167, 187, 35, 180, 237, 118, 110, 98, 232, 176, 39, 166, 51>>} [2026-09-02 11:29:21.662] [DEBUG] QUERY OK source="users_tokens" db=0.7ms idle=1583.5ms SELECT u1.`id`, u1.`email`, u1.`hashed_password`, u1.`confirmed_at`, u1.`role`, u1.`name`, u1.`first_name`, u1.`last_name`, u1.`data`, u1.`inserted_at`, u1.`updated_at` FROM `users_tokens` AS u0 INNER JOIN `users` AS u1 ON u1.`id` = u0.`user_id` WHERE ((u0.`token` = ?) AND (u0.`context` = ?)) AND (u0.`inserted_at` > date_add(?, INTERVAL -(60) day)) [<<213, 32, 140, 146, 229, 21, 137, 113, 114, 76, 126, 65, 60, 16, 236, 111, 126, 32, 254, 167, 187, 35, 180, 237, 118, 110, 98, 232, 176, 39, 166, 51>>, "session", ~U[2026-09-02 11:29:21.661697Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-09-02 11:29:21.665] [DEBUG] QUERY OK source="settlement_mis" db=1.9ms idle=595.2ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 ORDER BY s0.`mis_date` DESC LIMIT 100 [] ↳ PlatformWeb.SettlementLive.MisApproval.load_mis_rows/1, at: lib/platform_web/live/settlement_live/mis_approval.ex:505 [2026-09-02 11:29:21.666] [DEBUG] Replied in 4ms [2026-09-02 11:29:53.875] [DEBUG] HANDLE EVENT "mis_row_clicked" in PlatformWeb.SettlementLive.MisApproval Parameters: %{"id" => 326} [2026-09-02 11:29:53.877] [DEBUG] QUERY OK source="settlement_mis" db=0.7ms queue=1.1ms idle=1097.2ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 WHERE (s0.`id` = ?) [326] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:284 [2026-09-02 11:29:53.896] [DEBUG] QUERY OK source="settlement_mis_items" db=1.9ms queue=2.0ms idle=722.6ms SELECT s0.`merchant_mid`, s0.`merchant_id`, MAX(s0.`merchant_name`), sum(s0.`transaction_count`), sum(s0.`total_gross_amount`), sum(s0.`total_mdr_amount`), sum(s0.`total_vat_amount`), sum(s0.`total_interchange_fee`), sum(s0.`net_payable`), GROUP_CONCAT(DISTINCT s0.`scheme_name` SEPARATOR ', '), GROUP_CONCAT(DISTINCT s0.`card_type_code` SEPARATOR ', ') FROM `settlement_mis_items` AS s0 WHERE (s0.`settlement_mis_id` = ?) GROUP BY s0.`merchant_mid`, s0.`merchant_id` [326] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:285 [2026-09-02 11:29:53.913] [DEBUG] QUERY OK source="merchant_adjustments" db=2.0ms queue=1.3ms idle=24.4ms SELECT m0.`id`, m0.`merchant_mid`, m0.`merchant_name`, m0.`adjustment_date`, m0.`debit_credit`, m0.`amount`, m0.`currency`, m0.`adjustment_type`, m0.`description`, m0.`settlement_mis_id`, m0.`status`, m0.`applied_at`, m0.`cancelled_at`, m0.`cancel_reason`, m0.`approval_status`, m0.`level1_reviewed_by`, m0.`level1_reviewed_at`, m0.`level2_approved_by`, m0.`level2_approved_at`, m0.`rejected_by`, m0.`rejected_at`, m0.`rejection_reason`, m0.`created_by`, m0.`updated_by`, m0.`inserted_at`, m0.`updated_at` FROM `merchant_adjustments` AS m0 WHERE (m0.`adjustment_date` = ?) AND (m0.`approval_status` = 'approved') [~D[2026-08-31]] ↳ SettlementCore.Context.list_approved_adjustments_by_date/1, at: lib/settlement_core/context.ex:971 [2026-09-02 11:29:53.922] [DEBUG] QUERY OK source="core_transactions" db=1.0ms queue=3.1ms idle=21.6ms SELECT DISTINCT c0.`merchant_mid`, coalesce(t1.`merchant_name_legal`, t1.`merchant_name_dba`) FROM `core_transactions` AS c0 INNER JOIN `tid_masters` AS t1 ON t1.`mid` = c0.`merchant_mid` WHERE (DATE(c0.`transaction_datetime`) = ?) AND ((c0.`risk_hold` = TRUE) OR (c0.`settlement_status` = 'exception_hold')) AND (NOT (c0.`merchant_mid` IN (SELECT DISTINCT ss0.`merchant_mid` FROM `settlement_mis_items` AS ss0 WHERE (ss0.`settlement_mis_id` = ?)))) [~D[2026-08-31], 326] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:302 [2026-09-02 11:29:53.922] [DEBUG] Replied in 47ms [2026-09-02 11:29:59.579] [DEBUG] HANDLE EVENT "close_detail" in PlatformWeb.SettlementLive.MisApproval Parameters: %{"value" => ""} [2026-09-02 11:29:59.579] [DEBUG] Replied in 205µs [2026-09-02 11:30:16.803] [INFO ] Performing scheduled filter cache refresh... [2026-09-02 11:30:16.804] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms queue=0.2ms idle=522.6ms SELECT t0.`area`, t0.`vendor`, t0.`model` FROM `tms_terminals` AS t0 WHERE ((NOT (t0.`area` IS NULL) OR NOT (t0.`vendor` IS NULL)) OR NOT (t0.`model` IS NULL)) [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_terminal_filter_data/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:153 [2026-09-02 11:30:16.805] [DEBUG] QUERY OK source="filter_usage" db=0.6ms idle=521.1ms SELECT f0.`filter_type`, f0.`filter_value`, coalesce(sum(f0.`usage_count`), 0) FROM `filter_usage` AS f0 GROUP BY f0.`filter_type`, f0.`filter_value` [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_usage_statistics/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:190 [2026-09-02 11:30:16.805] [INFO ] Filter cache rebuilt: 0 areas, 5 vendors, 8 models [2026-09-02 11:30:16.956] [INFO ] Running offline device check... [2026-09-02 11:30:16.956] [INFO ] Starting offline device check... [2026-09-02 11:30:16.957] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=152.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1234 [2026-09-02 11:30:16.959] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=152.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [1] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:30:16.959] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:30:16.960] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:30:16.962] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:30:16.963] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:30:16.964] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:30:16.965] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:30:16.966] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:30:16.967] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:30:16.968] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.4ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:30:16.969] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:30:16.969] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:30:16.970] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:30:16.971] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:30:16.972] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:30:16.972] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:30:16.973] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:30:16.974] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:30:16.975] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:30:16.976] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.1ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:30:16.977] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms decode=0.1ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:30:16.978] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:30:16.979] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:30:16.979] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:30:16.980] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:30:16.981] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:30:16.981] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:30:16.982] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:30:16.983] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:30:16.983] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:30:16.984] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:30:16.985] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:30:16.986] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:30:16.987] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:30:16.988] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:30:16.989] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:30:16.990] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:30:16.990] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:30:16.991] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:30:16.993] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:30:16.994] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:30:16.995] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:30:16.996] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:30:16.997] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:30:16.998] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:30:16.999] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=0.7ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:30:17.000] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:30:17.001] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:30:17.002] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.2ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:30:17.003] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:30:17.005] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:30:17.006] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:30:17.007] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [82] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:30:17.008] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [83] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:30:17.008] [INFO ] Offline device check completed. Found 52 offline devices, updated 0 statuses. [2026-09-02 11:30:17.008] [INFO ] Offline device check completed successfully [2026-09-02 11:35:17.009] [INFO ] Running offline device check... [2026-09-02 11:35:17.009] [INFO ] Starting offline device check... [2026-09-02 11:35:17.010] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=551.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1234 [2026-09-02 11:35:17.012] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=266.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [1] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:35:17.013] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:35:17.014] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:35:17.014] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:35:17.015] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:35:17.016] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:35:17.017] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:35:17.017] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:35:17.018] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:35:17.018] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:35:17.019] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:35:17.020] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:35:17.021] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:35:17.022] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=0.1ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:35:17.023] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:35:17.023] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:35:17.024] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:35:17.025] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:35:17.025] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:35:17.026] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.1ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:35:17.027] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:35:17.028] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:35:17.028] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:35:17.029] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:35:17.030] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:35:17.031] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:35:17.031] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:35:17.032] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:35:17.033] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=0.4ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:35:17.034] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:35:17.035] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:35:17.036] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:35:17.036] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:35:17.037] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:35:17.038] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:35:17.038] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:35:17.039] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:35:17.040] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:35:17.041] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:35:17.042] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:35:17.042] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:35:17.043] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:35:17.044] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:35:17.045] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:35:17.046] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:35:17.047] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:35:17.048] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:35:17.049] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:35:17.050] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.1ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:35:17.050] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:35:17.051] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:35:17.051] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:35:17.052] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.1ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [82] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:35:17.053] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [83] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:35:17.053] [INFO ] Offline device check completed. Found 52 offline devices, updated 0 statuses. [2026-09-02 11:35:17.053] [INFO ] Offline device check completed successfully [2026-09-02 11:39:26.963] [DEBUG] HANDLE EVENT "open_approve" in PlatformWeb.SettlementLive.MisApproval Parameters: %{"id" => "326", "level" => "l1"} [2026-09-02 11:39:26.963] [DEBUG] Replied in 214µs [2026-09-02 11:39:28.859] [DEBUG] HANDLE EVENT "confirm_action" in PlatformWeb.SettlementLive.MisApproval Parameters: %{"value" => ""} [2026-09-02 11:39:28.861] [DEBUG] QUERY OK source="settlement_mis" db=0.8ms idle=1028.2ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 WHERE (s0.`id` = ?) [326] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:395 [2026-09-02 11:39:28.897] [DEBUG] QUERY OK source="settlement_mis" db=33.9ms queue=1.3ms idle=337.7ms UPDATE `settlement_mis` SET `approval_status` = ?, `level1_reviewed_by` = ?, `level1_reviewed_at` = ?, `updated_at` = ? WHERE `id` = ? ["level1_approved", 3, ~N[2026-09-02 11:39:28], ~N[2026-09-02 11:39:28], 326] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:402 [2026-09-02 11:39:28.900] [DEBUG] QUERY OK source="settlement_mis" db=2.8ms queue=0.1ms idle=35.9ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 ORDER BY s0.`mis_date` DESC LIMIT 100 [] ↳ PlatformWeb.SettlementLive.MisApproval.load_mis_rows/1, at: lib/platform_web/live/settlement_live/mis_approval.ex:505 [2026-09-02 11:39:28.905] [DEBUG] Replied in 46ms [2026-09-02 11:39:32.247] [DEBUG] HANDLE EVENT "mis_row_clicked" in PlatformWeb.SettlementLive.MisApproval Parameters: %{"id" => 326} [2026-09-02 11:39:32.249] [DEBUG] QUERY OK source="settlement_mis" db=1.4ms queue=0.3ms idle=1415.0ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 WHERE (s0.`id` = ?) [326] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:284 [2026-09-02 11:39:32.250] [DEBUG] QUERY OK source="settlement_mis_items" db=0.9ms idle=714.7ms SELECT s0.`merchant_mid`, s0.`merchant_id`, MAX(s0.`merchant_name`), sum(s0.`transaction_count`), sum(s0.`total_gross_amount`), sum(s0.`total_mdr_amount`), sum(s0.`total_vat_amount`), sum(s0.`total_interchange_fee`), sum(s0.`net_payable`), GROUP_CONCAT(DISTINCT s0.`scheme_name` SEPARATOR ', '), GROUP_CONCAT(DISTINCT s0.`card_type_code` SEPARATOR ', ') FROM `settlement_mis_items` AS s0 WHERE (s0.`settlement_mis_id` = ?) GROUP BY s0.`merchant_mid`, s0.`merchant_id` [326] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:285 [2026-09-02 11:39:32.251] [DEBUG] QUERY OK source="merchant_adjustments" db=0.8ms idle=1.6ms SELECT m0.`id`, m0.`merchant_mid`, m0.`merchant_name`, m0.`adjustment_date`, m0.`debit_credit`, m0.`amount`, m0.`currency`, m0.`adjustment_type`, m0.`description`, m0.`settlement_mis_id`, m0.`status`, m0.`applied_at`, m0.`cancelled_at`, m0.`cancel_reason`, m0.`approval_status`, m0.`level1_reviewed_by`, m0.`level1_reviewed_at`, m0.`level2_approved_by`, m0.`level2_approved_at`, m0.`rejected_by`, m0.`rejected_at`, m0.`rejection_reason`, m0.`created_by`, m0.`updated_by`, m0.`inserted_at`, m0.`updated_at` FROM `merchant_adjustments` AS m0 WHERE (m0.`adjustment_date` = ?) AND (m0.`approval_status` = 'approved') [~D[2026-08-31]] ↳ SettlementCore.Context.list_approved_adjustments_by_date/1, at: lib/settlement_core/context.ex:971 [2026-09-02 11:39:32.254] [DEBUG] QUERY OK source="core_transactions" db=1.6ms idle=1.4ms SELECT DISTINCT c0.`merchant_mid`, coalesce(t1.`merchant_name_legal`, t1.`merchant_name_dba`) FROM `core_transactions` AS c0 INNER JOIN `tid_masters` AS t1 ON t1.`mid` = c0.`merchant_mid` WHERE (DATE(c0.`transaction_datetime`) = ?) AND ((c0.`risk_hold` = TRUE) OR (c0.`settlement_status` = 'exception_hold')) AND (NOT (c0.`merchant_mid` IN (SELECT DISTINCT ss0.`merchant_mid` FROM `settlement_mis_items` AS ss0 WHERE (ss0.`settlement_mis_id` = ?)))) [~D[2026-08-31], 326] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:302 [2026-09-02 11:39:32.254] [DEBUG] Replied in 7ms [2026-09-02 11:39:36.424] [DEBUG] HANDLE EVENT "close_detail" in PlatformWeb.SettlementLive.MisApproval Parameters: %{"value" => ""} [2026-09-02 11:39:36.424] [DEBUG] Replied in 199µs [2026-09-02 11:39:38.621] [DEBUG] HANDLE EVENT "open_approve" in PlatformWeb.SettlementLive.MisApproval Parameters: %{"id" => "326", "level" => "l2"} [2026-09-02 11:39:38.621] [DEBUG] Replied in 238µs [2026-09-02 11:39:40.570] [DEBUG] HANDLE EVENT "confirm_action" in PlatformWeb.SettlementLive.MisApproval Parameters: %{"value" => ""} [2026-09-02 11:39:40.571] [DEBUG] QUERY OK source="settlement_mis" db=0.7ms queue=0.1ms idle=1012.6ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 WHERE (s0.`id` = ?) [326] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:395 [2026-09-02 11:39:40.667] [DEBUG] QUERY OK source="settlement_mis" db=52.8ms queue=42.2ms idle=10.9ms UPDATE `settlement_mis` SET `approval_status` = ?, `level2_approved_by` = ?, `level2_approved_at` = ?, `updated_at` = ? WHERE `id` = ? ["approved", 3, ~N[2026-09-02 11:39:40], ~N[2026-09-02 11:39:40], 326] ↳ SettlementCore.Context.l2_approve_settlement_mis/3, at: lib/settlement_core/context.ex:1046 [2026-09-02 11:39:40.811] [INFO ] [PayoutTransmissionWorker] Starting payout for mis_id=326 [2026-09-02 11:39:40.812] [DEBUG] QUERY OK source="settlement_mis" db=0.5ms idle=0.4ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 WHERE (s0.`id` = ?) [326] ↳ SettlementCore.Workers.PayoutTransmissionWorker.perform/1, at: lib/settlement_core/workers/payout_transmission_worker.ex:41 [2026-09-02 11:39:40.814] [DEBUG] QUERY OK source="payout_batches" db=0.5ms queue=0.7ms idle=1.1ms SELECT p0.`id`, p0.`settlement_mis_id`, p0.`payout_date`, p0.`batch_type`, p0.`total_merchants`, p0.`total_items`, p0.`total_amount`, p0.`currency`, p0.`file_path`, p0.`file_name`, p0.`encryption_method`, p0.`batch_reference`, p0.`encrypted_file_path`, p0.`file_hash`, p0.`encryption_key_ref`, p0.`generated_by`, p0.`generated_at`, p0.`transmission_method`, p0.`status`, p0.`transmitted_at`, p0.`transmission_reference`, p0.`bank_confirmation_ref`, p0.`failure_reason`, p0.`confirmed_at`, p0.`confirmed_item_count`, p0.`rejected_item_count`, p0.`inserted_at`, p0.`updated_at` FROM `payout_batches` AS p0 WHERE (p0.`settlement_mis_id` = ?) [326] ↳ SettlementCore.PayoutGenerator.generate_for_mis/1, at: lib/settlement_core/payout_generator.ex:54 [2026-09-02 11:39:40.814] [INFO ] [PayoutGenerator] Batch(es) already exist for mis_id=326: [181, 182] [2026-09-02 11:39:40.816] [DEBUG] QUERY OK source="settlement_mis_items" db=0.5ms queue=0.7ms idle=0.7ms SELECT count(s0.`id`) FROM `settlement_mis_items` AS s0 WHERE ((s0.`settlement_mis_id` = ?) AND (s0.`mpr_sent` != TRUE)) [326] ↳ SettlementCore.Workers.PayoutTransmissionWorker.enqueue_mpr_if_needed/1, at: lib/settlement_core/workers/payout_transmission_worker.ex:93 [2026-09-02 11:39:40.824] [DEBUG] QUERY OK source="settlement_mis" db=1.3ms idle=0.1ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 ORDER BY s0.`mis_date` DESC LIMIT 100 [] ↳ PlatformWeb.SettlementLive.MisApproval.load_mis_rows/1, at: lib/platform_web/live/settlement_live/mis_approval.ex:505 [2026-09-02 11:39:40.825] [DEBUG] Replied in 254ms [2026-09-02 11:39:40.972] [INFO ] [MprDispatchWorker] Dispatching MPRs for mis_id=326 [2026-09-02 11:39:40.974] [DEBUG] QUERY OK source="settlement_mis" db=0.8ms queue=0.1ms idle=0.9ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 WHERE (s0.`id` = ?) [326] ↳ SettlementCore.Workers.MprDispatchWorker.perform/1, at: lib/settlement_core/workers/mpr_dispatch_worker.ex:47 [2026-09-02 11:39:40.976] [DEBUG] QUERY OK source="settlement_mis_items" db=0.7ms queue=0.7ms idle=0.4ms SELECT s0.`id`, s0.`settlement_mis_id`, s0.`core_transaction_id`, s0.`merchant_mid`, s0.`merchant_id`, s0.`merchant_name`, s0.`merchant_ref_number`, s0.`bank_name`, s0.`iban`, s0.`account_number`, s0.`settlement_date`, s0.`rrn`, s0.`tid`, s0.`auth_number`, s0.`transaction_date`, s0.`transaction_type`, s0.`scheme_name`, s0.`card_type_code`, s0.`gross_amount`, s0.`mdr_percentage_rate`, s0.`mdr_amount`, s0.`vat_rate`, s0.`vat_amount`, s0.`interchange_fee`, s0.`adjustment_amount`, s0.`ar_recovery`, s0.`net_payable`, s0.`transaction_count`, s0.`total_gross_amount`, s0.`total_mdr_amount`, s0.`total_vat_amount`, s0.`total_interchange_fee`, s0.`total_net_settlement_amount`, s0.`risk_status`, s0.`exception_type`, s0.`mpr_sent`, s0.`margin_contribution`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis_items` AS s0 WHERE (s0.`settlement_mis_id` = ?) ORDER BY s0.`merchant_mid`, s0.`card_type_code` [326] ↳ SettlementCore.Workers.MprDispatchWorker.perform/1, at: lib/settlement_core/workers/mpr_dispatch_worker.ex:48 [2026-09-02 11:39:40.977] [DEBUG] QUERY OK source="payout_batches" db=0.8ms queue=0.1ms idle=0.2ms SELECT p0.`id`, p0.`settlement_mis_id`, p0.`payout_date`, p0.`batch_type`, p0.`total_merchants`, p0.`total_items`, p0.`total_amount`, p0.`currency`, p0.`file_path`, p0.`file_name`, p0.`encryption_method`, p0.`batch_reference`, p0.`encrypted_file_path`, p0.`file_hash`, p0.`encryption_key_ref`, p0.`generated_by`, p0.`generated_at`, p0.`transmission_method`, p0.`status`, p0.`transmitted_at`, p0.`transmission_reference`, p0.`bank_confirmation_ref`, p0.`failure_reason`, p0.`confirmed_at`, p0.`confirmed_item_count`, p0.`rejected_item_count`, p0.`inserted_at`, p0.`updated_at` FROM `payout_batches` AS p0 WHERE (p0.`settlement_mis_id` = ?) [326] ↳ SettlementCore.Workers.MprDispatchWorker.do_perform/3, at: lib/settlement_core/workers/mpr_dispatch_worker.ex:61 [2026-09-02 11:39:41.041] [INFO ] [PayoutTransmissionWorker] MPR enqueue result for mis_id=326: {:ok, %Oban.Job{__meta__: #Ecto.Schema.Metadata<:loaded, "oban_jobs">, id: 39232, state: "available", queue: "mailers", worker: "SettlementCore.Workers.MprDispatchWorker", args: %{mis_id: 326}, meta: %{}, tags: [], errors: [], attempt: 0, attempted_by: nil, max_attempts: 3, priority: nil, attempted_at: nil, cancelled_at: nil, completed_at: nil, discarded_at: nil, inserted_at: nil, scheduled_at: nil, conf: nil, conflict?: false, replace: nil, unique: %{timestamp: :inserted_at, keys: [:mis_id, :worker], period: 82800, fields: [:args, :worker], states: [:scheduled, :available, :executing, :retryable]}, unsaved_error: nil}} [2026-09-02 11:39:41.045] [INFO ] [PayoutTransmitter] Transmitting batch_id=181 method=SFTP [2026-09-02 11:39:41.047] [DEBUG] QUERY OK source="payout_items" db=0.7ms queue=0.6ms idle=6.3ms SELECT p0.`id`, p0.`payout_batch_id`, p0.`settlement_mis_id`, p0.`settlement_date`, p0.`merchant_mid`, p0.`merchant_id`, p0.`merchant_name`, p0.`merchant_ref_number`, p0.`bank_name`, p0.`iban`, p0.`account_number`, p0.`bank_code`, p0.`currency`, p0.`gross_amount`, p0.`total_deductions`, p0.`payout_amount`, p0.`transaction_count`, p0.`net_settlement_amount`, p0.`total_adjustments_credit`, p0.`total_adjustments_debit`, p0.`final_payout_amount`, p0.`total_gross_amount`, p0.`total_mdr_amount`, p0.`total_vat_amount`, p0.`status`, p0.`bank_transfer_ref`, p0.`confirmed_at`, p0.`rejection_reason`, p0.`rejected_at`, p0.`re_initiated_at`, p0.`re_initiated_batch_id`, p0.`inserted_at`, p0.`updated_at` FROM `payout_items` AS p0 WHERE (p0.`payout_batch_id` = ?) ORDER BY p0.`merchant_mid` [181] ↳ SettlementCore.PayoutGenerator.generate_payout_csv/1, at: lib/settlement_core/payout_generator.ex:97 [2026-09-02 11:39:41.060] [DEBUG] QUERY OK source="tid_masters" db=1.1ms queue=0.9ms idle=5.8ms SELECT t0.`mid`, a3.`line1`, a3.`country`, t0.`registered_email` FROM `tid_masters` AS t0 LEFT OUTER JOIN `brands` AS b1 ON b1.`merchant_reference_id` COLLATE utf8mb4_unicode_ci = t0.`merchant_ref_number` COLLATE utf8mb4_unicode_ci LEFT OUTER JOIN `stores` AS s2 ON s2.`brand_id` = b1.`id` LEFT OUTER JOIN `addresses` AS a3 ON a3.`id` = s2.`address_id` WHERE (t0.`mid` IN (?,?) OR t0.`merchant_ref_number` IN (?,?)) ["419926360000000", "425590250000000", "419926360000000", "425590250000000"] ↳ SettlementCore.PayoutGenerator.prefetch_merchant_details/1, at: lib/settlement_core/payout_generator.ex:484 [2026-09-02 11:39:41.065] [INFO ] [FileEncryptor] Encrypted /tmp/payout_files_sunny/payout_2026-08-31_181.csv → /tmp/payout_files_sunny/payout_2026-08-31_181.csv.enc key_ref=default_v1 [2026-09-02 11:39:41.069] [INFO ] [Bank.SftpClient] Uploading /tmp/payout_files_sunny/payout_2026-08-31_181.csv.enc → sftp://localhost/incoming/payout_2026-08-31_181.csv.enc [2026-09-02 11:39:41.133] [INFO ] [MprDispatchWorker] Dispatching MPRs for mis_id=326 [2026-09-02 11:39:41.134] [DEBUG] QUERY OK source="settlement_mis" db=0.5ms idle=73.4ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 WHERE (s0.`id` = ?) [326] ↳ SettlementCore.Workers.MprDispatchWorker.perform/1, at: lib/settlement_core/workers/mpr_dispatch_worker.ex:47 [2026-09-02 11:39:41.136] [DEBUG] QUERY OK source="settlement_mis_items" db=1.7ms idle=1.4ms SELECT s0.`id`, s0.`settlement_mis_id`, s0.`core_transaction_id`, s0.`merchant_mid`, s0.`merchant_id`, s0.`merchant_name`, s0.`merchant_ref_number`, s0.`bank_name`, s0.`iban`, s0.`account_number`, s0.`settlement_date`, s0.`rrn`, s0.`tid`, s0.`auth_number`, s0.`transaction_date`, s0.`transaction_type`, s0.`scheme_name`, s0.`card_type_code`, s0.`gross_amount`, s0.`mdr_percentage_rate`, s0.`mdr_amount`, s0.`vat_rate`, s0.`vat_amount`, s0.`interchange_fee`, s0.`adjustment_amount`, s0.`ar_recovery`, s0.`net_payable`, s0.`transaction_count`, s0.`total_gross_amount`, s0.`total_mdr_amount`, s0.`total_vat_amount`, s0.`total_interchange_fee`, s0.`total_net_settlement_amount`, s0.`risk_status`, s0.`exception_type`, s0.`mpr_sent`, s0.`margin_contribution`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis_items` AS s0 WHERE (s0.`settlement_mis_id` = ?) ORDER BY s0.`merchant_mid`, s0.`card_type_code` [326] ↳ SettlementCore.Workers.MprDispatchWorker.perform/1, at: lib/settlement_core/workers/mpr_dispatch_worker.ex:48 [2026-09-02 11:39:41.137] [DEBUG] QUERY OK source="payout_batches" db=0.6ms idle=2.3ms SELECT p0.`id`, p0.`settlement_mis_id`, p0.`payout_date`, p0.`batch_type`, p0.`total_merchants`, p0.`total_items`, p0.`total_amount`, p0.`currency`, p0.`file_path`, p0.`file_name`, p0.`encryption_method`, p0.`batch_reference`, p0.`encrypted_file_path`, p0.`file_hash`, p0.`encryption_key_ref`, p0.`generated_by`, p0.`generated_at`, p0.`transmission_method`, p0.`status`, p0.`transmitted_at`, p0.`transmission_reference`, p0.`bank_confirmation_ref`, p0.`failure_reason`, p0.`confirmed_at`, p0.`confirmed_item_count`, p0.`rejected_item_count`, p0.`inserted_at`, p0.`updated_at` FROM `payout_batches` AS p0 WHERE (p0.`settlement_mis_id` = ?) [326] ↳ SettlementCore.Workers.MprDispatchWorker.do_perform/3, at: lib/settlement_core/workers/mpr_dispatch_worker.ex:61 [2026-09-02 11:39:41.225] [DEBUG] client will use strict KEX ordering [2026-09-02 11:39:41.339] [ERROR] Erlang SSH :client version: 5.1.4.3 (OpenSSL 3.0.13 30 Jan 2024). Address: 127.0.0.1:37892 Peer server version: ~c"SSH-2.0-OpenSSH_9.6p1 Ubuntu-3ubuntu13.18" Peer address: 127.0.0.1:22 badarg [2026-09-02 11:39:41.339] [INFO ] Erlang SSH :client version: 5.1.4.3 (OpenSSL 3.0.13 30 Jan 2024). Address: 127.0.0.1:37892 Peer server version: ~c"SSH-2.0-OpenSSH_9.6p1 Ubuntu-3ubuntu13.18" Peer address: 127.0.0.1:22 Disconnects with code = 11 [RFC4253 11.1]: Internal error State = {userauth,client} Module = ssh_connection_handler, Line = 1424. Details: Reason: badarg [2026-09-02 11:39:41.345] [ERROR] GenStateMachine #PID<0.3220.0> terminating ** (ArgumentError) errors were found at the given arguments: * 1st argument: not valid character data (an iodata term) (stdlib 5.2.3.2) unicode.erl:895: :unicode.characters_to_binary({:error, :enotsup}) (ssh 5.1.4.3) ssh_auth.erl:121: :ssh_auth.password_msg/1 (ssh 5.1.4.3) ssh_auth.erl:59: :ssh_auth.userauth_request_msg/1 (ssh 5.1.4.3) ssh_fsm_userauth_client.erl:92: :ssh_fsm_userauth_client.handle_event/4 (stdlib 5.2.3.2) gen_statem.erl:1397: :gen_statem.loop_state_callback/11 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 State: [data: [{~c"State", {:data, #PID<0.3214.0>, ~c"payout", {:connection, [], #Reference<0.4121046216.3555328001.171127>, 0, :undefined, %{ecdsa_pass_phrase: :"***", silently_accept_hosts: true, send_ext_info: true, user_dir: false, auth_methods: ~c"publickey,keyboard-interactive,password", tstflg: [], ssh_msg_debug_fun: #Function<49.126434157/4 in :ssh_options.default/1>, vsn: {2, 0}, quiet_mode: false, password: :"***", rekey_limit: {3600000, 1024000000}, preferred_algorithms: [kex: [:"curve25519-sha256", :"curve25519-sha256@libssh.org", :"curve448-sha512", :"ecdh-sha2-nistp521", :"ecdh-sha2-nistp384", :"ecdh-sha2-nistp256", :"diffie-hellman-group-exchange-sha256", :"diffie-hellman-group16-sha512", :"diffie-hellman-group18-sha512", :"diffie-hellman-group14-sha256"], public_key: [:"ssh-ed25519", :"ssh-ed448", :"ecdsa-sha2-nistp521", :"ecdsa-sha2-nistp384", :"ecdsa-sha2-nistp256", :"rsa-sha2-512", :"rsa-sha2-256"], cipher: [client2server: [:"aes256-gcm@openssh.com", :"aes256-ctr", :"aes192-ctr", :"aes128-gcm@openssh.com", :"aes128-ctr", :"chacha20-poly1305@openssh.com", :"aes256-cbc", :"aes192-cbc", :"aes128-cbc", :"3des-cbc"], server2client: [:"aes256-gcm@openssh.com", :"aes256-ctr", :"aes192-ctr", :"aes128-gcm@openssh.com", :"aes128-ctr", :"chacha20-poly1305@openssh.com", :"aes256-cbc", :"aes192-cbc", :"aes128-cbc", :"3des-cbc"]], mac: [client2server: [:"hmac-sha2-512-etm@openssh.com", :"hmac-sha2-256-etm@openssh.com", :"hmac-sha2-512", :"hmac-sha2-256", :"hmac-sha1-etm@openssh.com", :"hmac-sha1"], server2client: [:"hmac-sha2-512-etm@openssh.com", :"hmac-sha2-256-etm@openssh.com", :"hmac-sha2-512", :"hmac-sha2-256", :"hmac-sha1-etm@openssh.com", :"hmac-sha1"]], compression: [client2server: [:none, :"zlib@openssh.com", :zlib], server2client: [:none, :"zlib@openssh.com", :zlib]]], user_interaction: true, idle_time: :infinity, socket_options: [], modify_algorithms: :undefined, keyboard_interact_fun: :undefined, key_cb_options: [silently_accept_hosts: true, user: ~c"payout", connect_timeout: 30000], save_accepted_host: true, unexpectedfun: #Function<47.126434157/2 in :ssh_options.default/1>, max_log_item_len: 500, user: ~c"payout", dsa_pass_phrase: :"***", connect_timeout: 30000, internal_options: %{connection_sup: #PID<0.3219.0>, negotiation_timeout: 30000, user_pid: #PID<0.3214.0>}, pref_public_key_algs: [:"ssh-ed25519", :"ssh-ed448", :"ecdsa-sha2-nistp521", :"ecdsa-sha2-nistp384", :"ecdsa-sha2-nistp256", :"rsa-sha2-512", :"rsa-sha2-256"], id_string: ~c"Erlang/5.1.4.3", max_random_length_padding: 15, key_cb: {:ssh_file, []}, dh_gex_limits: {1024, 6144, 8192}, disconnectfun: #Function<45.126434157/1 in :ssh_options.default/1>, recv_ext_info: true, profile: :default, rsa_pass_phrase: :"***", user_dir_fun: :undefined, transport: {...}}, 425984, 65536, :undefined, #PID<0.3219.0>}, 0, :tcp, :gen_tcp, :tcp_closed, {:ssh, :client, {~c"127.0.0.1", {{127, 0, 0, 1}, 22}}, {{127, 0, 0, 1}, 37892}, {2, 0}, {2, 0}, ~c"SSH-2.0-Erlang/5.1.4.3", ~c"SSH-2.0-OpenSSH_9.6p1 Ubuntu-3ubuntu13.18", :"****", :"****", true, true, true, {:alg, :"curve25519-sha256", :"ssh-ed25519", :AEAD_AES_256_GCM, :AEAD_AES_256_GCM, :AEAD_AES_256_GCM, :AEAD_AES_256_GCM, :none, :none, :none, :none, true, true, true}, :AEAD_AES_256_GCM, :"****", :"****", :AEAD_AES_256_GCM, :"****", :"****", :AEAD_AES_256_GCM, :aes_256_gcm, :"****", 16, :"****", :AEAD_AES_256_GCM, :aes_256_gcm, :"****", 16, :"****", :none, :"****", :none, :"****", :none, :none, true, ...}, #Port<0.36>, :"****", :"****", "", :undefined, :"****", 0, [], :"****"}}]] Callback mode: :handle_event_function Postponed events: [] Last event: {:internal, {:ssh_msg_userauth_failure, ~c"publickey,password", false}} Queued events: [] State: [data: [{~c"State", {:data, #PID<0.3214.0>, ~c"payout", {:connection, [], #Reference<0.4121046216.3555328001.171127>, 0, :undefined, %{ecdsa_pass_phrase: :"***", silently_accept_hosts: true, send_ext_info: true, user_dir: false, auth_methods: ~c"publickey,keyboard-interactive,password", tstflg: [], ssh_msg_debug_fun: #Function<49.126434157/4 in :ssh_options.default/1>, vsn: {2, 0}, quiet_mode: false, password: :"***", rekey_limit: {3600000, 1024000000}, preferred_algorithms: [kex: [:"curve25519-sha256", :"curve25519-sha256@libssh.org", :"curve448-sha512", :"ecdh-sha2-nistp521", :"ecdh-sha2-nistp384", :"ecdh-sha2-nistp256", :"diffie-hellman-group-exchange-sha256", :"diffie-hellman-group16-sha512", :"diffie-hellman-group18-sha512", :"diffie-hellman-group14-sha256"], public_key: [:"ssh-ed25519", :"ssh-ed448", :"ecdsa-sha2-nistp521", :"ecdsa-sha2-nistp384", :"ecdsa-sha2-nistp256", :"rsa-sha2-512", :"rsa-sha2-256"], cipher: [client2server: [:"aes256-gcm@openssh.com", :"aes256-ctr", :"aes192-ctr", :"aes128-gcm@openssh.com", :"aes128-ctr", :"chacha20-poly1305@openssh.com", :"aes256-cbc", :"aes192-cbc", :"aes128-cbc", :"3des-cbc"], server2client: [:"aes256-gcm@openssh.com", :"aes256-ctr", :"aes192-ctr", :"aes128-gcm@openssh.com", :"aes128-ctr", :"chacha20-poly1305@openssh.com", :"aes256-cbc", :"aes192-cbc", :"aes128-cbc", :"3des-cbc"]], mac: [client2server: [:"hmac-sha2-512-etm@openssh.com", :"hmac-sha2-256-etm@openssh.com", :"hmac-sha2-512", :"hmac-sha2-256", :"hmac-sha1-etm@openssh.com", :"hmac-sha1"], server2client: [:"hmac-sha2-512-etm@openssh.com", :"hmac-sha2-256-etm@openssh.com", :"hmac-sha2-512", :"hmac-sha2-256", :"hmac-sha1-etm@openssh.com", :"hmac-sha1"]], compression: [client2server: [:none, :"zlib@openssh.com", :zlib], server2client: [:none, :"zlib@openssh.com", :zlib]]], user_interaction: true, idle_time: :infinity, socket_options: [], modify_algorithms: :undefined, keyboard_interact_fun: :undefined, key_cb_options: [silently_accept_hosts: true, user: ~c"payout", connect_timeout: 30000], save_accepted_host: true, unexpectedfun: #Function<47.126434157/2 in :ssh_options.default/1>, max_log_item_len: 500, user: ~c"payout", dsa_pass_phrase: :"***", connect_timeout: 30000, internal_options: %{connection_sup: #PID<0.3219.0>, negotiation_timeout: 30000, user_pid: #PID<0.3214.0>}, pref_public_key_algs: [:"ssh-ed25519", :"ssh-ed448", :"ecdsa-sha2-nistp521", :"ecdsa-sha2-nistp384", :"ecdsa-sha2-nistp256", :"rsa-sha2-512", :"rsa-sha2-256"], id_string: ~c"Erlang/5.1.4.3", max_random_length_padding: 15, key_cb: {:ssh_file, []}, dh_gex_limits: {1024, 6144, 8192}, disconnectfun: #Function<45.126434157/1 in :ssh_options.default/1>, recv_ext_info: true, profile: :default, rsa_pass_phrase: :"***", user_dir_fun: :undefined, transport: {...}}, 425984, 65536, :undefined, #PID<0.3219.0>}, 0, :tcp, :gen_tcp, :tcp_closed, {:ssh, :client, {~c"127.0.0.1", {{127, 0, 0, 1}, 22}}, {{127, 0, 0, 1}, 37892}, {2, 0}, {2, 0}, ~c"SSH-2.0-Erlang/5.1.4.3", ~c"SSH-2.0-OpenSSH_9.6p1 Ubuntu-3ubuntu13.18", :"****", :"****", true, true, true, {:alg, :"curve25519-sha256", :"ssh-ed25519", :AEAD_AES_256_GCM, :AEAD_AES_256_GCM, :AEAD_AES_256_GCM, :AEAD_AES_256_GCM, :none, :none, :none, :none, true, true, true}, :AEAD_AES_256_GCM, :"****", :"****", :AEAD_AES_256_GCM, :"****", :"****", :AEAD_AES_256_GCM, :aes_256_gcm, :"****", 16, :"****", :AEAD_AES_256_GCM, :aes_256_gcm, :"****", 16, :"****", :none, :"****", :none, :"****", :none, :none, true, ...}, #Port<0.36>, :"****", :"****", "", :undefined, :"****", 0, [], :"****"}}]] [2026-09-02 11:39:41.362] [ERROR] [Bank.SftpClient] Upload failed: {:badarg, [{:unicode, :characters_to_binary, [error: :enotsup], [file: ~c"unicode.erl", line: 895, error_info: %{module: :erl_stdlib_errors}]}, {:ssh_auth, :password_msg, 1, [file: ~c"ssh_auth.erl", line: 121]}, {:ssh_auth, :userauth_request_msg, 1, [file: ~c"ssh_auth.erl", line: 59]}, {:ssh_fsm_userauth_client, :handle_event, 4, [file: ~c"ssh_fsm_userauth_client.erl", line: 92]}, {:gen_statem, :loop_state_callback, 11, [file: ~c"gen_statem.erl", line: 1397]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 241]}]} [2026-09-02 11:39:41.363] [ERROR] [PayoutTransmitter] Transmission failed batch_id=181: {:badarg, [{:unicode, :characters_to_binary, [error: :enotsup], [file: ~c"unicode.erl", line: 895, error_info: %{module: :erl_stdlib_errors}]}, {:ssh_auth, :password_msg, 1, [file: ~c"ssh_auth.erl", line: 121]}, {:ssh_auth, :userauth_request_msg, 1, [file: ~c"ssh_auth.erl", line: 59]}, {:ssh_fsm_userauth_client, :handle_event, 4, [file: ~c"ssh_fsm_userauth_client.erl", line: 92]}, {:gen_statem, :loop_state_callback, 11, [file: ~c"gen_statem.erl", line: 1397]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 241]}]} [2026-09-02 11:39:41.365] [DEBUG] QUERY ERROR source="payout_batches" db=0.6ms queue=0.7ms idle=170.5ms UPDATE `payout_batches` SET `status` = ?, `failure_reason` = ?, `updated_at` = ? WHERE `id` = ? ["failed", "{:badarg, [{:unicode, :characters_to_binary, [error: :enotsup], [file: ~c\"unicode.erl\", line: 895, error_info: %{module: :erl_stdlib_errors}]}, {:ssh_auth, :password_msg, 1, [file: ~c\"ssh_auth.erl\", line: 121]}, {:ssh_auth, :userauth_request_msg, 1, [file: ~c\"ssh_auth.erl\", line: 59]}, {:ssh_fsm_userauth_client, :handle_event, 4, [file: ~c\"ssh_fsm_userauth_client.erl\", line: 92]}, {:gen_statem, :loop_state_callback, 11, [file: ~c\"gen_statem.erl\", line: 1397]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c\"proc_lib.erl\", line: 241]}]}", ~N[2026-09-02 11:39:41], 181] ↳ anonymous fn/2 in SettlementCore.Bank.PayoutTransmitter.transmit/1, at: lib/settlement_core/bank/payout_transmitter.ex:48 [2026-09-02 11:39:59.723] [INFO ] [PayoutTransmissionWorker] Starting payout for mis_id=326 [2026-09-02 11:39:59.724] [DEBUG] QUERY OK source="settlement_mis" db=0.9ms idle=45.9ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 WHERE (s0.`id` = ?) [326] ↳ SettlementCore.Workers.PayoutTransmissionWorker.perform/1, at: lib/settlement_core/workers/payout_transmission_worker.ex:41 [2026-09-02 11:39:59.726] [DEBUG] QUERY OK source="payout_batches" db=1.4ms idle=1.7ms SELECT p0.`id`, p0.`settlement_mis_id`, p0.`payout_date`, p0.`batch_type`, p0.`total_merchants`, p0.`total_items`, p0.`total_amount`, p0.`currency`, p0.`file_path`, p0.`file_name`, p0.`encryption_method`, p0.`batch_reference`, p0.`encrypted_file_path`, p0.`file_hash`, p0.`encryption_key_ref`, p0.`generated_by`, p0.`generated_at`, p0.`transmission_method`, p0.`status`, p0.`transmitted_at`, p0.`transmission_reference`, p0.`bank_confirmation_ref`, p0.`failure_reason`, p0.`confirmed_at`, p0.`confirmed_item_count`, p0.`rejected_item_count`, p0.`inserted_at`, p0.`updated_at` FROM `payout_batches` AS p0 WHERE (p0.`settlement_mis_id` = ?) [326] ↳ SettlementCore.PayoutGenerator.generate_for_mis/1, at: lib/settlement_core/payout_generator.ex:54 [2026-09-02 11:39:59.726] [INFO ] [PayoutGenerator] Batch(es) already exist for mis_id=326: [181, 182] [2026-09-02 11:39:59.730] [DEBUG] QUERY OK source="settlement_mis_items" db=1.9ms idle=2.0ms SELECT count(s0.`id`) FROM `settlement_mis_items` AS s0 WHERE ((s0.`settlement_mis_id` = ?) AND (s0.`mpr_sent` != TRUE)) [326] ↳ SettlementCore.Workers.PayoutTransmissionWorker.enqueue_mpr_if_needed/1, at: lib/settlement_core/workers/payout_transmission_worker.ex:93 [2026-09-02 11:39:59.735] [INFO ] [PayoutTransmissionWorker] MPR enqueue result for mis_id=326: {:ok, %Oban.Job{__meta__: #Ecto.Schema.Metadata<:loaded, "oban_jobs">, id: 39231, state: "executing", queue: "mailers", worker: "SettlementCore.Workers.MprDispatchWorker", args: %{"mis_id" => 326}, meta: %{}, tags: [], errors: [%{"at" => "2026-09-02T11:39:40.997005Z", "attempt" => 1, "error" => "** (Ecto.MultipleResultsError) expected at most one result but got 2 in query:\n\nfrom p0 in SettlementCore.PayoutBatch,\n where: p0.settlement_mis_id == ^326\n\n (ecto 3.13.5) lib/ecto/repo/queryable.ex:166: Ecto.Repo.Queryable.one/3\n (settlement_core 0.1.0) lib/settlement_core/workers/mpr_dispatch_worker.ex:61: SettlementCore.Workers.MprDispatchWorker.do_perform/3\n (oban 2.20.3) lib/oban/queue/executor.ex:145: Oban.Queue.Executor.perform/1\n (oban 2.20.3) lib/oban/queue/executor.ex:77: Oban.Queue.Executor.call/1\n (elixir 1.17.3) lib/task/supervised.ex:101: Task.Supervised.invoke_mfa/2\n (elixir 1.17.3) lib/task/supervised.ex:36: Task.Supervised.reply/4\n"}], attempt: 2, attempted_by: ["demo", "2365dd3e-5a36-4975-ad4c-c8c95c87d57e"], max_attempts: 3, priority: 0, attempted_at: ~U[2026-09-02 11:39:59.551356Z], cancelled_at: nil, completed_at: nil, discarded_at: nil, inserted_at: ~U[2026-09-02 11:39:40.764464Z], scheduled_at: ~U[2026-09-02 11:39:58.997013Z], conf: nil, conflict?: true, replace: nil, unique: nil, unsaved_error: nil}} [2026-09-02 11:39:59.735] [INFO ] [PayoutTransmitter] Transmitting batch_id=181 method=SFTP [2026-09-02 11:39:59.738] [DEBUG] QUERY OK source="payout_items" db=1.8ms idle=7.3ms SELECT p0.`id`, p0.`payout_batch_id`, p0.`settlement_mis_id`, p0.`settlement_date`, p0.`merchant_mid`, p0.`merchant_id`, p0.`merchant_name`, p0.`merchant_ref_number`, p0.`bank_name`, p0.`iban`, p0.`account_number`, p0.`bank_code`, p0.`currency`, p0.`gross_amount`, p0.`total_deductions`, p0.`payout_amount`, p0.`transaction_count`, p0.`net_settlement_amount`, p0.`total_adjustments_credit`, p0.`total_adjustments_debit`, p0.`final_payout_amount`, p0.`total_gross_amount`, p0.`total_mdr_amount`, p0.`total_vat_amount`, p0.`status`, p0.`bank_transfer_ref`, p0.`confirmed_at`, p0.`rejection_reason`, p0.`rejected_at`, p0.`re_initiated_at`, p0.`re_initiated_batch_id`, p0.`inserted_at`, p0.`updated_at` FROM `payout_items` AS p0 WHERE (p0.`payout_batch_id` = ?) ORDER BY p0.`merchant_mid` [181] ↳ SettlementCore.PayoutGenerator.generate_payout_csv/1, at: lib/settlement_core/payout_generator.ex:97 [2026-09-02 11:39:59.777] [DEBUG] QUERY OK source="tid_masters" db=1.0ms queue=38.2ms idle=4.9ms SELECT t0.`mid`, a3.`line1`, a3.`country`, t0.`registered_email` FROM `tid_masters` AS t0 LEFT OUTER JOIN `brands` AS b1 ON b1.`merchant_reference_id` COLLATE utf8mb4_unicode_ci = t0.`merchant_ref_number` COLLATE utf8mb4_unicode_ci LEFT OUTER JOIN `stores` AS s2 ON s2.`brand_id` = b1.`id` LEFT OUTER JOIN `addresses` AS a3 ON a3.`id` = s2.`address_id` WHERE (t0.`mid` IN (?,?) OR t0.`merchant_ref_number` IN (?,?)) ["419926360000000", "425590250000000", "419926360000000", "425590250000000"] ↳ SettlementCore.PayoutGenerator.prefetch_merchant_details/1, at: lib/settlement_core/payout_generator.ex:484 [2026-09-02 11:39:59.782] [INFO ] [FileEncryptor] Encrypted /tmp/payout_files_sunny/payout_2026-08-31_181.csv → /tmp/payout_files_sunny/payout_2026-08-31_181.csv.enc key_ref=default_v1 [2026-09-02 11:39:59.782] [INFO ] [Bank.SftpClient] Uploading /tmp/payout_files_sunny/payout_2026-08-31_181.csv.enc → sftp://localhost/incoming/payout_2026-08-31_181.csv.enc [2026-09-02 11:39:59.802] [DEBUG] client will use strict KEX ordering [2026-09-02 11:39:59.944] [ERROR] Erlang SSH :client version: 5.1.4.3 (OpenSSL 3.0.13 30 Jan 2024). Address: 127.0.0.1:36674 Peer server version: ~c"SSH-2.0-OpenSSH_9.6p1 Ubuntu-3ubuntu13.18" Peer address: 127.0.0.1:22 badarg [2026-09-02 11:39:59.947] [INFO ] Erlang SSH :client version: 5.1.4.3 (OpenSSL 3.0.13 30 Jan 2024). Address: 127.0.0.1:36674 Peer server version: ~c"SSH-2.0-OpenSSH_9.6p1 Ubuntu-3ubuntu13.18" Peer address: 127.0.0.1:22 Disconnects with code = 11 [RFC4253 11.1]: Internal error State = {userauth,client} Module = ssh_connection_handler, Line = 1424. Details: Reason: badarg [2026-09-02 11:39:59.950] [ERROR] GenStateMachine #PID<0.3227.0> terminating ** (ArgumentError) errors were found at the given arguments: * 1st argument: not valid character data (an iodata term) (stdlib 5.2.3.2) unicode.erl:895: :unicode.characters_to_binary({:error, :enotsup}) (ssh 5.1.4.3) ssh_auth.erl:121: :ssh_auth.password_msg/1 (ssh 5.1.4.3) ssh_auth.erl:59: :ssh_auth.userauth_request_msg/1 (ssh 5.1.4.3) ssh_fsm_userauth_client.erl:92: :ssh_fsm_userauth_client.handle_event/4 (stdlib 5.2.3.2) gen_statem.erl:1397: :gen_statem.loop_state_callback/11 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 State: [data: [{~c"State", {:data, #PID<0.3223.0>, ~c"payout", {:connection, [], #Reference<0.4121046216.3554803715.169175>, 0, :undefined, %{ecdsa_pass_phrase: :"***", silently_accept_hosts: true, send_ext_info: true, user_dir: false, auth_methods: ~c"publickey,keyboard-interactive,password", tstflg: [], ssh_msg_debug_fun: #Function<49.126434157/4 in :ssh_options.default/1>, vsn: {2, 0}, quiet_mode: false, password: :"***", rekey_limit: {3600000, 1024000000}, preferred_algorithms: [kex: [:"curve25519-sha256", :"curve25519-sha256@libssh.org", :"curve448-sha512", :"ecdh-sha2-nistp521", :"ecdh-sha2-nistp384", :"ecdh-sha2-nistp256", :"diffie-hellman-group-exchange-sha256", :"diffie-hellman-group16-sha512", :"diffie-hellman-group18-sha512", :"diffie-hellman-group14-sha256"], public_key: [:"ssh-ed25519", :"ssh-ed448", :"ecdsa-sha2-nistp521", :"ecdsa-sha2-nistp384", :"ecdsa-sha2-nistp256", :"rsa-sha2-512", :"rsa-sha2-256"], cipher: [client2server: [:"aes256-gcm@openssh.com", :"aes256-ctr", :"aes192-ctr", :"aes128-gcm@openssh.com", :"aes128-ctr", :"chacha20-poly1305@openssh.com", :"aes256-cbc", :"aes192-cbc", :"aes128-cbc", :"3des-cbc"], server2client: [:"aes256-gcm@openssh.com", :"aes256-ctr", :"aes192-ctr", :"aes128-gcm@openssh.com", :"aes128-ctr", :"chacha20-poly1305@openssh.com", :"aes256-cbc", :"aes192-cbc", :"aes128-cbc", :"3des-cbc"]], mac: [client2server: [:"hmac-sha2-512-etm@openssh.com", :"hmac-sha2-256-etm@openssh.com", :"hmac-sha2-512", :"hmac-sha2-256", :"hmac-sha1-etm@openssh.com", :"hmac-sha1"], server2client: [:"hmac-sha2-512-etm@openssh.com", :"hmac-sha2-256-etm@openssh.com", :"hmac-sha2-512", :"hmac-sha2-256", :"hmac-sha1-etm@openssh.com", :"hmac-sha1"]], compression: [client2server: [:none, :"zlib@openssh.com", :zlib], server2client: [:none, :"zlib@openssh.com", :zlib]]], user_interaction: true, idle_time: :infinity, socket_options: [], modify_algorithms: :undefined, keyboard_interact_fun: :undefined, key_cb_options: [silently_accept_hosts: true, user: ~c"payout", connect_timeout: 30000], save_accepted_host: true, unexpectedfun: #Function<47.126434157/2 in :ssh_options.default/1>, max_log_item_len: 500, user: ~c"payout", dsa_pass_phrase: :"***", connect_timeout: 30000, internal_options: %{connection_sup: #PID<0.3226.0>, negotiation_timeout: 30000, user_pid: #PID<0.3223.0>}, pref_public_key_algs: [:"ssh-ed25519", :"ssh-ed448", :"ecdsa-sha2-nistp521", :"ecdsa-sha2-nistp384", :"ecdsa-sha2-nistp256", :"rsa-sha2-512", :"rsa-sha2-256"], id_string: ~c"Erlang/5.1.4.3", max_random_length_padding: 15, key_cb: {:ssh_file, []}, dh_gex_limits: {1024, 6144, 8192}, disconnectfun: #Function<45.126434157/1 in :ssh_options.default/1>, recv_ext_info: true, profile: :default, rsa_pass_phrase: :"***", user_dir_fun: :undefined, transport: {...}}, 425984, 65536, :undefined, #PID<0.3226.0>}, 0, :tcp, :gen_tcp, :tcp_closed, {:ssh, :client, {~c"127.0.0.1", {{127, 0, 0, 1}, 22}}, {{127, 0, 0, 1}, 36674}, {2, 0}, {2, 0}, ~c"SSH-2.0-Erlang/5.1.4.3", ~c"SSH-2.0-OpenSSH_9.6p1 Ubuntu-3ubuntu13.18", :"****", :"****", true, true, true, {:alg, :"curve25519-sha256", :"ssh-ed25519", :AEAD_AES_256_GCM, :AEAD_AES_256_GCM, :AEAD_AES_256_GCM, :AEAD_AES_256_GCM, :none, :none, :none, :none, true, true, true}, :AEAD_AES_256_GCM, :"****", :"****", :AEAD_AES_256_GCM, :"****", :"****", :AEAD_AES_256_GCM, :aes_256_gcm, :"****", 16, :"****", :AEAD_AES_256_GCM, :aes_256_gcm, :"****", 16, :"****", :none, :"****", :none, :"****", :none, :none, true, ...}, #Port<0.37>, :"****", :"****", "", :undefined, :"****", 0, [], :"****"}}]] Callback mode: :handle_event_function Postponed events: [] Last event: {:internal, {:ssh_msg_userauth_failure, ~c"publickey,password", false}} Queued events: [] State: [data: [{~c"State", {:data, #PID<0.3223.0>, ~c"payout", {:connection, [], #Reference<0.4121046216.3554803715.169175>, 0, :undefined, %{ecdsa_pass_phrase: :"***", silently_accept_hosts: true, send_ext_info: true, user_dir: false, auth_methods: ~c"publickey,keyboard-interactive,password", tstflg: [], ssh_msg_debug_fun: #Function<49.126434157/4 in :ssh_options.default/1>, vsn: {2, 0}, quiet_mode: false, password: :"***", rekey_limit: {3600000, 1024000000}, preferred_algorithms: [kex: [:"curve25519-sha256", :"curve25519-sha256@libssh.org", :"curve448-sha512", :"ecdh-sha2-nistp521", :"ecdh-sha2-nistp384", :"ecdh-sha2-nistp256", :"diffie-hellman-group-exchange-sha256", :"diffie-hellman-group16-sha512", :"diffie-hellman-group18-sha512", :"diffie-hellman-group14-sha256"], public_key: [:"ssh-ed25519", :"ssh-ed448", :"ecdsa-sha2-nistp521", :"ecdsa-sha2-nistp384", :"ecdsa-sha2-nistp256", :"rsa-sha2-512", :"rsa-sha2-256"], cipher: [client2server: [:"aes256-gcm@openssh.com", :"aes256-ctr", :"aes192-ctr", :"aes128-gcm@openssh.com", :"aes128-ctr", :"chacha20-poly1305@openssh.com", :"aes256-cbc", :"aes192-cbc", :"aes128-cbc", :"3des-cbc"], server2client: [:"aes256-gcm@openssh.com", :"aes256-ctr", :"aes192-ctr", :"aes128-gcm@openssh.com", :"aes128-ctr", :"chacha20-poly1305@openssh.com", :"aes256-cbc", :"aes192-cbc", :"aes128-cbc", :"3des-cbc"]], mac: [client2server: [:"hmac-sha2-512-etm@openssh.com", :"hmac-sha2-256-etm@openssh.com", :"hmac-sha2-512", :"hmac-sha2-256", :"hmac-sha1-etm@openssh.com", :"hmac-sha1"], server2client: [:"hmac-sha2-512-etm@openssh.com", :"hmac-sha2-256-etm@openssh.com", :"hmac-sha2-512", :"hmac-sha2-256", :"hmac-sha1-etm@openssh.com", :"hmac-sha1"]], compression: [client2server: [:none, :"zlib@openssh.com", :zlib], server2client: [:none, :"zlib@openssh.com", :zlib]]], user_interaction: true, idle_time: :infinity, socket_options: [], modify_algorithms: :undefined, keyboard_interact_fun: :undefined, key_cb_options: [silently_accept_hosts: true, user: ~c"payout", connect_timeout: 30000], save_accepted_host: true, unexpectedfun: #Function<47.126434157/2 in :ssh_options.default/1>, max_log_item_len: 500, user: ~c"payout", dsa_pass_phrase: :"***", connect_timeout: 30000, internal_options: %{connection_sup: #PID<0.3226.0>, negotiation_timeout: 30000, user_pid: #PID<0.3223.0>}, pref_public_key_algs: [:"ssh-ed25519", :"ssh-ed448", :"ecdsa-sha2-nistp521", :"ecdsa-sha2-nistp384", :"ecdsa-sha2-nistp256", :"rsa-sha2-512", :"rsa-sha2-256"], id_string: ~c"Erlang/5.1.4.3", max_random_length_padding: 15, key_cb: {:ssh_file, []}, dh_gex_limits: {1024, 6144, 8192}, disconnectfun: #Function<45.126434157/1 in :ssh_options.default/1>, recv_ext_info: true, profile: :default, rsa_pass_phrase: :"***", user_dir_fun: :undefined, transport: {...}}, 425984, 65536, :undefined, #PID<0.3226.0>}, 0, :tcp, :gen_tcp, :tcp_closed, {:ssh, :client, {~c"127.0.0.1", {{127, 0, 0, 1}, 22}}, {{127, 0, 0, 1}, 36674}, {2, 0}, {2, 0}, ~c"SSH-2.0-Erlang/5.1.4.3", ~c"SSH-2.0-OpenSSH_9.6p1 Ubuntu-3ubuntu13.18", :"****", :"****", true, true, true, {:alg, :"curve25519-sha256", :"ssh-ed25519", :AEAD_AES_256_GCM, :AEAD_AES_256_GCM, :AEAD_AES_256_GCM, :AEAD_AES_256_GCM, :none, :none, :none, :none, true, true, true}, :AEAD_AES_256_GCM, :"****", :"****", :AEAD_AES_256_GCM, :"****", :"****", :AEAD_AES_256_GCM, :aes_256_gcm, :"****", 16, :"****", :AEAD_AES_256_GCM, :aes_256_gcm, :"****", 16, :"****", :none, :"****", :none, :"****", :none, :none, true, ...}, #Port<0.37>, :"****", :"****", "", :undefined, :"****", 0, [], :"****"}}]] [2026-09-02 11:39:59.958] [ERROR] [Bank.SftpClient] Upload failed: {:badarg, [{:unicode, :characters_to_binary, [error: :enotsup], [file: ~c"unicode.erl", line: 895, error_info: %{module: :erl_stdlib_errors}]}, {:ssh_auth, :password_msg, 1, [file: ~c"ssh_auth.erl", line: 121]}, {:ssh_auth, :userauth_request_msg, 1, [file: ~c"ssh_auth.erl", line: 59]}, {:ssh_fsm_userauth_client, :handle_event, 4, [file: ~c"ssh_fsm_userauth_client.erl", line: 92]}, {:gen_statem, :loop_state_callback, 11, [file: ~c"gen_statem.erl", line: 1397]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 241]}]} [2026-09-02 11:39:59.958] [ERROR] [PayoutTransmitter] Transmission failed batch_id=181: {:badarg, [{:unicode, :characters_to_binary, [error: :enotsup], [file: ~c"unicode.erl", line: 895, error_info: %{module: :erl_stdlib_errors}]}, {:ssh_auth, :password_msg, 1, [file: ~c"ssh_auth.erl", line: 121]}, {:ssh_auth, :userauth_request_msg, 1, [file: ~c"ssh_auth.erl", line: 59]}, {:ssh_fsm_userauth_client, :handle_event, 4, [file: ~c"ssh_fsm_userauth_client.erl", line: 92]}, {:gen_statem, :loop_state_callback, 11, [file: ~c"gen_statem.erl", line: 1397]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 241]}]} [2026-09-02 11:39:59.961] [DEBUG] QUERY ERROR source="payout_batches" db=0.3ms queue=1.8ms idle=221.2ms UPDATE `payout_batches` SET `status` = ?, `failure_reason` = ?, `updated_at` = ? WHERE `id` = ? ["failed", "{:badarg, [{:unicode, :characters_to_binary, [error: :enotsup], [file: ~c\"unicode.erl\", line: 895, error_info: %{module: :erl_stdlib_errors}]}, {:ssh_auth, :password_msg, 1, [file: ~c\"ssh_auth.erl\", line: 121]}, {:ssh_auth, :userauth_request_msg, 1, [file: ~c\"ssh_auth.erl\", line: 59]}, {:ssh_fsm_userauth_client, :handle_event, 4, [file: ~c\"ssh_fsm_userauth_client.erl\", line: 92]}, {:gen_statem, :loop_state_callback, 11, [file: ~c\"gen_statem.erl\", line: 1397]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c\"proc_lib.erl\", line: 241]}]}", ~N[2026-09-02 11:39:59], 181] ↳ anonymous fn/2 in SettlementCore.Bank.PayoutTransmitter.transmit/1, at: lib/settlement_core/bank/payout_transmitter.ex:48 [2026-09-02 11:40:17.055] [INFO ] Running offline device check... [2026-09-02 11:40:17.055] [INFO ] Starting offline device check... [2026-09-02 11:40:17.064] [DEBUG] QUERY OK source="tms_terminals" db=2.3ms queue=2.9ms idle=335.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1234 [2026-09-02 11:40:17.074] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.8ms idle=225.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [1] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:40:17.079] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms queue=3.2ms idle=10.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:40:17.082] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms queue=0.3ms idle=6.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:40:17.084] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=3.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:40:17.088] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.3ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:40:17.091] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms idle=4.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:40:17.093] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=3.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:40:17.094] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:40:17.095] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:40:17.099] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.3ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:40:17.104] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.7ms idle=4.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:40:17.109] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms queue=3.2ms idle=5.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:40:17.115] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms queue=2.0ms idle=7.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:40:17.119] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.4ms queue=0.1ms idle=5.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:40:17.127] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.1ms queue=0.1ms idle=4.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:40:17.129] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms queue=0.2ms idle=9.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:40:17.138] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.0ms queue=0.1ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:40:17.143] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.2ms idle=8.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:40:17.145] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms queue=0.4ms idle=5.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:40:17.152] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.2ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:40:17.164] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.6ms idle=8.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:40:17.168] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.7ms idle=12.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:40:17.178] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.0ms idle=6.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:40:17.179] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=0.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:40:17.185] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms idle=4.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:40:17.190] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms queue=0.7ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:40:17.191] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:40:17.194] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.9ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:40:17.198] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=2.6ms idle=0.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:40:17.199] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=0.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:40:17.201] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms queue=0.2ms idle=0.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:40:17.203] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:40:17.204] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.1ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:40:17.205] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:40:17.206] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:40:17.207] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:40:17.210] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.4ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:40:17.215] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=4.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:40:17.217] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms idle=0.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:40:17.220] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:40:17.225] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.1ms idle=0.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:40:17.226] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=0.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:40:17.231] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=3.5ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:40:17.239] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=9.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:40:17.246] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.0ms idle=8.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:40:17.250] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms idle=7.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:40:17.253] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.7ms idle=5.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:40:17.258] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.3ms idle=5.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:40:17.264] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.8ms idle=5.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:40:17.267] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.7ms idle=5.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:40:17.269] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=3.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:40:17.270] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:40:17.272] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [82] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:40:17.282] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.4ms idle=2.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [83] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:40:17.283] [INFO ] Offline device check completed. Found 52 offline devices, updated 0 statuses. [2026-09-02 11:40:17.283] [INFO ] Offline device check completed successfully [2026-09-02 11:45:16.809] [INFO ] Performing scheduled filter cache refresh... [2026-09-02 11:45:16.814] [DEBUG] QUERY OK source="tms_terminals" db=4.0ms queue=0.1ms idle=1359.3ms SELECT t0.`area`, t0.`vendor`, t0.`model` FROM `tms_terminals` AS t0 WHERE ((NOT (t0.`area` IS NULL) OR NOT (t0.`vendor` IS NULL)) OR NOT (t0.`model` IS NULL)) [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_terminal_filter_data/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:153 [2026-09-02 11:45:16.821] [DEBUG] QUERY OK source="filter_usage" db=5.9ms idle=357.4ms SELECT f0.`filter_type`, f0.`filter_value`, coalesce(sum(f0.`usage_count`), 0) FROM `filter_usage` AS f0 GROUP BY f0.`filter_type`, f0.`filter_value` [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_usage_statistics/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:190 [2026-09-02 11:45:16.821] [INFO ] Filter cache rebuilt: 0 areas, 5 vendors, 8 models [2026-09-02 11:45:17.285] [INFO ] Running offline device check... [2026-09-02 11:45:17.285] [INFO ] Starting offline device check... [2026-09-02 11:45:17.287] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms idle=471.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1234 [2026-09-02 11:45:17.291] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms idle=467.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [1] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:45:17.294] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.0ms idle=3.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:45:17.298] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms queue=2.8ms idle=3.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:45:17.300] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=4.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:45:17.304] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.2ms queue=0.1ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:45:17.307] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms queue=1.7ms idle=4.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:45:17.312] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.7ms idle=4.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:45:17.312] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=4.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:45:17.315] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:45:17.316] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=2.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:45:17.321] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.4ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:45:17.326] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.0ms idle=5.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:45:17.329] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.1ms idle=5.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:45:17.338] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.3ms queue=0.1ms idle=9.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:45:17.343] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.4ms queue=0.1ms idle=8.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:45:17.347] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=8.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:45:17.351] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.8ms idle=4.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:45:17.361] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.8ms queue=1.1ms idle=4.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:45:17.364] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.4ms queue=0.1ms idle=11.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:45:17.365] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=4.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:45:17.369] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.6ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:45:17.379] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.1ms queue=5.1ms idle=4.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:45:17.390] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.9ms idle=10.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:45:17.392] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=11.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:45:17.395] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms idle=2.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:45:17.397] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=1.0ms idle=3.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:45:17.402] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.0ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:45:17.403] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=5.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:45:17.405] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:45:17.407] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:45:17.415] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.8ms queue=0.7ms idle=3.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:45:17.419] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.2ms queue=0.1ms idle=8.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:45:17.421] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=4.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:45:17.424] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:45:17.427] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=2.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:45:17.428] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=3.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:45:17.430] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=3.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:45:17.433] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.3ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:45:17.437] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.2ms idle=2.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:45:17.441] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.3ms idle=4.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:45:17.447] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.7ms idle=4.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:45:17.451] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.5ms queue=0.1ms idle=6.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:45:17.457] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.5ms idle=4.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:45:17.463] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.6ms queue=0.7ms idle=6.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:45:17.465] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms queue=0.1ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:45:17.467] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms idle=0.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:45:17.469] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:45:17.474] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.9ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:45:17.476] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms idle=5.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:45:17.480] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=6.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:45:17.482] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=4.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:45:17.484] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms queue=0.9ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:45:17.488] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.4ms idle=2.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [82] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:45:17.503] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=13.7ms idle=4.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [83] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:45:17.503] [INFO ] Offline device check completed. Found 52 offline devices, updated 0 statuses. [2026-09-02 11:45:17.503] [INFO ] Offline device check completed successfully [2026-09-02 11:45:25.644] [INFO ] [Ysp.Scheduler] Started. SFTP in 15h 14m, MIS in 20h 14m [2026-09-02 11:45:25.756] [INFO ] :alarm_handler: {:set, {:system_memory_high_watermark, []}} [2026-09-02 11:45:25.799] [INFO ] :alarm_handler: {:set, {{:disk_almost_full, ~c"/"}, []}} [2026-09-02 11:45:29.617] [INFO ] Terminal Event Listener started and listening to events [2026-09-02 11:45:29.627] [INFO ] Rule Validation Worker started - will run every hour [2026-09-02 11:45:29.633] [INFO ] Building initial filter cache... [2026-09-02 11:45:29.679] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms queue=2.6ms idle=1167.0ms SELECT t0.`area`, t0.`vendor`, t0.`model` FROM `tms_terminals` AS t0 WHERE ((NOT (t0.`area` IS NULL) OR NOT (t0.`vendor` IS NULL)) OR NOT (t0.`model` IS NULL)) [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_terminal_filter_data/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:153 [2026-09-02 11:45:29.716] [DEBUG] QUERY OK source="filter_usage" db=0.3ms queue=0.8ms idle=210.9ms SELECT f0.`filter_type`, f0.`filter_value`, coalesce(sum(f0.`usage_count`), 0) FROM `filter_usage` AS f0 GROUP BY f0.`filter_type`, f0.`filter_value` [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_usage_statistics/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:190 [2026-09-02 11:45:29.716] [INFO ] Filter cache rebuilt: 0 areas, 5 vendors, 8 models [2026-09-02 11:45:29.826] [INFO ] Device phoenix_client_tms_apps_vidya disconnected [2026-09-02 11:45:29.838] [INFO ] Device phoenix_client_tms_apps_vidya connected [2026-09-02 11:45:29.991] [INFO ] === MPR dispatch === [2026-09-02 11:45:29.995] [INFO ] [MprDispatchWorker] Dispatching MPRs for mis_id=326 [2026-09-02 11:45:30.205] [INFO ] Device phoenix_client_tms_apps_vidya connected [2026-09-02 11:45:30.232] [ERROR] Socket closed before we handed it to the receiver [2026-09-02 11:45:30.232] [INFO ] Device phoenix_client_tms_apps_vidya disconnected [2026-09-02 11:45:30.232] [DEBUG] QUERY OK source="settlement_mis" db=76.8ms queue=5.0ms idle=462.5ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 WHERE (s0.`id` = ?) [326] ↳ SettlementCore.Workers.MprDispatchWorker.perform/1, at: lib/settlement_core/workers/mpr_dispatch_worker.ex:47 [2026-09-02 11:45:30.279] [DEBUG] QUERY OK source="settlement_mis_items" db=1.4ms queue=9.6ms idle=552.7ms SELECT s0.`id`, s0.`settlement_mis_id`, s0.`core_transaction_id`, s0.`merchant_mid`, s0.`merchant_id`, s0.`merchant_name`, s0.`merchant_ref_number`, s0.`bank_name`, s0.`iban`, s0.`account_number`, s0.`settlement_date`, s0.`rrn`, s0.`tid`, s0.`auth_number`, s0.`transaction_date`, s0.`transaction_type`, s0.`scheme_name`, s0.`card_type_code`, s0.`gross_amount`, s0.`mdr_percentage_rate`, s0.`mdr_amount`, s0.`vat_rate`, s0.`vat_amount`, s0.`interchange_fee`, s0.`adjustment_amount`, s0.`ar_recovery`, s0.`net_payable`, s0.`transaction_count`, s0.`total_gross_amount`, s0.`total_mdr_amount`, s0.`total_vat_amount`, s0.`total_interchange_fee`, s0.`total_net_settlement_amount`, s0.`risk_status`, s0.`exception_type`, s0.`mpr_sent`, s0.`margin_contribution`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis_items` AS s0 WHERE (s0.`settlement_mis_id` = ?) ORDER BY s0.`merchant_mid`, s0.`card_type_code` [326] ↳ SettlementCore.Workers.MprDispatchWorker.perform/1, at: lib/settlement_core/workers/mpr_dispatch_worker.ex:48 [2026-09-02 11:45:30.315] [DEBUG] QUERY OK source="payout_items" db=1.0ms queue=2.6ms idle=101.3ms SELECT p0.`merchant_mid`, p1.`batch_reference` FROM `payout_items` AS p0 INNER JOIN `payout_batches` AS p1 ON p1.`id` = p0.`payout_batch_id` WHERE (p0.`settlement_mis_id` = ?) [326] ↳ SettlementCore.Workers.MprDispatchWorker.do_perform/3, at: lib/settlement_core/workers/mpr_dispatch_worker.ex:72 [2026-09-02 11:45:30.397] [DEBUG] QUERY OK source="core_transactions" db=1.1ms queue=1.6ms idle=100.6ms SELECT DISTINCT c0.`merchant_mid`, coalesce(t1.`merchant_name_legal`, t1.`merchant_name_dba`) FROM `core_transactions` AS c0 INNER JOIN `tid_masters` AS t1 ON t1.`mid` = c0.`merchant_mid` WHERE (DATE(c0.`transaction_datetime`) = ?) AND ((c0.`risk_hold` = TRUE) OR (c0.`settlement_status` = 'exception_hold')) AND (NOT (c0.`merchant_mid` IN (SELECT DISTINCT ss0.`merchant_mid` FROM `settlement_mis_items` AS ss0 WHERE (ss0.`settlement_mis_id` = ?)))) [~D[2026-08-31], 326] ↳ SettlementCore.Workers.MprDispatchWorker.do_perform/3, at: lib/settlement_core/workers/mpr_dispatch_worker.ex:85 [2026-09-02 11:45:30.400] [DEBUG] QUERY OK source="tid_masters" db=0.6ms queue=2.2ms idle=83.2ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` = ?) ["419926360000000"] ↳ SettlementCore.Workers.MprDispatchWorker.dispatch_mpr_for_merchant/4, at: lib/settlement_core/workers/mpr_dispatch_worker.ex:114 [2026-09-02 11:45:30.425] [DEBUG] QUERY OK source="merchant_adjustments" db=0.9ms queue=1.1ms idle=39.8ms SELECT m0.`id`, m0.`merchant_mid`, m0.`merchant_name`, m0.`adjustment_date`, m0.`debit_credit`, m0.`amount`, m0.`currency`, m0.`adjustment_type`, m0.`description`, m0.`settlement_mis_id`, m0.`status`, m0.`applied_at`, m0.`cancelled_at`, m0.`cancel_reason`, m0.`approval_status`, m0.`level1_reviewed_by`, m0.`level1_reviewed_at`, m0.`level2_approved_by`, m0.`level2_approved_at`, m0.`rejected_by`, m0.`rejected_at`, m0.`rejection_reason`, m0.`created_by`, m0.`updated_by`, m0.`inserted_at`, m0.`updated_at` FROM `merchant_adjustments` AS m0 WHERE (m0.`merchant_mid` = ?) AND (m0.`adjustment_date` = ?) AND (m0.`approval_status` = 'approved') ["419926360000000", ~D[2026-08-31]] ↳ SettlementCore.Workers.MprDispatchWorker.fetch_merchant_adjustment_breakdown/2, at: lib/settlement_core/workers/mpr_dispatch_worker.ex:240 [2026-09-02 11:45:30.429] [DEBUG] QUERY OK source="core_transactions" db=0.9ms queue=0.8ms idle=25.2ms SELECT c0.`id`, c0.`source_type`, c0.`source_ref_id`, c0.`settlement_batch_id`, c0.`rrn`, c0.`tid`, c0.`auth_number`, c0.`stan`, c0.`invoice_number`, c0.`batch_number`, c0.`merchant_mid`, c0.`merchant_id`, c0.`merchant_ref_number`, c0.`transaction_amount`, c0.`transaction_currency`, c0.`transaction_type`, c0.`transaction_datetime`, c0.`masked_pan`, c0.`scheme_name`, c0.`card_holder_name`, c0.`customer_mobile`, c0.`customer_country`, c0.`mcc_code`, c0.`card_type_id`, c0.`card_type_code`, c0.`mdr_template_id`, c0.`mdr_percentage_rate`, c0.`mdr_fixed_fee`, c0.`mdr_minimum_fee`, c0.`mdr_maximum_fee`, c0.`mdr_amount`, c0.`vat_rate`, c0.`vat_amount`, c0.`interchange_fee`, c0.`interchange_template_id`, c0.`gross_amount`, c0.`net_settlement_amount`, c0.`settlement_status`, c0.`switch_settled_date`, c0.`released_for_settlement_date`, c0.`risk_hold`, c0.`risk_rule_name`, c0.`chargeback_hold`, c0.`exception_type`, c0.`refund_status`, c0.`refund_date`, c0.`reversal_status`, c0.`reversal_date`, c0.`store_id`, c0.`dr_cr`, c0.`qr_tag`, c0.`bank_transfer_reference`, c0.`bank_transfer_date`, c0.`spare_fields`, c0.`inserted_at`, c0.`updated_at` FROM `core_transactions` AS c0 WHERE ((c0.`merchant_mid` = ?) AND ((c0.`switch_settled_date` = ?) OR (c0.`released_for_settlement_date` = ?))) ORDER BY c0.`transaction_datetime` ["419926360000000", ~D[2026-08-31], ~D[2026-08-31]] ↳ SettlementCore.Workers.MprDispatchWorker.dispatch_mpr_for_merchant/4, at: lib/settlement_core/workers/mpr_dispatch_worker.ex:176 [2026-09-02 11:45:30.442] [DEBUG] QUERY OK source="core_transactions" db=0.7ms queue=0.5ms idle=15.8ms SELECT c0.`id`, c0.`source_type`, c0.`source_ref_id`, c0.`settlement_batch_id`, c0.`rrn`, c0.`tid`, c0.`auth_number`, c0.`stan`, c0.`invoice_number`, c0.`batch_number`, c0.`merchant_mid`, c0.`merchant_id`, c0.`merchant_ref_number`, c0.`transaction_amount`, c0.`transaction_currency`, c0.`transaction_type`, c0.`transaction_datetime`, c0.`masked_pan`, c0.`scheme_name`, c0.`card_holder_name`, c0.`customer_mobile`, c0.`customer_country`, c0.`mcc_code`, c0.`card_type_id`, c0.`card_type_code`, c0.`mdr_template_id`, c0.`mdr_percentage_rate`, c0.`mdr_fixed_fee`, c0.`mdr_minimum_fee`, c0.`mdr_maximum_fee`, c0.`mdr_amount`, c0.`vat_rate`, c0.`vat_amount`, c0.`interchange_fee`, c0.`interchange_template_id`, c0.`gross_amount`, c0.`net_settlement_amount`, c0.`settlement_status`, c0.`switch_settled_date`, c0.`released_for_settlement_date`, c0.`risk_hold`, c0.`risk_rule_name`, c0.`chargeback_hold`, c0.`exception_type`, c0.`refund_status`, c0.`refund_date`, c0.`reversal_status`, c0.`reversal_date`, c0.`store_id`, c0.`dr_cr`, c0.`qr_tag`, c0.`bank_transfer_reference`, c0.`bank_transfer_date`, c0.`spare_fields`, c0.`inserted_at`, c0.`updated_at` FROM `core_transactions` AS c0 WHERE (DATE(c0.`transaction_datetime`) = ?) AND ((c0.`risk_hold` = TRUE) OR (c0.`settlement_status` = 'exception_hold')) AND (c0.`merchant_mid` = ?) ORDER BY c0.`merchant_mid`, c0.`transaction_datetime` [~D[2026-08-31], "419926360000000"] ↳ SettlementCore.Workers.MprDispatchWorker.dispatch_mpr_for_merchant/4, at: lib/settlement_core/workers/mpr_dispatch_worker.ex:187 [2026-09-02 11:45:30.464] [DEBUG] QUERY OK source="tid_masters" db=2.0ms queue=2.9ms idle=32.3ms SELECT a3.`line1`, a3.`city` FROM `tid_masters` AS t0 LEFT OUTER JOIN `brands` AS b1 ON b1.`merchant_reference_id` COLLATE utf8mb4_unicode_ci = t0.`merchant_ref_number` COLLATE utf8mb4_unicode_ci LEFT OUTER JOIN `stores` AS s2 ON s2.`brand_id` = b1.`id` LEFT OUTER JOIN `addresses` AS a3 ON a3.`id` = s2.`address_id` WHERE ((t0.`mid` = ?) OR (t0.`merchant_ref_number` = ?)) LIMIT 1 ["419926360000000", "419926360000000"] ↳ SettlementCore.Workers.MprDispatchWorker.fetch_merchant_address_details/1, at: lib/settlement_core/workers/mpr_dispatch_worker.ex:392 [2026-09-02 11:45:30.466] [INFO ] [MprDispatchWorker] Calling SettlementNotifier.send_mpr for MID=419926360000000 [2026-09-02 11:45:30.477] [INFO ] [SettlementNotifier] Sending MPR to sunny@dataaegis.com for MID=419926360000000 [2026-09-02 11:45:30.548] [INFO ] [SettlementNotifier] Email created, now attaching Excel [2026-09-02 11:45:30.557] [INFO ] [MprExcelGenerator] Generating Excel for MID=419926360000000 [2026-09-02 11:45:30.560] [INFO ] [MprExcelGenerator] Processing 2 transaction rows [2026-09-02 11:45:30.814] [INFO ] [MprExcelGenerator] Excel generated successfully, size: 10147 bytes [2026-09-02 11:45:30.814] [INFO ] [SettlementNotifier] Excel binary type: <<80, 75, 3, 4, 20, 0, 0, 0, 8, 0, 190, 93, 34, 93, 33, 175, 77, 49, 200, 0, 0, 0, 85, 1, 0, 0, 16, 0, 0, 0, ...>> [2026-09-02 11:45:30.814] [INFO ] [SettlementNotifier] Excel binary size: 10147 bytes [2026-09-02 11:45:30.815] [INFO ] [SettlementNotifier] Attaching MPR Excel: MPR_419926360000000_20260831.xlsx [2026-09-02 11:45:30.826] [INFO ] [SettlementNotifier] Attachment created, data field: <<80, 75, 3, 4, 20, 0, 0, 0, 8, 0, 190, 93, 34, 93, 33, 175, 77, 49, 200, 0, 0, 0, 85, 1, 0, 0, 16, 0, 0, 0, 100, 111, 99, 80, 114, 111, 112, 115, 47, 97, 112, 112, 46, 120, 109, 108, 157, 144, 205, 110, ...>> [2026-09-02 11:45:30.826] [INFO ] [SettlementNotifier] Attachment filename: MPR_419926360000000_20260831.xlsx [2026-09-02 11:45:30.826] [INFO ] [SettlementNotifier] Calling deliver after attachment... [2026-09-02 11:45:30.827] [INFO ] [SettlementNotifier] ===== CALLING MAILER.DELIVER ===== [2026-09-02 11:45:30.827] [INFO ] [SettlementNotifier] Email TO: [{"", "sunny@dataaegis.com"}] [2026-09-02 11:45:30.827] [INFO ] [SettlementNotifier] Email FROM: {"", "donotreply@shukria.ae"} [2026-09-02 11:45:30.827] [INFO ] [SettlementNotifier] Email SUBJECT: Merchant Payment Report — Kalyan Mart — 2026-08-31 [2026-09-02 11:45:30.901] [INFO ] [AzureCommunicationServices] ===== STARTING EMAIL DELIVERY ===== [2026-09-02 11:45:30.901] [INFO ] [AzureCommunicationServices] Email recipients: [{"", "sunny@dataaegis.com"}] [2026-09-02 11:45:30.901] [INFO ] [AzureCommunicationServices] Email subject: Merchant Payment Report — Kalyan Mart — 2026-08-31 [2026-09-02 11:45:30.901] [INFO ] [AzureCommunicationServices] Config values: [2026-09-02 11:45:30.901] [INFO ] - sender: donotreply@shukria.ae [2026-09-02 11:45:30.901] [INFO ] - endpoint: https://shukria-commserv-merchants.uae.communication.azure.com [2026-09-02 11:45:30.901] [INFO ] - api_version: 2025-09-01 [2026-09-02 11:45:30.901] [INFO ] [AzureCommunicationServices] Request URL: https://shukria-commserv-merchants.uae.communication.azure.com/emails:send?api-version=2025-09-01 [2026-09-02 11:45:30.905] [INFO ] [AzureCommunicationServices] Host extracted: shukria-commserv-merchants.uae.communication.azure.com [2026-09-02 11:45:30.906] [INFO ] [AzureCommunicationServices] Path and query: /emails:send?api-version=2025-09-01 [2026-09-02 11:45:30.906] [INFO ] [AzureCommunicationServices] ===== PREPARE_BODY STARTING ===== [2026-09-02 11:45:30.906] [INFO ] [AzureCommunicationServices] email.attachments count: 1 [2026-09-02 11:45:30.906] [INFO ] [AzureCommunicationServices] First attachment is %Swoosh.Attachment{}: true [2026-09-02 11:45:30.906] [INFO ] [AzureCommunicationServices] First attachment data type: <<80, 75, 3, 4, 20, 0, 0, 0, 8, 0, 190, 93, 34, 93, 33, 175, 77, 49, 200, 0, 0, 0, 85, 1, 0, 0, 16, 0, 0, 0, 100, 111, 99, 80, 114, 111, 112, 115, 47, 97, 112, 112, 46, 120, 109, 108, 157, 144, 205, 110, ...>> [2026-09-02 11:45:30.907] [INFO ] [AzureCommunicationServices] First attachment filename: MPR_419926360000000_20260831.xlsx [2026-09-02 11:45:30.907] [INFO ] [AzureCommunicationServices] Processing attachment: MPR_419926360000000_20260831.xlsx [2026-09-02 11:45:30.907] [INFO ] [AzureCommunicationServices] Attachment data type: <<80, 75, 3, 4, 20, 0, 0, 0, 8, 0, 190, 93, 34, 93, 33, 175, 77, 49, 200, 0, 0, 0, 85, 1, 0, 0, 16, 0, 0, 0, 100, 111, 99, 80, 114, 111, 112, 115, 47, 97, 112, 112, 46, 120, 109, 108, 157, 144, 205, 110, ...>> [2026-09-02 11:45:30.907] [INFO ] [AzureCommunicationServices] Direct binary size: 10147 bytes [2026-09-02 11:45:30.907] [INFO ] [AzureCommunicationServices] Base64 encoded size: 13532 chars [2026-09-02 11:45:30.918] [INFO ] [AzureCommunicationServices] Attachment struct created: %{"contentInBase64" => "UEsDBBQAAAAIAL5dIl0hr00xyAAAAFUBAAAQAAAAZG9jUHJvcHMvYXBwLnhtbJ2QzW4CIRSF9/MUhL0DdWGMYTAmtWsXo3sCd5QEuARuzfj2Ym1r112en3w5OWo7x8CuUKrHNPC3XnIGyaLz6Tzw4/ixWHNWySRnAiYY+A0q3+pOHQpmKOShskZIdeAXorwRotoLRFP7FqeWTFiioSbLWeA0eQvvaD8jJBJLKVcCZoLkwC3yL5A/iZsr/Rfq0D721dN4y42nO8bUiGTC6CNoqcRLPKJdzsFbQ+0CvQ9+DnVW4q/5XTo9b9KyX8mvwo/RKfH6Q3d3UEsDBBQAAAAIAL5dIl3+v2LaLwEAAFoCAAARAAAAZG9jUHJvcHMvY29yZS54bWylksFOwzAMhu99iir3NkkLE0RtdwDtBBLSNoG4RanXRTRplGTr9vakZesG2o2j8//+7Ngu5gfVxnuwTna6RDQlKAYtulrqpkTr1SJ5QLHzXNe87TSU6AgOzauoEIaJzsKb7QxYL8HFAaQdE6ZEW+8Nw9iJLSju0uDQQdx0VnEfQttgw8UXbwBnhMywAs9r7jkegImZiOiErMWENDvbjoBaYGhBgfYO05Tii9eDVe5mwqhcOZX0RwM3rWdxch+cnIx936d9PlpD/xR/vL4sx68mUg+jEoCqKI6LUy9MWOAe6jgw2E/Fs/KePz2vFqjKSDZLyGNCshWl7O6e5eSzwH/yT0zWct3swvAq0Ml6OdguT9dlVVjiRv6j7hkwUsO+LezlcCYVLfB1GI3h72uoom9QSwMEFAAAAAgAvl0iXcsHwd3eAAAAPwIAAAsAAABfcmVscy8ucmVsc62Sz07DMAyH73uKyPfV3ZAQQst2QUi7ITQewCRuG7WJoyRAeXsiDvyZ2LQDxyQ/f/5sZbOb/aReOWUnQcOqaUFxMGJd6DU8He6XN7DbLjaPPFGpkTy4mFWtCVnDUEq8RcxmYE+5kcihvnSSPJV6TD1GMiP1jOu2vcb0kwFHULW3GtLerkAd3iNfApeuc4bvxLx4DuWPHkeJSqbUc9EwT/gmaXwWGZsKBTwhs75c5vSk6LmQpUJoJPEyplqdiuP87WPFPNTr/Jk4a3T1n+vhuXCwbM87UYxfSvjrH2wXH1BLAwQUAAAACAC+XSJd7oXMI6gCAACrDwAADQAAAHhsL3N0eWxlcy54bWzNV01vozAQvfMrLPe6WyBps8kKqKpWkfbcVtqrA4YgGRvZbpv01+8YAyUKK5EQqqaH2PP5ZvzGcYO7XcHQG5UqFzzE/rWHEeWxSHKehfjlef1ziZHShCeECU5DvKcK30VOoPSe0actpRpBBK5CvNW6/O26Kt7SgqhrUVIOmlTIgmjYysxVpaQkUcapYO7M8xZuQXKOIwehgL8W60IrFItXrgEJjmoRsl9/EhAubjCyER9EAmiuflxdedcegHYBk1vHqOKlgnei3VZJarExbjdRoD7QG2EhXmI3CtxK5oxSbazGN5ovM2tUq5NUfcHPN2tUvneari/8YLtqFwsmJJLZJsTrtb+e36/mhhONP5x1taqpkTPWUmPeMgOkUVASranka9igev28L4FqHOhvERm7QS6ZJHt/dnuilxIsT4D9afbQLepxZf5sUR3fTmi7siVuhExgqI+KtPJ2AOptkpNMcMJeyhCnhCmKW9GjeOeNsIrMaKpRNf0h1lszvYfN96qPxWlso0Dm2XawS2UcBVqUQz3AFJghtBbFUBdrHQVNkSBql45Rm65EjnNufw5LP6jqEPAJWMz51qda5YkpY0+m3L9p99K057pLkbU1tyYU/XmFwsawpFnCTNRLUpZsf8/yjBe0GwuikUaK3iUpn+lO2xm0udxdatnXRdRC7KJbjIC3S+3C7QsxwzXUjnMrqWP4N62om66RNfH/04dOD7ZC5h8Q1Fw+MQiorH99TB+cM4DNJwBm6DcS1mwCWNUcjMTlf8t2Lceg6k/rH6WdHaW9FKm7g93LcHgi6jwewvlj2MfdmoJb9gwvi3MKrk3T0b5LxDyXLzKvl4V6+xWjcpx2MWWHRt1o3uUbMiTv6ltepL8mOabxuPq6dXlczTuqekIF7ud/2ZHzD1BLAwQUAAAACAC+XSJdThdotyUEAABqFQAAFAAAAHhsL3NoYXJlZFN0cmluZ3MueG1spVhtb9pIEP5+v2JkqVKuSnnL5QWUpGfAadERSG2nUj5Viz3AXuxd375Ex/36W+MkkOupmqUWfADmmbedeXaGy49/lwU8odJciqug2+oEgCKTORerq+A+vflwEYA2TOSskAKvgg3q4OP1L5daG3BQoa+CtTHVoN3W2RpLpluyQuF+WUpVMuM+qlVbVwpZrteIpizavU7nrF0yLgLIpBXmKuj3A7CC/2Vx9PpFbYNfX26tDHTFMmfcqdGonjC4vmwb964FfiB0G8Wj+/gB7sKH22iWJpBE8dfJKEpgOh2RNXwOZ+mLCoiju3mckrBjZpAkOCBJnXTbnQuXu94ZzXNU2ZoJA0MmHmGMhvFCk5CflLQVTMZ+Zojyv3X7/d7ZyVmneUiYbQQzVtKy+QcrNkzAQjz6BeBr4JYpQ5KfDMMZSfD8on/ev/ju8QsjzHP3Je2k58slzxB6nZNjF06BjzC0vKhbH3rHEBbwxcp/YCJyq43irIDQtTE44bFdMO7nVxrTkvCc3RlbMUUCJGhMgSU6G89VDvOlc76AVDGhWWYcs2kIswwrgznMBSRr++jiIanfUwJ1R4OjQkg5sVb2nEsMM5Z2LvshUUkkMVIhtQtT3+5O2co7W+mmIrpeXxxIb8ARUznMbLlAWoVs5cnebKXvlMxtZuio4YRW3kNmsrWP8zGxb0Jr1jCSOc3d/XMKy/rOpdXDOIYbRHjnI+3tEBkjjeMkJ03rqq9henT67lc/1XDERVbYLSc6BTT0DA3csQ1bFMTi4UVRG5iIJ1kTskd5fJZuDvOQnyu+4sLF5urKB3fSeZk+oNsZdOoXCVcxnvuMN7ThJupFjsLqAaJLY5hwGtFqZJKEtDnm/e7puoes/dsojsaT9FuS0ijYhfo8KxFjDfs+0r1Wp0Pr5v9UwCm1AnZn1aOxRpikbuoOY+IVNfo2joaHJZTm0EtCadLd1vkpLaGf4nA2hnSehlNa65o1KjrdedB6PZo04waVeh0V+muGo4k/l8a4tGJ7IWdurK2hVB//F3mQD6M1UytcsOyRbPwt5CCrc2u2i3cNSuxCZ4pXL/cjcb7/gYaDXGquxV0hHqRkjPVotR3Kj/jSzdMbGm4q3V4QYyafUG2Il2ORg1skuHCX5O5EiF4ueL1N/el2n7qASaAbjs4i0Kj3WZhGK03md6mjFaHC/E0QfglvbH6nhLjD3N/ehvGDj6Gar+rdrVl/8jf7G82mLUumNiB/QkfjS0OetSJvBVNHNjCAvQnygB55VvLaaT+j5KDSCfP8FXpgBTTgvVnYZ9OYSYOa9sfY+3rXb1RrYG4J5m6niWjDwI1UdT84dqwqqdyBK/hiUXHUx3BXINMICpnb2KQ1YCRYZ8EAlowXA9ANqKWbvxN+L922bNXmQ8U2rUyWOwfaWpvrfwFQSwMEFAAAAAgAvl0iXWeoQ4gqAQAA7AEAAA8AAAB4bC93b3JrYm9vay54bWyNkU1vAiEQhu/+CsK9gh6axriaRmNiUlvTWK/NLDu4RD42gNr++87uptsevcG88PDMMF9+OcuuGJMJvuCTseQMvQqV8aeCfxw2D0+cpQy+Ahs8FvwbE18uRvNbiOcyhDOj+z4VvM65mQmRVI0O0jg06CnRITrItI0nkZqIUKUaMTsrplI+CgfG854wi/cwgtZG4Tqoi0Ofe0hEC5nsU22axElNG4vHviMGTfMKjrxXYBUXlLbSR4O3tBgxNrTRVhiobK54gLLgsjsr/h2ed+bDgvkOu9u/f27oPRpSW91WNMNuYJnCq0mmbLM4MxTEbTXtsQNKkdU+Mn2xthV88y8BeoTJGAmyChefqSDpXyLqXaiI+/yXF1yDTTjs12gzkP5Yykn/1m+Hi9EPUEsDBBQAAAAIAL5dIl0AIj532QAAACwCAAAaAAAAeGwvX3Jl" <> ..., "contentType" => "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "name" => "MPR_419926360000000_20260831.xlsx"} [2026-09-02 11:45:30.921] [INFO ] [AzureCommunicationServices] Final JSON body size: 19333 bytes [2026-09-02 11:45:30.921] [INFO ] [AzureCommunicationServices] JSON first 500 chars: {"attachments":[{"contentInBase64":"UEsDBBQAAAAIAL5dIl0hr00xyAAAAFUBAAAQAAAAZG9jUHJvcHMvYXBwLnhtbJ2QzW4CIRSF9/MUhL0DdWGMYTAmtWsXo3sCd5QEuARuzfj2Ym1r112en3w5OWo7x8CuUKrHNPC3XnIGyaLz6Tzw4/ixWHNWySRnAiYY+A0q3+pOHQpmKOShskZIdeAXorwRotoLRFP7FqeWTFiioSbLWeA0eQvvaD8jJBJLKVcCZoLkwC3yL5A/iZsr/Rfq0D721dN4y42nO8bUiGTC6CNoqcRLPKJdzsFbQ+0CvQ9+DnVW4q/5XTo9b9KyX8mvwo/RKfH6Q3d3UEsDBBQAAAAIAL5dIl3+v2LaLwEAAFoCAAARAAAAZG9jUHJvcHMvY29yZS54bWylksFOwzAMhu99iir3NkkLE0RtdwDtBBLSNoG4RanXRTRplGTr9vakZesG2o2j8//+7Ngu5gfV [2026-09-02 11:45:30.922] [INFO ] [AzureCommunicationServices] ✅ First attachment contentInBase64 present: 13532 chars (non-empty: true) [2026-09-02 11:45:30.922] [INFO ] [AzureCommunicationServices] Content SHA256: BEiAIIMqxw1UHmL4s3kL... [2026-09-02 11:45:30.922] [INFO ] [KeyVault] Requesting new Azure AD access token [2026-09-02 11:45:32.203] [INFO ] [KeyVault] Azure AD access token acquired, expires in 3599s [2026-09-02 11:45:32.929] [INFO ] [KeyVault] ACS secret cache refreshed from Key Vault (TTL 1800s) [2026-09-02 11:45:32.930] [INFO ] [AzureCommunicationServices] Signature (first 20 chars): UDOEjYwhJE8u+qmPC9Id... [2026-09-02 11:45:32.930] [INFO ] [AzureCommunicationServices] Auth: HMAC-SHA256 signature authentication [2026-09-02 11:45:32.930] [INFO ] [AzureCommunicationServices] Headers: Authorization, x-ms-date, host, x-ms-content-sha256 [2026-09-02 11:45:32.930] [DEBUG] [AzureCommunicationServices] Request body prepared [2026-09-02 11:45:32.931] [INFO ] [AzureCommunicationServices] Sending HTTP request to Azure... [2026-09-02 11:45:32.932] [DEBUG] [AzureCommunicationServices] Building HTTP request... [2026-09-02 11:45:32.932] [DEBUG] [AzureCommunicationServices] Executing HTTP request via Finch... [2026-09-02 11:45:34.822] [INFO ] [AzureCommunicationServices] HTTP Response: 202 (Success) [2026-09-02 11:45:34.822] [INFO ] [AzureCommunicationServices] Response body: {"id":"bd3b8594-c2c0-421a-98eb-36652ba73511","status":"Running","error":null} [2026-09-02 11:45:34.823] [INFO ] [AzureCommunicationServices] Parsed response: %{"error" => nil, "id" => "bd3b8594-c2c0-421a-98eb-36652ba73511", "status" => "Running"} [2026-09-02 11:45:34.824] [INFO ] [AzureCommunicationServices] ✅ Email sent successfully to [{"", "sunny@dataaegis.com"}] [2026-09-02 11:45:34.824] [INFO ] [SettlementNotifier] ===== MAILER.DELIVER RESULT ===== [2026-09-02 11:45:34.824] [INFO ] [SettlementNotifier] Result: {:ok, %{id: "bd3b8594-c2c0-421a-98eb-36652ba73511", status: 202}} [2026-09-02 11:45:34.824] [INFO ] [SettlementNotifier] ✅ Email delivery SUCCESS [2026-09-02 11:45:34.829] [INFO ] [MprDispatchWorker] SettlementNotifier result for MID=419926360000000: {:ok, %{id: "bd3b8594-c2c0-421a-98eb-36652ba73511", status: 202}} [2026-09-02 11:45:34.885] [DEBUG] QUERY OK source="settlement_mis_items" db=40.4ms queue=2.7ms idle=895.0ms UPDATE `settlement_mis_items` AS s0 SET s0.`mpr_sent` = ? WHERE (s0.`id` IN (?,?)) [true, 434, 433] ↳ SettlementCore.Workers.MprDispatchWorker.dispatch_mpr_for_merchant/4, at: lib/settlement_core/workers/mpr_dispatch_worker.ex:223 [2026-09-02 11:45:34.891] [DEBUG] QUERY OK source="tid_masters" db=3.2ms queue=0.2ms idle=327.6ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` = ?) ["425590250000000"] ↳ SettlementCore.Workers.MprDispatchWorker.dispatch_mpr_for_merchant/4, at: lib/settlement_core/workers/mpr_dispatch_worker.ex:114 [2026-09-02 11:45:34.928] [DEBUG] QUERY OK source="merchant_adjustments" db=33.1ms queue=3.5ms idle=6.2ms SELECT m0.`id`, m0.`merchant_mid`, m0.`merchant_name`, m0.`adjustment_date`, m0.`debit_credit`, m0.`amount`, m0.`currency`, m0.`adjustment_type`, m0.`description`, m0.`settlement_mis_id`, m0.`status`, m0.`applied_at`, m0.`cancelled_at`, m0.`cancel_reason`, m0.`approval_status`, m0.`level1_reviewed_by`, m0.`level1_reviewed_at`, m0.`level2_approved_by`, m0.`level2_approved_at`, m0.`rejected_by`, m0.`rejected_at`, m0.`rejection_reason`, m0.`created_by`, m0.`updated_by`, m0.`inserted_at`, m0.`updated_at` FROM `merchant_adjustments` AS m0 WHERE (m0.`merchant_mid` = ?) AND (m0.`adjustment_date` = ?) AND (m0.`approval_status` = 'approved') ["425590250000000", ~D[2026-08-31]] ↳ SettlementCore.Workers.MprDispatchWorker.fetch_merchant_adjustment_breakdown/2, at: lib/settlement_core/workers/mpr_dispatch_worker.ex:240 [2026-09-02 11:45:34.932] [DEBUG] QUERY OK source="core_transactions" db=3.0ms idle=37.6ms SELECT c0.`id`, c0.`source_type`, c0.`source_ref_id`, c0.`settlement_batch_id`, c0.`rrn`, c0.`tid`, c0.`auth_number`, c0.`stan`, c0.`invoice_number`, c0.`batch_number`, c0.`merchant_mid`, c0.`merchant_id`, c0.`merchant_ref_number`, c0.`transaction_amount`, c0.`transaction_currency`, c0.`transaction_type`, c0.`transaction_datetime`, c0.`masked_pan`, c0.`scheme_name`, c0.`card_holder_name`, c0.`customer_mobile`, c0.`customer_country`, c0.`mcc_code`, c0.`card_type_id`, c0.`card_type_code`, c0.`mdr_template_id`, c0.`mdr_percentage_rate`, c0.`mdr_fixed_fee`, c0.`mdr_minimum_fee`, c0.`mdr_maximum_fee`, c0.`mdr_amount`, c0.`vat_rate`, c0.`vat_amount`, c0.`interchange_fee`, c0.`interchange_template_id`, c0.`gross_amount`, c0.`net_settlement_amount`, c0.`settlement_status`, c0.`switch_settled_date`, c0.`released_for_settlement_date`, c0.`risk_hold`, c0.`risk_rule_name`, c0.`chargeback_hold`, c0.`exception_type`, c0.`refund_status`, c0.`refund_date`, c0.`reversal_status`, c0.`reversal_date`, c0.`store_id`, c0.`dr_cr`, c0.`qr_tag`, c0.`bank_transfer_reference`, c0.`bank_transfer_date`, c0.`spare_fields`, c0.`inserted_at`, c0.`updated_at` FROM `core_transactions` AS c0 WHERE ((c0.`merchant_mid` = ?) AND ((c0.`switch_settled_date` = ?) OR (c0.`released_for_settlement_date` = ?))) ORDER BY c0.`transaction_datetime` ["425590250000000", ~D[2026-08-31], ~D[2026-08-31]] ↳ SettlementCore.Workers.MprDispatchWorker.dispatch_mpr_for_merchant/4, at: lib/settlement_core/workers/mpr_dispatch_worker.ex:176 [2026-09-02 11:45:34.936] [DEBUG] QUERY OK source="core_transactions" db=1.9ms queue=0.1ms idle=5.5ms SELECT c0.`id`, c0.`source_type`, c0.`source_ref_id`, c0.`settlement_batch_id`, c0.`rrn`, c0.`tid`, c0.`auth_number`, c0.`stan`, c0.`invoice_number`, c0.`batch_number`, c0.`merchant_mid`, c0.`merchant_id`, c0.`merchant_ref_number`, c0.`transaction_amount`, c0.`transaction_currency`, c0.`transaction_type`, c0.`transaction_datetime`, c0.`masked_pan`, c0.`scheme_name`, c0.`card_holder_name`, c0.`customer_mobile`, c0.`customer_country`, c0.`mcc_code`, c0.`card_type_id`, c0.`card_type_code`, c0.`mdr_template_id`, c0.`mdr_percentage_rate`, c0.`mdr_fixed_fee`, c0.`mdr_minimum_fee`, c0.`mdr_maximum_fee`, c0.`mdr_amount`, c0.`vat_rate`, c0.`vat_amount`, c0.`interchange_fee`, c0.`interchange_template_id`, c0.`gross_amount`, c0.`net_settlement_amount`, c0.`settlement_status`, c0.`switch_settled_date`, c0.`released_for_settlement_date`, c0.`risk_hold`, c0.`risk_rule_name`, c0.`chargeback_hold`, c0.`exception_type`, c0.`refund_status`, c0.`refund_date`, c0.`reversal_status`, c0.`reversal_date`, c0.`store_id`, c0.`dr_cr`, c0.`qr_tag`, c0.`bank_transfer_reference`, c0.`bank_transfer_date`, c0.`spare_fields`, c0.`inserted_at`, c0.`updated_at` FROM `core_transactions` AS c0 WHERE (DATE(c0.`transaction_datetime`) = ?) AND ((c0.`risk_hold` = TRUE) OR (c0.`settlement_status` = 'exception_hold')) AND (c0.`merchant_mid` = ?) ORDER BY c0.`merchant_mid`, c0.`transaction_datetime` [~D[2026-08-31], "425590250000000"] ↳ SettlementCore.Workers.MprDispatchWorker.dispatch_mpr_for_merchant/4, at: lib/settlement_core/workers/mpr_dispatch_worker.ex:187 [2026-09-02 11:45:34.940] [DEBUG] QUERY OK source="tid_masters" db=4.2ms idle=4.5ms SELECT a3.`line1`, a3.`city` FROM `tid_masters` AS t0 LEFT OUTER JOIN `brands` AS b1 ON b1.`merchant_reference_id` COLLATE utf8mb4_unicode_ci = t0.`merchant_ref_number` COLLATE utf8mb4_unicode_ci LEFT OUTER JOIN `stores` AS s2 ON s2.`brand_id` = b1.`id` LEFT OUTER JOIN `addresses` AS a3 ON a3.`id` = s2.`address_id` WHERE ((t0.`mid` = ?) OR (t0.`merchant_ref_number` = ?)) LIMIT 1 ["425590250000000", "425590250000000"] ↳ SettlementCore.Workers.MprDispatchWorker.fetch_merchant_address_details/1, at: lib/settlement_core/workers/mpr_dispatch_worker.ex:392 [2026-09-02 11:45:34.941] [INFO ] [MprDispatchWorker] Calling SettlementNotifier.send_mpr for MID=425590250000000 [2026-09-02 11:45:34.941] [INFO ] [SettlementNotifier] Sending MPR to sunny@dataaegis.com for MID=425590250000000 [2026-09-02 11:45:34.941] [INFO ] [SettlementNotifier] Email created, now attaching Excel [2026-09-02 11:45:34.941] [INFO ] [MprExcelGenerator] Generating Excel for MID=425590250000000 [2026-09-02 11:45:34.941] [INFO ] [MprExcelGenerator] Processing 1 transaction rows [2026-09-02 11:45:34.957] [INFO ] [MprExcelGenerator] Excel generated successfully, size: 9918 bytes [2026-09-02 11:45:34.958] [INFO ] [SettlementNotifier] Excel binary type: <<80, 75, 3, 4, 20, 0, 0, 0, 8, 0, 162, 93, 34, 93, 33, 175, 77, 49, 200, 0, 0, 0, 85, 1, 0, 0, 16, 0, 0, 0, ...>> [2026-09-02 11:45:34.961] [INFO ] [SettlementNotifier] Excel binary size: 9918 bytes [2026-09-02 11:45:34.963] [INFO ] [SettlementNotifier] Attaching MPR Excel: MPR_425590250000000_20260831.xlsx [2026-09-02 11:45:34.964] [INFO ] [SettlementNotifier] Attachment created, data field: <<80, 75, 3, 4, 20, 0, 0, 0, 8, 0, 162, 93, 34, 93, 33, 175, 77, 49, 200, 0, 0, 0, 85, 1, 0, 0, 16, 0, 0, 0, 100, 111, 99, 80, 114, 111, 112, 115, 47, 97, 112, 112, 46, 120, 109, 108, 157, 144, 205, 110, ...>> [2026-09-02 11:45:34.964] [INFO ] [SettlementNotifier] Attachment filename: MPR_425590250000000_20260831.xlsx [2026-09-02 11:45:34.964] [INFO ] [SettlementNotifier] Calling deliver after attachment... [2026-09-02 11:45:34.964] [INFO ] [SettlementNotifier] ===== CALLING MAILER.DELIVER ===== [2026-09-02 11:45:34.964] [INFO ] [SettlementNotifier] Email TO: [{"", "sunny@dataaegis.com"}] [2026-09-02 11:45:34.964] [INFO ] [SettlementNotifier] Email FROM: {"", "donotreply@shukria.ae"} [2026-09-02 11:45:34.964] [INFO ] [SettlementNotifier] Email SUBJECT: Merchant Payment Report — Golden Sands Retail LLC — 2026-08-31 [2026-09-02 11:45:34.965] [INFO ] [AzureCommunicationServices] ===== STARTING EMAIL DELIVERY ===== [2026-09-02 11:45:34.965] [INFO ] [AzureCommunicationServices] Email recipients: [{"", "sunny@dataaegis.com"}] [2026-09-02 11:45:34.965] [INFO ] [AzureCommunicationServices] Email subject: Merchant Payment Report — Golden Sands Retail LLC — 2026-08-31 [2026-09-02 11:45:34.965] [INFO ] [AzureCommunicationServices] Config values: [2026-09-02 11:45:34.965] [INFO ] - sender: donotreply@shukria.ae [2026-09-02 11:45:34.965] [INFO ] - endpoint: https://shukria-commserv-merchants.uae.communication.azure.com [2026-09-02 11:45:34.965] [INFO ] - api_version: 2025-09-01 [2026-09-02 11:45:34.965] [INFO ] [AzureCommunicationServices] Request URL: https://shukria-commserv-merchants.uae.communication.azure.com/emails:send?api-version=2025-09-01 [2026-09-02 11:45:34.965] [INFO ] [AzureCommunicationServices] Host extracted: shukria-commserv-merchants.uae.communication.azure.com [2026-09-02 11:45:34.965] [INFO ] [AzureCommunicationServices] Path and query: /emails:send?api-version=2025-09-01 [2026-09-02 11:45:34.965] [INFO ] [AzureCommunicationServices] ===== PREPARE_BODY STARTING ===== [2026-09-02 11:45:34.965] [INFO ] [AzureCommunicationServices] email.attachments count: 1 [2026-09-02 11:45:34.978] [INFO ] [AzureCommunicationServices] First attachment is %Swoosh.Attachment{}: true [2026-09-02 11:45:34.978] [INFO ] [AzureCommunicationServices] First attachment data type: <<80, 75, 3, 4, 20, 0, 0, 0, 8, 0, 162, 93, 34, 93, 33, 175, 77, 49, 200, 0, 0, 0, 85, 1, 0, 0, 16, 0, 0, 0, 100, 111, 99, 80, 114, 111, 112, 115, 47, 97, 112, 112, 46, 120, 109, 108, 157, 144, 205, 110, ...>> [2026-09-02 11:45:34.978] [INFO ] [AzureCommunicationServices] First attachment filename: MPR_425590250000000_20260831.xlsx [2026-09-02 11:45:34.979] [INFO ] [AzureCommunicationServices] Processing attachment: MPR_425590250000000_20260831.xlsx [2026-09-02 11:45:34.979] [INFO ] [AzureCommunicationServices] Attachment data type: <<80, 75, 3, 4, 20, 0, 0, 0, 8, 0, 162, 93, 34, 93, 33, 175, 77, 49, 200, 0, 0, 0, 85, 1, 0, 0, 16, 0, 0, 0, 100, 111, 99, 80, 114, 111, 112, 115, 47, 97, 112, 112, 46, 120, 109, 108, 157, 144, 205, 110, ...>> [2026-09-02 11:45:34.979] [INFO ] [AzureCommunicationServices] Direct binary size: 9918 bytes [2026-09-02 11:45:34.979] [INFO ] [AzureCommunicationServices] Base64 encoded size: 13224 chars [2026-09-02 11:45:34.979] [INFO ] [AzureCommunicationServices] Attachment struct created: %{"contentInBase64" => "UEsDBBQAAAAIAKJdIl0hr00xyAAAAFUBAAAQAAAAZG9jUHJvcHMvYXBwLnhtbJ2QzW4CIRSF9/MUhL0DdWGMYTAmtWsXo3sCd5QEuARuzfj2Ym1r112en3w5OWo7x8CuUKrHNPC3XnIGyaLz6Tzw4/ixWHNWySRnAiYY+A0q3+pOHQpmKOShskZIdeAXorwRotoLRFP7FqeWTFiioSbLWeA0eQvvaD8jJBJLKVcCZoLkwC3yL5A/iZsr/Rfq0D721dN4y42nO8bUiGTC6CNoqcRLPKJdzsFbQ+0CvQ9+DnVW4q/5XTo9b9KyX8mvwo/RKfH6Q3d3UEsDBBQAAAAIAKJdIl0/A2haLwEAAFoCAAARAAAAZG9jUHJvcHMvY29yZS54bWylksFuwjAMhu99iij3Nk1haIvactjEaZMmAdq0W5SaEq1JoyRQePulHRSYuO3o/L8/O7bz+UE1aA/WyVYXmCYpRqBFW0ldF3i9WsSPGDnPdcWbVkOBj+DwvIxyYZhoLbzb1oD1EhwKIO2YMAXeem8YIU5sQXGXBIcO4qa1ivsQ2poYLr55DSRL0xlR4HnFPSc9MDYjEZ+QlRiRZmebAVAJAg0o0N4RmlBy8Xqwyt1NGJQrp5L+aOCu9SyO7oOTo7HruqSbDNbQPyWfb6/L4aux1P2oBOAyQig/9cKEBe6hQoHBfiuelY/J88tqgcsszWZx+hSn2YpSNn1gk+lXTv7kn5is4breheGVoOP1srddnq7LqrDEjfxH3TNgoIZ9W9jL/kxKmpPrMBrC22soox9QSwMEFAAAAAgAol0iXcsHwd3eAAAAPwIAAAsAAABfcmVscy8ucmVsc62Sz07DMAyH73uKyPfV3ZAQQst2QUi7ITQewCRuG7WJoyRAeXsiDvyZ2LQDxyQ/f/5sZbOb/aReOWUnQcOqaUFxMGJd6DU8He6XN7DbLjaPPFGpkTy4mFWtCVnDUEq8RcxmYE+5kcihvnSSPJV6TD1GMiP1jOu2vcb0kwFHULW3GtLerkAd3iNfApeuc4bvxLx4DuWPHkeJSqbUc9EwT/gmaXwWGZsKBTwhs75c5vSk6LmQpUJoJPEyplqdiuP87WPFPNTr/Jk4a3T1n+vhuXCwbM87UYxfSvjrH2wXH1BLAwQUAAAACACiXSJd7oXMI6gCAACrDwAADQAAAHhsL3N0eWxlcy54bWzNV01vozAQvfMrLPe6WyBps8kKqKpWkfbcVtqrA4YgGRvZbpv01+8YAyUKK5EQqqaH2PP5ZvzGcYO7XcHQG5UqFzzE/rWHEeWxSHKehfjlef1ziZHShCeECU5DvKcK30VOoPSe0actpRpBBK5CvNW6/O26Kt7SgqhrUVIOmlTIgmjYysxVpaQkUcapYO7M8xZuQXKOIwehgL8W60IrFItXrgEJjmoRsl9/EhAubjCyER9EAmiuflxdedcegHYBk1vHqOKlgnei3VZJarExbjdRoD7QG2EhXmI3CtxK5oxSbazGN5ovM2tUq5NUfcHPN2tUvneari/8YLtqFwsmJJLZJsTrtb+e36/mhhONP5x1taqpkTPWUmPeMgOkUVASranka9igev28L4FqHOhvERm7QS6ZJHt/dnuilxIsT4D9afbQLepxZf5sUR3fTmi7siVuhExgqI+KtPJ2AOptkpNMcMJeyhCnhCmKW9GjeOeNsIrMaKpRNf0h1lszvYfN96qPxWlso0Dm2XawS2UcBVqUQz3AFJghtBbFUBdrHQVNkSBql45Rm65EjnNufw5LP6jqEPAJWMz51qda5YkpY0+m3L9p99K057pLkbU1tyYU/XmFwsawpFnCTNRLUpZsf8/yjBe0GwuikUaK3iUpn+lO2xm0udxdatnXRdRC7KJbjIC3S+3C7QsxwzXUjnMrqWP4N62om66RNfH/04dOD7ZC5h8Q1Fw+MQiorH99TB+cM4DNJwBm6DcS1mwCWNUcjMTlf8t2Lceg6k/rH6WdHaW9FKm7g93LcHgi6jwewvlj2MfdmoJb9gwvi3MKrk3T0b5LxDyXLzKvl4V6+xWjcpx2MWWHRt1o3uUbMiTv6ltepL8mOabxuPq6dXlczTuqekIF7ud/2ZHzD1BLAwQUAAAACACiXSJdPsbWrtwDAACcEwAAFAAAAHhsL3NoYXJlZFN0cmluZ3MueG1spVhtb9tGDP6+X0EYKJAVqy07dV6MOJ1iK6kBv01WiuXTcJYY6xZJp96dgvnfj7KS2MGGgucKCJA4fB7yKJL30Fdf/skzeEZtpCqGrW7bawEWsUpksRm27qPbTxctMFYUichUgcPWFk3ry/UvV8ZYIGhhhq3U2nLQ6Zg4xVyYtiqxoP88Kp0LS3/qTceUGkViUkSbZ52e5511ciGLFsSqKuywdUleq0J+r3D09kHtQ15f7bwMTClick40BvUztq6vOpZ+aoMfGM2CcHQfPsDSf5gF82gFqyD8NhkFK5hOR2yGr/48eqWAMFguwoiFHQuLLMMBy+q02/EuKHe9M17kqONUFBZuRPEEY7RCZoaFvNOqKmEydnPDtP/c6/cvvV7fax4WZneCuch52fTXFYxTsZYwUnlO4UmR7ZLgdh62vzuVJVjAilrEQLjLM7u8Jjf+nHeowDv3Tk+7vdPP/bPzi0uv+c3tSH6S0Ie8IngDRSEvwhVam2GOBHkpNlg8gp9lEGlRGBFbGjAG/DjG0mICC0pZWj1pKVj0ByRQNxZQuiGSzHd0ENzKClvxcnB4JG4vr6zSyG2GyLXJIrFxzla0LZmh1/Mb+YU/EjqBeZWvUfPt2dHsrJdaJVVs+aibCa9ab4SNU5fgQ2Yb+JVNafAkvHAP35Of11cfrx7GIdwiwgcXa+eA2BhlacKSNa+rvvnRSf/Dr27UcCKLOKtqVQJEwEPP0cJSbMU6YxaPzLLawaR4VjJGl/L4qkgOOdgvtNzIgs5GdeWCO/VeRQB0uwPPGzCv0FLIxEVl8G6WoBfQCKvvcZ79yp8GvC6aBX/y5MTH/dOlh83+1ygMxhOekKNjvsgV5jn9SxfrXvu8z+vku9CfjyFaRP6UV2U2Rc3vTIcJVN+izc3InRLUte7McDJxb/sQH6tid3fEpHZqKDfG/0UeFcMoFXqDaxE/sZ2/hxzldVHZ3apWg1bV2sRalq+jnFcCP2I4KqRmgu8L8SiSMdYqYKcfT+QjSb8tDzdVoiBJHivab7fMOZ4lIDa0m9I8378RZpRrWYvsvytj6wJmgW4lkkfgDa4X455D5vep4xWhxuTdIdwS3vj8DwlTbt/PZn744OKonlf1mtEo9eTdqsHzWeW50FtQP8HRxNIMz5rImWBKwwYGcCB2juiRF5K3TvsZkqNKh7bLN+iRFdCAD2SbiyieK4uG91XKx3otbagNCNrXJMnvgLeL3Spd9wNNx7JUml64hj8q1BLNb7DMUBgEjYKWC1VZsAoq8mABc9qIB2AaUNs0m+/v9dcTld5+KsW2Hat8H0DHGHv9L1BLAwQUAAAACACiXSJdZ6hDiCoBAADsAQAADwAAAHhsL3dvcmtib29rLnhtbI2RTW8CIRCG7/4Kwr2CHprGuJpGY2JSW9NYr80sO7hEPjaA2v77zu6m2x69wbzw8MwwX345y64Ykwm+4JOx5Ay9CpXxp4J/HDYPT5ylDL4CGzwW/BsTXy5G81uI5zKEM6P7PhW8zrmZCZFUjQ7SODToKdEhOsi0jSeRmohQpRoxOyumUj4KB8bznjCL9zCC1kbhOqiLQ597SEQLmexTbZrESU0bi8e+IwZN8wqOvFdgFReUttJHg7e0GDE2tNFWGKhsrniAsuCyOyv+HZ535sOC+Q67279/bug9GlJb3VY0w25gmcKrSaZsszgzFMRtNe2xA0qR1T4yfbG2FXzzLwF6hMkYCbIKF5+pIOlfIupdqIj7/JcXXINNOOzXaDOQ/ljKSf/Wb4eL0Q9QSwMEFAAAAAgAol0iXQAiPnfZAAAALAIAABoAAAB4bC9fcmVscy93b3JrYm9vay54bWwucmVsc62RwU7DMAyG732KyHeadpMQQkt3QUi7svEAUeo21doksg3b3p4gYHQIJA47RbaT7//ze7U+" <> ..., "contentType" => "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "name" => "MPR_425590250000000_20260831.xlsx"} [2026-09-02 11:45:34.980] [INFO ] [AzureCommunicationServices] Final JSON body size: 18796 bytes [2026-09-02 11:45:34.980] [INFO ] [AzureCommunicationServices] JSON first 500 chars: {"attachments":[{"contentInBase64":"UEsDBBQAAAAIAKJdIl0hr00xyAAAAFUBAAAQAAAAZG9jUHJvcHMvYXBwLnhtbJ2QzW4CIRSF9/MUhL0DdWGMYTAmtWsXo3sCd5QEuARuzfj2Ym1r112en3w5OWo7x8CuUKrHNPC3XnIGyaLz6Tzw4/ixWHNWySRnAiYY+A0q3+pOHQpmKOShskZIdeAXorwRotoLRFP7FqeWTFiioSbLWeA0eQvvaD8jJBJLKVcCZoLkwC3yL5A/iZsr/Rfq0D721dN4y42nO8bUiGTC6CNoqcRLPKJdzsFbQ+0CvQ9+DnVW4q/5XTo9b9KyX8mvwo/RKfH6Q3d3UEsDBBQAAAAIAKJdIl0/A2haLwEAAFoCAAARAAAAZG9jUHJvcHMvY29yZS54bWylksFuwjAMhu99iij3Nk1haIvactjEaZMmAdq0W5SaEq1JoyRQePulHRSYuO3o/L8/O7bz+UE1 [2026-09-02 11:45:34.985] [INFO ] [AzureCommunicationServices] ✅ First attachment contentInBase64 present: 13224 chars (non-empty: true) [2026-09-02 11:45:34.985] [INFO ] [AzureCommunicationServices] Content SHA256: nn9DdzfH9rBO0TsWhnWh... [2026-09-02 11:45:34.986] [INFO ] [AzureCommunicationServices] Signature (first 20 chars): Hx1mG8KTxjkX3G91yLEQ... [2026-09-02 11:45:34.986] [INFO ] [AzureCommunicationServices] Auth: HMAC-SHA256 signature authentication [2026-09-02 11:45:34.986] [INFO ] [AzureCommunicationServices] Headers: Authorization, x-ms-date, host, x-ms-content-sha256 [2026-09-02 11:45:34.986] [DEBUG] [AzureCommunicationServices] Request body prepared [2026-09-02 11:45:34.986] [INFO ] [AzureCommunicationServices] Sending HTTP request to Azure... [2026-09-02 11:45:34.986] [DEBUG] [AzureCommunicationServices] Building HTTP request... [2026-09-02 11:45:34.987] [DEBUG] [AzureCommunicationServices] Executing HTTP request via Finch... [2026-09-02 11:45:35.241] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Controller, "phoenix_client_tms_apps_vidya"}} terminating ** (FunctionClauseError) no function clause matching in DaProductApp.MQTT.Handler.connection/2 (da_product_app 0.1.0) lib/da_product_app/mqtt/handler.ex:13: DaProductApp.MQTT.Handler.connection(:terminated, %{client_id: "phoenix_client_tms_apps_vidya", online_devices: %{"phoenix_client_tms_apps_vidya" => false}}) (tortoise 0.10.0) lib/tortoise/handler.ex:340: Tortoise.Handler.execute/2 (tortoise 0.10.0) lib/tortoise/connection/controller.ex:215: Tortoise.Connection.Controller.handle_info/2 (stdlib 5.2.3.2) gen_server.erl:1095: :gen_server.try_handle_info/3 (stdlib 5.2.3.2) gen_server.erl:1183: :gen_server.handle_msg/6 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 Last message: {{Tortoise, "phoenix_client_tms_apps_vidya"}, :status, :terminated} State: %Tortoise.Connection.Controller{client_id: "phoenix_client_tms_apps_vidya", ping: {[], []}, status: :down, awaiting: %{}, handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_vidya", online_devices: %{"phoenix_client_tms_apps_vidya" => false}}, initial_args: [client_id: "phoenix_client_tms_apps_vidya"]}} [2026-09-02 11:45:35.241] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection, "phoenix_client_tms_apps_vidya"}} terminating ** (stop) :subscription_timeout Last message: :subscribe State: %Tortoise.Connection{client_id: "phoenix_client_tms_apps_vidya", connect: %Tortoise.Package.Connect{__META__: %Tortoise.Package.Meta{opcode: 1, flags: 0}, protocol: "MQTT", protocol_version: 4, user_name: nil, password: nil, clean_session: false, keep_alive: 60, client_id: "phoenix_client_tms_apps_vidya", will: nil}, server: %Tortoise.Transport{type: Tortoise.Transport.Tcp, host: ~c"demo.ctrmv.com", port: 1883, opts: [:binary, {:packet, :raw}, {:active, false}]}, status: :up, backoff: %Tortoise.Connection.Backoff{min_interval: 100, max_interval: 30000, value: nil}, subscriptions: %Tortoise.Package.Subscribe{__META__: %Tortoise.Package.Meta{opcode: 8, flags: 2}, identifier: nil, topics: [{"/ota/+/+/response", 1}, {"ota/+/+/logpush", 1}, {"ota/+/+/response", 1}, {"ota/+/+/screenpush", 0}, {"ota/ack/+", 1}, {"tms/status/+", 1}]}, keep_alive: #Reference<0.545265603.338165762.215567>, opts: [client_id: "phoenix_client_tms_apps_vidya", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_vidya"]}], handler: %Tortoise.Handler{module: DaProductApp.MQTT.Handler, state: %{client_id: "phoenix_client_tms_apps_vidya", online_devices: %{}}, initial_args: [client_id: "phoenix_client_tms_apps_vidya"]}} [2026-09-02 11:45:35.285] [ERROR] GenServer {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_tms_apps_vidya"}} terminating ** (stop) :subscription_timeout Last message: {:EXIT, #PID<0.1413.0>, :subscription_timeout} State: {:state, {:via, Registry, {Tortoise.Registry, {Tortoise.Connection.Supervisor, "phoenix_client_tms_apps_vidya"}}}, :rest_for_one, {[Tortoise.Connection.Controller, Tortoise.Connection.Receiver, Tortoise.Connection.Inflight], %{Tortoise.Connection.Controller => {:child, #PID<0.1452.0>, Tortoise.Connection.Controller, {Tortoise.Connection.Controller, :start_link, [[client_id: "phoenix_client_tms_apps_vidya", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_vidya"]}]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Controller]}, Tortoise.Connection.Inflight => {:child, #PID<0.1431.0>, Tortoise.Connection.Inflight, {Tortoise.Connection.Inflight, :start_link, [[client_id: "phoenix_client_tms_apps_vidya"]]}, :permanent, false, 5000, :worker, [Tortoise.Connection.Inflight]}, Tortoise.Connection.Receiver => {:child, #PID<0.1432.0>, Tortoise.Connection.Receiver, {Tortoise.Connection.Receiver, :start_link, [[client_id: "phoenix_client_tms_apps_vidya"]]}, :permanent, false, 500, :worker, [Tortoise.Connection.Receiver]}}}, :undefined, 3, 5, [-576460731], 0, :never, Tortoise.Connection.Supervisor, [client_id: "phoenix_client_tms_apps_vidya", handler: {DaProductApp.MQTT.Handler, [client_id: "phoenix_client_tms_apps_vidya"]}]} [2026-09-02 11:45:35.289] [INFO ] Device phoenix_client_tms_apps_vidya disconnected [2026-09-02 11:45:35.295] [INFO ] Device phoenix_client_tms_apps_vidya connected [2026-09-02 11:45:35.295] [ERROR] Socket closed before we handed it to the receiver [2026-09-02 11:45:35.298] [INFO ] Device phoenix_client_tms_apps_vidya connected [2026-09-02 11:45:35.298] [INFO ] Device phoenix_client_tms_apps_vidya disconnected [2026-09-02 11:45:35.311] [ERROR] GenStateMachine {Tortoise.Registry, {Tortoise.Connection.Inflight, "phoenix_client_tms_apps_vidya"}} terminating ** (CaseClauseError) no case clause matching: {:error, :closed} (tortoise 0.10.0) lib/tortoise/connection/inflight.ex:292: Tortoise.Connection.Inflight.handle_event/4 (stdlib 5.2.3.2) gen_statem.erl:1397: :gen_statem.loop_state_callback/11 (stdlib 5.2.3.2) proc_lib.erl:241: :proc_lib.init_p_do_apply/3 State: {{:connected, {Tortoise.Transport.Tcp, #Port<0.25>}}, %Tortoise.Connection.Inflight{client_id: "phoenix_client_tms_apps_vidya", pending: %{39192 => %Tortoise.Connection.Inflight.Track{type: Tortoise.Package.Subscribe, polarity: :negative, caller: {#PID<0.1453.0>, #Reference<0.545265603.338165762.216656>}, identifier: 39192, status: [], pending: [[dispatch: %Tortoise.Package.Subscribe{__META__: %Tortoise.Package.Meta{opcode: 8, flags: 2}, identifier: 39192, topics: [{"/ota/+/+/response", 1}, {"ota/+/+/logpush", 1}, {"ota/+/+/response", 1}, {"ota/+/+/screenpush", 0}, {"ota/ack/+", 1}, {"tms/status/+", 1}]}, received: %Tortoise.Package.Suback{__META__: %Tortoise.Package.Meta{opcode: 9, flags: 0}, identifier: 39192, acks: []}], [{:respond, {#PID<0.1453.0>, #Reference<0.545265603.338165762.216656>}}, :cleanup]]}}, order: [39192]}} Callback mode: :handle_event_function Postponed events: [] Last event: {:internal, {:execute, %Tortoise.Connection.Inflight.Track{type: Tortoise.Package.Subscribe, polarity: :negative, caller: {#PID<0.1453.0>, #Reference<0.545265603.338165762.216656>}, identifier: 39192, status: [], pending: [[dispatch: %Tortoise.Package.Subscribe{__META__: %Tortoise.Package.Meta{opcode: 8, flags: 2}, identifier: 39192, topics: [{"/ota/+/+/response", 1}, {"ota/+/+/logpush", 1}, {"ota/+/+/response", 1}, {"ota/+/+/screenpush", 0}, {"ota/ack/+", 1}, {"tms/status/+", 1}]}, received: %Tortoise.Package.Suback{__META__: %Tortoise.Package.Meta{opcode: 9, flags: 0}, identifier: 39192, acks: []}], [{:respond, {#PID<0.1453.0>, #Reference<0.545265603.338165762.216656>}}, :cleanup]]}}} Queued events: [] State: {{:connected, {Tortoise.Transport.Tcp, #Port<0.25>}}, %Tortoise.Connection.Inflight{client_id: "phoenix_client_tms_apps_vidya", pending: %{39192 => %Tortoise.Connection.Inflight.Track{type: Tortoise.Package.Subscribe, polarity: :negative, caller: {#PID<0.1453.0>, #Reference<0.545265603.338165762.216656>}, identifier: 39192, status: [], pending: [[dispatch: %Tortoise.Package.Subscribe{__META__: %Tortoise.Package.Meta{opcode: 8, flags: 2}, identifier: 39192, topics: [{"/ota/+/+/response", 1}, {"ota/+/+/logpush", 1}, {"ota/+/+/response", 1}, {"ota/+/+/screenpush", 0}, {"ota/ack/+", 1}, {"tms/status/+", 1}]}, received: %Tortoise.Package.Suback{__META__: %Tortoise.Package.Meta{opcode: 9, flags: 0}, identifier: 39192, acks: []}], [{:respond, {#PID<0.1453.0>, #Reference<0.545265603.338165762.216656>}}, :cleanup]]}}, order: [39192]}} [2026-09-02 11:45:36.943] [INFO ] [AzureCommunicationServices] HTTP Response: 202 (Success) [2026-09-02 11:45:36.943] [INFO ] [AzureCommunicationServices] Response body: {"id":"5222704b-11b2-4f1f-bc31-4c07b8b4756d","status":"Running","error":null} [2026-09-02 11:45:36.943] [INFO ] [AzureCommunicationServices] Parsed response: %{"error" => nil, "id" => "5222704b-11b2-4f1f-bc31-4c07b8b4756d", "status" => "Running"} [2026-09-02 11:45:36.944] [INFO ] [AzureCommunicationServices] ✅ Email sent successfully to [{"", "sunny@dataaegis.com"}] [2026-09-02 11:45:36.944] [INFO ] [SettlementNotifier] ===== MAILER.DELIVER RESULT ===== [2026-09-02 11:45:36.944] [INFO ] [SettlementNotifier] Result: {:ok, %{id: "5222704b-11b2-4f1f-bc31-4c07b8b4756d", status: 202}} [2026-09-02 11:45:36.944] [INFO ] [SettlementNotifier] ✅ Email delivery SUCCESS [2026-09-02 11:45:36.944] [INFO ] [MprDispatchWorker] SettlementNotifier result for MID=425590250000000: {:ok, %{id: "5222704b-11b2-4f1f-bc31-4c07b8b4756d", status: 202}} [2026-09-02 11:45:36.973] [DEBUG] QUERY OK source="settlement_mis_items" db=25.6ms queue=3.4ms idle=984.9ms UPDATE `settlement_mis_items` AS s0 SET s0.`mpr_sent` = ? WHERE (s0.`id` IN (?)) [true, 435] ↳ SettlementCore.Workers.MprDispatchWorker.dispatch_mpr_for_merchant/4, at: lib/settlement_core/workers/mpr_dispatch_worker.ex:223 [2026-09-02 11:45:36.974] [INFO ] [MprDispatchWorker] MPR dispatch complete mis_id=326 sent=2 failed=0 [2026-09-02 11:45:36.974] [INFO ] MprDispatchWorker.perform :ok [2026-09-02 11:45:36.974] [INFO ] === Recovery CSV content (batch 182) === [2026-09-02 11:45:36.976] [DEBUG] QUERY OK source="payout_batches" db=0.6ms queue=0.7ms idle=400.9ms SELECT p0.`id`, p0.`settlement_mis_id`, p0.`payout_date`, p0.`batch_type`, p0.`total_merchants`, p0.`total_items`, p0.`total_amount`, p0.`currency`, p0.`file_path`, p0.`file_name`, p0.`encryption_method`, p0.`batch_reference`, p0.`encrypted_file_path`, p0.`file_hash`, p0.`encryption_key_ref`, p0.`generated_by`, p0.`generated_at`, p0.`transmission_method`, p0.`status`, p0.`transmitted_at`, p0.`transmission_reference`, p0.`bank_confirmation_ref`, p0.`failure_reason`, p0.`confirmed_at`, p0.`confirmed_item_count`, p0.`rejected_item_count`, p0.`inserted_at`, p0.`updated_at` FROM `payout_batches` AS p0 WHERE (p0.`id` = ?) [182] ↳ :elixir_compiler_8.__FILE__/1, at: e2e_retrigger_mpr_and_transmit.exs:21 [2026-09-02 11:45:37.019] [DEBUG] QUERY OK source="payout_items" db=2.7ms queue=40.5ms idle=2.7ms SELECT p0.`id`, p0.`payout_batch_id`, p0.`settlement_mis_id`, p0.`settlement_date`, p0.`merchant_mid`, p0.`merchant_id`, p0.`merchant_name`, p0.`merchant_ref_number`, p0.`bank_name`, p0.`iban`, p0.`account_number`, p0.`bank_code`, p0.`currency`, p0.`gross_amount`, p0.`total_deductions`, p0.`payout_amount`, p0.`transaction_count`, p0.`net_settlement_amount`, p0.`total_adjustments_credit`, p0.`total_adjustments_debit`, p0.`final_payout_amount`, p0.`total_gross_amount`, p0.`total_mdr_amount`, p0.`total_vat_amount`, p0.`status`, p0.`bank_transfer_ref`, p0.`confirmed_at`, p0.`rejection_reason`, p0.`rejected_at`, p0.`re_initiated_at`, p0.`re_initiated_batch_id`, p0.`inserted_at`, p0.`updated_at` FROM `payout_items` AS p0 WHERE (p0.`payout_batch_id` = ?) ORDER BY p0.`merchant_mid` [182] ↳ SettlementCore.PayoutGenerator.generate_recovery_csv/1, at: lib/settlement_core/payout_generator.ex:151 [2026-09-02 11:45:37.022] [DEBUG] QUERY OK source="tid_masters" db=1.1ms queue=0.6ms idle=44.0ms SELECT t0.`mid`, a3.`line1`, a3.`country`, t0.`registered_email` FROM `tid_masters` AS t0 LEFT OUTER JOIN `brands` AS b1 ON b1.`merchant_reference_id` COLLATE utf8mb4_unicode_ci = t0.`merchant_ref_number` COLLATE utf8mb4_unicode_ci LEFT OUTER JOIN `stores` AS s2 ON s2.`brand_id` = b1.`id` LEFT OUTER JOIN `addresses` AS a3 ON a3.`id` = s2.`address_id` WHERE (t0.`mid` IN (?) OR t0.`merchant_ref_number` IN (?)) ["E2E_M3_TEST001", "E2E_M3_TEST001"] ↳ SettlementCore.PayoutGenerator.prefetch_merchant_details/1, at: lib/settlement_core/payout_generator.ex:484 [2026-09-02 11:45:37.022] [INFO ] DD,Test Bank,E2E Test Merchant Three,120.00,AED,AE000000000000000000003,,sunny@dataaegis.com,BATCH-20260831-326-RCV,United Arab Emirates,,,,,2,RECOVERY,/REF/,,,, [2026-09-02 11:50:17.504] [INFO ] Running offline device check... [2026-09-02 11:50:17.504] [INFO ] Starting offline device check... [2026-09-02 11:50:17.506] [DEBUG] QUERY OK source="tms_terminals" db=1.7ms idle=304.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1234 [2026-09-02 11:50:17.507] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=132.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [1] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:50:17.508] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms decode=0.1ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:50:17.510] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:50:17.511] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:50:17.511] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms queue=0.1ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:50:17.513] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:50:17.513] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:50:17.514] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:50:17.515] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:50:17.515] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:50:17.517] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=0.4ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:50:17.517] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:50:17.519] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:50:17.520] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=0.1ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:50:17.521] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:50:17.522] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:50:17.523] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:50:17.525] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:50:17.526] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.4ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:50:17.527] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.1ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:50:17.529] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:50:17.530] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:50:17.530] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:50:17.531] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:50:17.532] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:50:17.533] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:50:17.534] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.2ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:50:17.535] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:50:17.537] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:50:17.538] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:50:17.539] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:50:17.540] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:50:17.541] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:50:17.542] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:50:17.542] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:50:17.543] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:50:17.546] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:50:17.548] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:50:17.549] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.4ms idle=2.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:50:17.551] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:50:17.553] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=2.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:50:17.555] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=2.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:50:17.557] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=3.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:50:17.558] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:50:17.559] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:50:17.560] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:50:17.560] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:50:17.561] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:50:17.562] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:50:17.563] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:50:17.564] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:50:17.565] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:50:17.566] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [82] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:50:17.567] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [83] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:50:17.567] [INFO ] Offline device check completed. Found 52 offline devices, updated 0 statuses. [2026-09-02 11:50:17.568] [INFO ] Offline device check completed successfully [2026-09-02 11:55:17.569] [INFO ] Running offline device check... [2026-09-02 11:55:17.569] [INFO ] Starting offline device check... [2026-09-02 11:55:17.570] [DEBUG] QUERY OK source="tms_terminals" db=1.0ms idle=915.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1234 [2026-09-02 11:55:17.572] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=336.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [1] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:55:17.574] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms queue=0.1ms idle=2.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:55:17.575] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:55:17.576] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:55:17.576] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:55:17.577] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:55:17.578] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:55:17.580] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:55:17.580] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:55:17.581] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:55:17.583] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:55:17.584] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:55:17.585] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:55:17.585] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:55:17.586] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:55:17.587] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:55:17.588] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:55:17.589] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:55:17.590] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:55:17.591] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:55:17.592] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:55:17.593] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:55:17.593] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:55:17.594] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:55:17.595] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:55:17.596] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.1ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:55:17.597] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.3ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:55:17.598] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:55:17.599] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:55:17.600] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:55:17.601] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:55:17.602] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=0.1ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:55:17.603] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:55:17.604] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:55:17.605] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.1ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:55:17.605] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:55:17.606] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:55:17.608] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:55:17.609] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:55:17.610] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.1ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:55:17.611] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms queue=0.1ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:55:17.612] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:55:17.613] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms decode=0.1ms queue=0.1ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:55:17.614] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.1ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:55:17.615] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:55:17.616] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:55:17.617] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:55:17.617] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.1ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:55:17.618] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:55:17.618] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:55:17.619] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:55:17.621] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:55:17.622] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [82] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:55:17.623] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [83] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 11:55:17.623] [INFO ] Offline device check completed. Found 52 offline devices, updated 0 statuses. [2026-09-02 11:55:17.623] [INFO ] Offline device check completed successfully [2026-09-02 12:00:16.822] [INFO ] Performing scheduled filter cache refresh... [2026-09-02 12:00:16.825] [DEBUG] QUERY OK source="tms_terminals" db=2.7ms queue=0.1ms idle=1566.9ms SELECT t0.`area`, t0.`vendor`, t0.`model` FROM `tms_terminals` AS t0 WHERE ((NOT (t0.`area` IS NULL) OR NOT (t0.`vendor` IS NULL)) OR NOT (t0.`model` IS NULL)) [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_terminal_filter_data/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:153 [2026-09-02 12:00:16.826] [DEBUG] QUERY OK source="filter_usage" db=0.4ms idle=701.0ms SELECT f0.`filter_type`, f0.`filter_value`, coalesce(sum(f0.`usage_count`), 0) FROM `filter_usage` AS f0 GROUP BY f0.`filter_type`, f0.`filter_value` [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_usage_statistics/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:190 [2026-09-02 12:00:16.826] [INFO ] Filter cache rebuilt: 0 areas, 5 vendors, 8 models [2026-09-02 12:00:17.624] [INFO ] Running offline device check... [2026-09-02 12:00:17.625] [INFO ] Starting offline device check... [2026-09-02 12:00:17.626] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=798.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1234 [2026-09-02 12:00:17.628] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.2ms idle=501.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [1] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:00:17.630] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:00:17.631] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:00:17.632] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:00:17.632] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:00:17.633] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:00:17.634] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:00:17.635] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:00:17.636] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:00:17.636] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:00:17.637] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:00:17.638] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:00:17.639] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:00:17.641] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:00:17.642] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:00:17.645] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms queue=0.1ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:00:17.645] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.2ms idle=3.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:00:17.647] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:00:17.648] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:00:17.649] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:00:17.651] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:00:17.652] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:00:17.654] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:00:17.655] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:00:17.655] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:00:17.656] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:00:17.657] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:00:17.659] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:00:17.660] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.3ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:00:17.662] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:00:17.663] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:00:17.665] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:00:17.667] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:00:17.667] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:00:17.668] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:00:17.669] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:00:17.671] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:00:17.672] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:00:17.673] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=0.1ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:00:17.675] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:00:17.677] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.2ms idle=2.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:00:17.678] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:00:17.679] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:00:17.679] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:00:17.681] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:00:17.683] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:00:17.684] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:00:17.685] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:00:17.685] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:00:17.686] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:00:17.687] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:00:17.687] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:00:17.688] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [82] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:00:17.689] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [83] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:00:17.689] [INFO ] Offline device check completed. Found 51 offline devices, updated 0 statuses. [2026-09-02 12:00:17.689] [INFO ] Offline device check completed successfully [2026-09-02 12:05:17.690] [INFO ] Running offline device check... [2026-09-02 12:05:17.690] [INFO ] Starting offline device check... [2026-09-02 12:05:17.692] [DEBUG] QUERY OK source="tms_terminals" db=2.1ms idle=400.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1234 [2026-09-02 12:05:17.695] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms idle=213.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [1] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:05:17.697] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms queue=0.1ms idle=3.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:05:17.698] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:05:17.699] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:05:17.700] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:05:17.701] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:05:17.703] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:05:17.704] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms decode=0.1ms idle=2.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:05:17.705] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:05:17.707] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms queue=0.2ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:05:17.708] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:05:17.709] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:05:17.710] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:05:17.711] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:05:17.713] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:05:17.713] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:05:17.714] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:05:17.715] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:05:17.716] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:05:17.717] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:05:17.721] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms queue=1.2ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:05:17.724] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.7ms idle=3.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:05:17.724] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=3.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:05:17.726] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:05:17.726] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:05:17.728] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms queue=0.6ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:05:17.730] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:05:17.736] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.9ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:05:17.737] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=5.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:05:17.739] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:05:17.740] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:05:17.741] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:05:17.742] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:05:17.742] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:05:17.743] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:05:17.744] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:05:17.745] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:05:17.747] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.3ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:05:17.748] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:05:17.749] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:05:17.750] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:05:17.751] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:05:17.752] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:05:17.753] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:05:17.756] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.3ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:05:17.757] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.1ms idle=2.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:05:17.758] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:05:17.760] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:05:17.761] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:05:17.763] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:05:17.763] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:05:17.764] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:05:17.765] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [82] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:05:17.766] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [83] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:05:17.766] [INFO ] Offline device check completed. Found 51 offline devices, updated 0 statuses. [2026-09-02 12:05:17.766] [INFO ] Offline device check completed successfully [2026-09-02 12:10:17.768] [INFO ] Running offline device check... [2026-09-02 12:10:17.768] [INFO ] Starting offline device check... [2026-09-02 12:10:17.771] [DEBUG] QUERY OK source="tms_terminals" db=2.0ms idle=1451.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1234 [2026-09-02 12:10:17.774] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms idle=898.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [1] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:10:17.776] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.2ms idle=4.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:10:17.778] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:10:17.779] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:10:17.780] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:10:17.781] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:10:17.784] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms queue=1.3ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:10:17.786] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms queue=0.9ms idle=3.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:10:17.789] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:10:17.792] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=3.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:10:17.794] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=3.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:10:17.798] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.1ms idle=3.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:10:17.799] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=3.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:10:17.800] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:10:17.804] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.1ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:10:17.806] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms idle=3.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:10:17.808] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=3.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:10:17.810] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:10:17.812] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=1.8ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:10:17.814] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=2.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:10:17.816] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:10:17.817] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:10:17.821] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.2ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:10:17.822] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=3.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:10:17.823] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:10:17.824] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:10:17.825] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:10:17.826] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:10:17.827] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:10:17.829] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:10:17.832] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.9ms idle=2.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:10:17.834] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=4.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:10:17.836] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms queue=0.1ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:10:17.837] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:10:17.840] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms queue=0.5ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:10:17.841] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=3.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:10:17.842] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:10:17.843] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:10:17.844] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:10:17.845] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:10:17.846] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.1ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:10:17.847] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms queue=0.1ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:10:17.849] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:10:17.850] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:10:17.851] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:10:17.852] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.2ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:10:17.854] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:10:17.856] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:10:17.857] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:10:17.860] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.5ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:10:17.861] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=4.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:10:17.866] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.8ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:10:17.867] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=4.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [82] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:10:17.867] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [83] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:10:17.867] [INFO ] Offline device check completed. Found 51 offline devices, updated 0 statuses. [2026-09-02 12:10:17.867] [INFO ] Offline device check completed successfully [2026-09-02 12:15:16.827] [INFO ] Performing scheduled filter cache refresh... [2026-09-02 12:15:16.828] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms queue=0.1ms idle=423.3ms SELECT t0.`area`, t0.`vendor`, t0.`model` FROM `tms_terminals` AS t0 WHERE ((NOT (t0.`area` IS NULL) OR NOT (t0.`vendor` IS NULL)) OR NOT (t0.`model` IS NULL)) [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_terminal_filter_data/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:153 [2026-09-02 12:15:16.830] [DEBUG] QUERY OK source="filter_usage" db=0.5ms idle=337.9ms SELECT f0.`filter_type`, f0.`filter_value`, coalesce(sum(f0.`usage_count`), 0) FROM `filter_usage` AS f0 GROUP BY f0.`filter_type`, f0.`filter_value` [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_usage_statistics/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:190 [2026-09-02 12:15:16.830] [INFO ] Filter cache rebuilt: 0 areas, 5 vendors, 8 models [2026-09-02 12:15:17.868] [INFO ] Running offline device check... [2026-09-02 12:15:17.868] [INFO ] Starting offline device check... [2026-09-02 12:15:17.877] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms queue=6.6ms idle=1038.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1234 [2026-09-02 12:15:17.882] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms queue=0.2ms idle=380.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [1] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:15:17.885] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms queue=0.1ms idle=5.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:15:17.887] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms queue=0.4ms idle=2.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:15:17.891] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.5ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:15:17.891] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=4.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:15:17.893] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:15:17.895] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:15:17.895] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.1ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:15:17.897] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:15:17.898] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms queue=0.1ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:15:17.900] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:15:17.902] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:15:17.903] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:15:17.904] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:15:17.911] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.7ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:15:17.916] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.0ms idle=6.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:15:17.921] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.6ms queue=0.4ms idle=7.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:15:17.923] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=5.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:15:17.927] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms queue=1.5ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:15:17.929] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=4.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:15:17.936] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.6ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:15:17.940] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms queue=0.2ms idle=9.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:15:17.941] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms queue=0.1ms idle=3.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:15:17.943] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:15:17.946] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.8ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:15:17.947] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=3.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:15:17.949] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:15:17.950] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:15:17.952] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms queue=0.9ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:15:17.954] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:15:17.956] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:15:17.957] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.4ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:15:17.958] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.1ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:15:17.959] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:15:17.961] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms queue=0.6ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:15:17.964] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=4.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:15:17.965] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=3.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:15:17.967] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:15:17.974] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.3ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:15:17.976] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms queue=0.5ms idle=7.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:15:17.981] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.3ms decode=0.4ms idle=3.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:15:17.982] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms queue=0.1ms idle=5.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:15:17.984] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms queue=0.3ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:15:17.992] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.2ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:15:17.994] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms queue=0.6ms idle=7.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:15:17.995] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.1ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:15:17.996] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:15:17.999] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.6ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:15:18.002] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.7ms queue=0.2ms idle=3.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:15:18.003] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=3.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:15:18.006] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms queue=1.3ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:15:18.009] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=5.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:15:18.013] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.3ms queue=0.7ms idle=3.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [82] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:15:18.014] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=4.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [83] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:15:18.015] [INFO ] Offline device check completed. Found 51 offline devices, updated 0 statuses. [2026-09-02 12:15:18.015] [INFO ] Offline device check completed successfully [2026-09-02 12:20:16.845] [INFO ] Starting scheduled rule validation [2026-09-02 12:20:16.846] [DEBUG] Validating missing assignments [2026-09-02 12:20:16.847] [DEBUG] QUERY OK source="terminal_group_rules" db=0.8ms idle=1279.1ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_all_rules/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:194 [2026-09-02 12:20:16.848] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=702.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_all_rules/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:196 [2026-09-02 12:20:16.849] [DEBUG] Re-applied 0 rules during validation [2026-09-02 12:20:16.849] [DEBUG] Validating invalid assignments [2026-09-02 12:20:16.849] [DEBUG] Validating rule consistency [2026-09-02 12:20:16.849] [DEBUG] Updating group terminal counts [2026-09-02 12:20:16.850] [DEBUG] QUERY OK source="terminal_groups" db=0.5ms idle=2.3ms SELECT count(t0.`id`) FROM `terminal_groups` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:248 [2026-09-02 12:20:16.852] [DEBUG] QUERY OK source="terminal_groups" db=1.8ms idle=1.7ms SELECT count(t0.`id`) FROM `terminal_groups` AS t0 WHERE (t0.`is_active` = TRUE) [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:249 [2026-09-02 12:20:16.853] [DEBUG] QUERY OK source="terminal_groups" db=0.6ms idle=2.6ms SELECT t0.`group_type`, count(t0.`id`) FROM `terminal_groups` AS t0 GROUP BY t0.`group_type` [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:255 [2026-09-02 12:20:16.854] [DEBUG] QUERY OK source="terminal_group_rules" db=0.9ms idle=1.3ms SELECT count(t0.`id`) FROM `terminal_group_rules` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:258 [2026-09-02 12:20:16.856] [DEBUG] QUERY OK source="terminal_group_rules" db=1.2ms queue=0.1ms idle=1.3ms SELECT count(t0.`id`) FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:259 [2026-09-02 12:20:16.856] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.3ms idle=1.9ms SELECT count(t0.`id`) FROM `terminal_group_memberships` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:261 [2026-09-02 12:20:16.858] [DEBUG] QUERY OK source="terminal_group_memberships" db=1.1ms idle=0.8ms SELECT count(t0.`id`) FROM `terminal_group_memberships` AS t0 WHERE (t0.`is_active` = TRUE) [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:262 [2026-09-02 12:20:16.859] [DEBUG] QUERY OK source="terminal_group_memberships" db=1.1ms idle=1.6ms SELECT t0.`assignment_type`, count(t0.`id`) FROM `terminal_group_memberships` AS t0 WHERE (t0.`is_active` = TRUE) GROUP BY t0.`assignment_type` [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:269 [2026-09-02 12:20:16.859] [DEBUG] Current group statistics: %{rules: %{active: 0, total: 0}, groups: %{active: 4, total: 4, by_type: %{"custom" => 4}}, assignments: %{active: 2, total: 2, by_type: %{"manual" => 2}}} [2026-09-02 12:20:16.860] [INFO ] Rule validation completed - applied 0 fixes [2026-09-02 12:20:18.016] [INFO ] Running offline device check... [2026-09-02 12:20:18.017] [INFO ] Starting offline device check... [2026-09-02 12:20:18.020] [DEBUG] QUERY OK source="tms_terminals" db=3.3ms queue=0.1ms idle=1157.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1234 [2026-09-02 12:20:18.026] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.8ms idle=872.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [1] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:20:18.029] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.4ms idle=6.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:20:18.032] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.1ms idle=3.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:20:18.039] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.9ms idle=3.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:20:18.049] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.6ms idle=6.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:20:18.052] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms idle=11.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:20:18.056] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms queue=1.7ms idle=3.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:20:18.060] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.6ms idle=4.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:20:18.062] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms queue=0.1ms idle=4.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:20:18.064] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=2.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:20:18.066] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:20:18.068] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:20:18.071] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.7ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:20:18.073] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=3.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:20:18.075] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms queue=0.2ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:20:18.078] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:20:18.079] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:20:18.083] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms queue=0.1ms idle=3.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:20:18.086] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.5ms idle=4.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:20:18.100] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.7ms queue=0.1ms idle=9.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:20:18.103] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.9ms idle=13.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:20:18.107] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms decode=0.6ms queue=0.1ms idle=4.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:20:18.108] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.3ms idle=4.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:20:18.110] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:20:18.113] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms queue=0.4ms idle=3.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:20:18.114] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=3.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:20:18.118] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.5ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:20:18.121] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms idle=4.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:20:18.122] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:20:18.126] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.1ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:20:18.129] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.9ms idle=3.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:20:18.131] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=3.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:20:18.133] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms queue=1.1ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:20:18.136] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=4.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:20:18.138] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=3.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:20:18.142] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=3.0ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:20:18.146] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=1.7ms idle=5.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:20:18.149] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.6ms idle=4.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:20:18.151] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=3.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:20:18.158] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms queue=4.6ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:20:18.162] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.6ms idle=0.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:20:18.168] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=3.8ms idle=0.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:20:18.173] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.6ms idle=5.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:20:18.176] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.4ms idle=6.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:20:18.179] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.6ms idle=3.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:20:18.183] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.9ms idle=4.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:20:18.190] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=9.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:20:18.192] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms idle=7.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:20:18.195] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:20:18.195] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=3.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:20:18.197] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:20:18.199] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=3.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:20:18.208] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=3.0ms idle=7.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [82] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:20:18.212] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.0ms idle=8.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [83] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:20:18.212] [INFO ] Offline device check completed. Found 51 offline devices, updated 0 statuses. [2026-09-02 12:20:18.212] [INFO ] Offline device check completed successfully [2026-09-02 12:20:33.547] [INFO ] GET /admin/settlements/mis [2026-09-02 12:20:33.599] [DEBUG] Processing with PlatformWeb.SettlementLive.MisApproval.index/2 Parameters: %{} Pipelines: [:browser, :require_authenticated_user] [2026-09-02 12:20:33.672] [DEBUG] QUERY OK source="users_tokens" db=1.1ms idle=1189.7ms SELECT u1.`id`, u1.`email`, u1.`hashed_password`, u1.`confirmed_at`, u1.`role`, u1.`name`, u1.`first_name`, u1.`last_name`, u1.`data`, u1.`inserted_at`, u1.`updated_at` FROM `users_tokens` AS u0 INNER JOIN `users` AS u1 ON u1.`id` = u0.`user_id` WHERE ((u0.`token` = ?) AND (u0.`context` = ?)) AND (u0.`inserted_at` > date_add(?, INTERVAL -(60) day)) [<<213, 32, 140, 146, 229, 21, 137, 113, 114, 76, 126, 65, 60, 16, 236, 111, 126, 32, 254, 167, 187, 35, 180, 237, 118, 110, 98, 232, 176, 39, 166, 51>>, "session", ~U[2026-09-02 12:20:33.648735Z]] ↳ PlatformWeb.UserAuth.fetch_current_user/2, at: lib/platform_web/user_auth.ex:97 [2026-09-02 12:20:33.715] [DEBUG] QUERY OK source="settlement_mis" db=1.6ms idle=466.4ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 ORDER BY s0.`mis_date` DESC LIMIT 100 [] ↳ PlatformWeb.SettlementLive.MisApproval.load_mis_rows/1, at: lib/platform_web/live/settlement_live/mis_approval.ex:527 [2026-09-02 12:20:33.793] [INFO ] Sent 200 in 245ms [2026-09-02 12:20:35.510] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 70µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "LAEoEnstNBYHKWY-OVgmARpxKyggB0RyudquOGUISQ6oMjKsW0oxT2r4", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://localhost:5329/assets/app.css", "1" => "http://localhost:5329/assets/app.js"}, "vsn" => "2.0.0"} [2026-09-02 12:20:35.661] [DEBUG] MOUNT PlatformWeb.SettlementLive.MisApproval Parameters: %{} Session: %{"_csrf_token" => "YeYg4ja_TxPQt2mrMADPt56F", "live_socket_id" => "users_sessions:1SCMkuUViXFyTH5BPBDsb34g_qe7I7Ttdm5i6LAnpjM=", "user_token" => <<213, 32, 140, 146, 229, 21, 137, 113, 114, 76, 126, 65, 60, 16, 236, 111, 126, 32, 254, 167, 187, 35, 180, 237, 118, 110, 98, 232, 176, 39, 166, 51>>} [2026-09-02 12:20:35.666] [DEBUG] QUERY OK source="users_tokens" db=0.6ms idle=184.0ms SELECT u1.`id`, u1.`email`, u1.`hashed_password`, u1.`confirmed_at`, u1.`role`, u1.`name`, u1.`first_name`, u1.`last_name`, u1.`data`, u1.`inserted_at`, u1.`updated_at` FROM `users_tokens` AS u0 INNER JOIN `users` AS u1 ON u1.`id` = u0.`user_id` WHERE ((u0.`token` = ?) AND (u0.`context` = ?)) AND (u0.`inserted_at` > date_add(?, INTERVAL -(60) day)) [<<213, 32, 140, 146, 229, 21, 137, 113, 114, 76, 126, 65, 60, 16, 236, 111, 126, 32, 254, 167, 187, 35, 180, 237, 118, 110, 98, 232, 176, 39, 166, 51>>, "session", ~U[2026-09-02 12:20:35.661695Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-09-02 12:20:35.672] [DEBUG] QUERY OK source="settlement_mis" db=5.6ms idle=400.9ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 ORDER BY s0.`mis_date` DESC LIMIT 100 [] ↳ PlatformWeb.SettlementLive.MisApproval.load_mis_rows/1, at: lib/platform_web/live/settlement_live/mis_approval.ex:527 [2026-09-02 12:20:35.675] [DEBUG] Replied in 13ms [2026-09-02 12:20:37.504] [DEBUG] HANDLE EVENT "mis_row_clicked" in PlatformWeb.SettlementLive.MisApproval Parameters: %{"id" => 326} [2026-09-02 12:20:37.506] [DEBUG] QUERY OK source="settlement_mis" db=1.1ms idle=231.6ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 WHERE (s0.`id` = ?) [326] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:284 [2026-09-02 12:20:37.522] [DEBUG] QUERY OK source="settlement_mis_items" db=1.8ms idle=48.7ms SELECT s0.`merchant_mid`, s0.`merchant_id`, MAX(s0.`merchant_name`), sum(s0.`transaction_count`), sum(s0.`total_gross_amount`), sum(s0.`total_mdr_amount`), sum(s0.`total_vat_amount`), sum(s0.`total_interchange_fee`), sum(s0.`net_payable`), GROUP_CONCAT(DISTINCT s0.`scheme_name` SEPARATOR ', '), GROUP_CONCAT(DISTINCT s0.`card_type_code` SEPARATOR ', ') FROM `settlement_mis_items` AS s0 WHERE (s0.`settlement_mis_id` = ?) GROUP BY s0.`merchant_mid`, s0.`merchant_id` [326] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:285 [2026-09-02 12:20:37.535] [DEBUG] QUERY OK source="merchant_adjustments" db=1.8ms queue=0.4ms idle=26.6ms SELECT m0.`id`, m0.`merchant_mid`, m0.`merchant_name`, m0.`adjustment_date`, m0.`debit_credit`, m0.`amount`, m0.`currency`, m0.`adjustment_type`, m0.`description`, m0.`settlement_mis_id`, m0.`status`, m0.`applied_at`, m0.`cancelled_at`, m0.`cancel_reason`, m0.`approval_status`, m0.`level1_reviewed_by`, m0.`level1_reviewed_at`, m0.`level2_approved_by`, m0.`level2_approved_at`, m0.`rejected_by`, m0.`rejected_at`, m0.`rejection_reason`, m0.`created_by`, m0.`updated_by`, m0.`inserted_at`, m0.`updated_at` FROM `merchant_adjustments` AS m0 WHERE (m0.`adjustment_date` = ?) AND (m0.`approval_status` = 'approved') [~D[2026-08-31]] ↳ SettlementCore.Context.list_approved_adjustments_by_date/1, at: lib/settlement_core/context.ex:971 [2026-09-02 12:20:37.558] [DEBUG] QUERY OK source="core_transactions" db=1.1ms queue=0.1ms idle=35.3ms SELECT DISTINCT c0.`merchant_mid`, coalesce(t1.`merchant_name_legal`, t1.`merchant_name_dba`) FROM `core_transactions` AS c0 INNER JOIN `tid_masters` AS t1 ON t1.`mid` = c0.`merchant_mid` WHERE (DATE(c0.`transaction_datetime`) = ?) AND ((c0.`risk_hold` = TRUE) OR (c0.`settlement_status` = 'exception_hold')) AND (NOT (c0.`merchant_mid` IN (SELECT DISTINCT ss0.`merchant_mid` FROM `settlement_mis_items` AS ss0 WHERE (ss0.`settlement_mis_id` = ?)))) [~D[2026-08-31], 326] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:301 [2026-09-02 12:20:37.559] [DEBUG] Replied in 54ms [2026-09-02 12:20:40.991] [DEBUG] HANDLE EVENT "expand_merchant" in PlatformWeb.SettlementLive.MisApproval Parameters: %{"mid" => "E2E_M3_TEST001"} [2026-09-02 12:20:41.003] [DEBUG] QUERY OK source="settlement_mis_items" db=2.1ms queue=9.3ms idle=1519.8ms SELECT s0.`id`, s0.`settlement_mis_id`, s0.`core_transaction_id`, s0.`merchant_mid`, s0.`merchant_id`, s0.`merchant_name`, s0.`merchant_ref_number`, s0.`bank_name`, s0.`iban`, s0.`account_number`, s0.`settlement_date`, s0.`rrn`, s0.`tid`, s0.`auth_number`, s0.`transaction_date`, s0.`transaction_type`, s0.`scheme_name`, s0.`card_type_code`, s0.`gross_amount`, s0.`mdr_percentage_rate`, s0.`mdr_amount`, s0.`vat_rate`, s0.`vat_amount`, s0.`interchange_fee`, s0.`adjustment_amount`, s0.`ar_recovery`, s0.`net_payable`, s0.`transaction_count`, s0.`total_gross_amount`, s0.`total_mdr_amount`, s0.`total_vat_amount`, s0.`total_interchange_fee`, s0.`total_net_settlement_amount`, s0.`risk_status`, s0.`exception_type`, s0.`mpr_sent`, s0.`margin_contribution`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis_items` AS s0 WHERE ((s0.`settlement_mis_id` = ?) AND (s0.`merchant_mid` = ?)) ORDER BY s0.`card_type_code` [326, "E2E_M3_TEST001"] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:341 [2026-09-02 12:20:41.005] [DEBUG] QUERY OK source="merchant_adjustments" db=1.7ms idle=714.0ms SELECT m0.`id`, m0.`merchant_mid`, m0.`merchant_name`, m0.`adjustment_date`, m0.`debit_credit`, m0.`amount`, m0.`currency`, m0.`adjustment_type`, m0.`description`, m0.`settlement_mis_id`, m0.`status`, m0.`applied_at`, m0.`cancelled_at`, m0.`cancel_reason`, m0.`approval_status`, m0.`level1_reviewed_by`, m0.`level1_reviewed_at`, m0.`level2_approved_by`, m0.`level2_approved_at`, m0.`rejected_by`, m0.`rejected_at`, m0.`rejection_reason`, m0.`created_by`, m0.`updated_by`, m0.`inserted_at`, m0.`updated_at` FROM `merchant_adjustments` AS m0 WHERE (m0.`adjustment_date` = ?) AND (m0.`approval_status` = 'approved') [~D[2026-08-31]] ↳ SettlementCore.Context.list_approved_adjustments_by_date/1, at: lib/settlement_core/context.ex:971 [2026-09-02 12:20:41.016] [DEBUG] QUERY OK source="core_transactions" db=0.7ms queue=2.1ms idle=10.2ms SELECT c0.`id`, c0.`source_type`, c0.`source_ref_id`, c0.`settlement_batch_id`, c0.`rrn`, c0.`tid`, c0.`auth_number`, c0.`stan`, c0.`invoice_number`, c0.`batch_number`, c0.`merchant_mid`, c0.`merchant_id`, c0.`merchant_ref_number`, c0.`transaction_amount`, c0.`transaction_currency`, c0.`transaction_type`, c0.`transaction_datetime`, c0.`masked_pan`, c0.`scheme_name`, c0.`card_holder_name`, c0.`customer_mobile`, c0.`customer_country`, c0.`mcc_code`, c0.`card_type_id`, c0.`card_type_code`, c0.`mdr_template_id`, c0.`mdr_percentage_rate`, c0.`mdr_fixed_fee`, c0.`mdr_minimum_fee`, c0.`mdr_maximum_fee`, c0.`mdr_amount`, c0.`vat_rate`, c0.`vat_amount`, c0.`interchange_fee`, c0.`interchange_template_id`, c0.`gross_amount`, c0.`net_settlement_amount`, c0.`settlement_status`, c0.`switch_settled_date`, c0.`released_for_settlement_date`, c0.`risk_hold`, c0.`risk_rule_name`, c0.`chargeback_hold`, c0.`exception_type`, c0.`refund_status`, c0.`refund_date`, c0.`reversal_status`, c0.`reversal_date`, c0.`store_id`, c0.`dr_cr`, c0.`qr_tag`, c0.`bank_transfer_reference`, c0.`bank_transfer_date`, c0.`spare_fields`, c0.`inserted_at`, c0.`updated_at` FROM `core_transactions` AS c0 WHERE (DATE(c0.`transaction_datetime`) = ?) AND ((c0.`risk_hold` = TRUE) OR (c0.`settlement_status` = 'exception_hold')) AND (c0.`merchant_mid` = ?) ORDER BY c0.`merchant_mid`, c0.`transaction_datetime` [~D[2026-08-31], "E2E_M3_TEST001"] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:350 [2026-09-02 12:20:41.016] [DEBUG] Replied in 25ms [2026-09-02 12:20:47.761] [DEBUG] HANDLE EVENT "close_detail" in PlatformWeb.SettlementLive.MisApproval Parameters: %{"value" => ""} [2026-09-02 12:20:47.761] [DEBUG] Replied in 198µs [2026-09-02 12:25:18.236] [INFO ] Running offline device check... [2026-09-02 12:25:18.321] [INFO ] Starting offline device check... [2026-09-02 12:25:18.346] [DEBUG] QUERY OK source="tms_terminals" db=3.3ms queue=0.2ms idle=654.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1234 [2026-09-02 12:25:18.365] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms queue=0.6ms idle=549.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [1] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:25:18.369] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.8ms idle=20.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:25:18.373] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.6ms idle=4.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:25:18.375] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms queue=1.7ms idle=3.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:25:18.381] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.7ms queue=0.6ms idle=5.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:25:18.384] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms idle=6.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:25:18.386] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=3.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:25:18.389] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.9ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:25:18.390] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=3.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:25:18.392] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:25:18.395] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=3.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:25:18.397] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms queue=0.6ms idle=3.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:25:18.399] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms idle=2.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:25:18.400] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.1ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:25:18.401] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:25:18.404] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=3.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:25:18.409] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.9ms queue=0.1ms idle=5.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:25:18.412] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms idle=6.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:25:18.414] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.2ms idle=4.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:25:18.419] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms queue=2.7ms idle=2.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:25:18.424] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms queue=2.0ms idle=5.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:25:18.430] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.0ms queue=2.5ms idle=5.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:25:18.433] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.4ms idle=7.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:25:18.439] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.7ms queue=3.1ms idle=3.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:25:18.441] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=7.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:25:18.442] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:25:18.443] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.1ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:25:18.445] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:25:18.445] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.1ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:25:18.446] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:25:18.447] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=0.1ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:25:18.448] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:25:18.449] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:25:18.450] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.1ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:25:18.452] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:25:18.453] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:25:18.456] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.3ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:25:18.457] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.1ms idle=2.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:25:18.458] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:25:18.459] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:25:18.461] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.7ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:25:18.462] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:25:18.464] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=1.4ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:25:18.466] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=3.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:25:18.467] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=2.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:25:18.468] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:25:18.470] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.1ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:25:18.471] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:25:18.473] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:25:18.475] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:25:18.475] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.1ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:25:18.477] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:25:18.478] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [82] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:25:18.479] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [83] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:25:18.480] [INFO ] Offline device check completed. Found 51 offline devices, updated 0 statuses. [2026-09-02 12:25:18.480] [INFO ] Offline device check completed successfully [2026-09-02 12:26:36.628] [DEBUG] HANDLE EVENT "mis_row_clicked" in PlatformWeb.SettlementLive.MisApproval Parameters: %{"id" => 324} [2026-09-02 12:26:36.629] [DEBUG] QUERY OK source="settlement_mis" db=0.7ms idle=1073.1ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 WHERE (s0.`id` = ?) [324] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:284 [2026-09-02 12:26:36.630] [DEBUG] QUERY OK source="settlement_mis_items" db=0.6ms queue=0.1ms idle=415.6ms SELECT s0.`merchant_mid`, s0.`merchant_id`, MAX(s0.`merchant_name`), sum(s0.`transaction_count`), sum(s0.`total_gross_amount`), sum(s0.`total_mdr_amount`), sum(s0.`total_vat_amount`), sum(s0.`total_interchange_fee`), sum(s0.`net_payable`), GROUP_CONCAT(DISTINCT s0.`scheme_name` SEPARATOR ', '), GROUP_CONCAT(DISTINCT s0.`card_type_code` SEPARATOR ', ') FROM `settlement_mis_items` AS s0 WHERE (s0.`settlement_mis_id` = ?) GROUP BY s0.`merchant_mid`, s0.`merchant_id` [324] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:285 [2026-09-02 12:26:36.631] [DEBUG] QUERY OK source="merchant_adjustments" db=0.9ms idle=1.2ms SELECT m0.`id`, m0.`merchant_mid`, m0.`merchant_name`, m0.`adjustment_date`, m0.`debit_credit`, m0.`amount`, m0.`currency`, m0.`adjustment_type`, m0.`description`, m0.`settlement_mis_id`, m0.`status`, m0.`applied_at`, m0.`cancelled_at`, m0.`cancel_reason`, m0.`approval_status`, m0.`level1_reviewed_by`, m0.`level1_reviewed_at`, m0.`level2_approved_by`, m0.`level2_approved_at`, m0.`rejected_by`, m0.`rejected_at`, m0.`rejection_reason`, m0.`created_by`, m0.`updated_by`, m0.`inserted_at`, m0.`updated_at` FROM `merchant_adjustments` AS m0 WHERE (m0.`adjustment_date` = ?) AND (m0.`approval_status` = 'approved') [~D[2026-08-24]] ↳ SettlementCore.Context.list_approved_adjustments_by_date/1, at: lib/settlement_core/context.ex:971 [2026-09-02 12:26:36.632] [DEBUG] QUERY OK source="core_transactions" db=0.8ms idle=1.5ms SELECT DISTINCT c0.`merchant_mid`, coalesce(t1.`merchant_name_legal`, t1.`merchant_name_dba`) FROM `core_transactions` AS c0 INNER JOIN `tid_masters` AS t1 ON t1.`mid` = c0.`merchant_mid` WHERE (DATE(c0.`transaction_datetime`) = ?) AND ((c0.`risk_hold` = TRUE) OR (c0.`settlement_status` = 'exception_hold')) AND (NOT (c0.`merchant_mid` IN (SELECT DISTINCT ss0.`merchant_mid` FROM `settlement_mis_items` AS ss0 WHERE (ss0.`settlement_mis_id` = ?)))) [~D[2026-08-24], 324] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:301 [2026-09-02 12:26:36.633] [DEBUG] Replied in 4ms [2026-09-02 12:26:39.140] [DEBUG] HANDLE EVENT "close_detail" in PlatformWeb.SettlementLive.MisApproval Parameters: %{"value" => ""} [2026-09-02 12:26:39.140] [DEBUG] Replied in 269µs [2026-09-02 12:26:41.466] [DEBUG] HANDLE EVENT "mis_row_clicked" in PlatformWeb.SettlementLive.MisApproval Parameters: %{"id" => 328} [2026-09-02 12:26:41.468] [DEBUG] QUERY OK source="settlement_mis" db=0.6ms queue=0.1ms idle=911.9ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 WHERE (s0.`id` = ?) [328] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:284 [2026-09-02 12:26:41.469] [DEBUG] QUERY OK source="settlement_mis_items" db=0.8ms idle=234.2ms SELECT s0.`merchant_mid`, s0.`merchant_id`, MAX(s0.`merchant_name`), sum(s0.`transaction_count`), sum(s0.`total_gross_amount`), sum(s0.`total_mdr_amount`), sum(s0.`total_vat_amount`), sum(s0.`total_interchange_fee`), sum(s0.`net_payable`), GROUP_CONCAT(DISTINCT s0.`scheme_name` SEPARATOR ', '), GROUP_CONCAT(DISTINCT s0.`card_type_code` SEPARATOR ', ') FROM `settlement_mis_items` AS s0 WHERE (s0.`settlement_mis_id` = ?) GROUP BY s0.`merchant_mid`, s0.`merchant_id` [328] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:285 [2026-09-02 12:26:41.469] [DEBUG] QUERY OK source="merchant_adjustments" db=0.4ms idle=1.3ms SELECT m0.`id`, m0.`merchant_mid`, m0.`merchant_name`, m0.`adjustment_date`, m0.`debit_credit`, m0.`amount`, m0.`currency`, m0.`adjustment_type`, m0.`description`, m0.`settlement_mis_id`, m0.`status`, m0.`applied_at`, m0.`cancelled_at`, m0.`cancel_reason`, m0.`approval_status`, m0.`level1_reviewed_by`, m0.`level1_reviewed_at`, m0.`level2_approved_by`, m0.`level2_approved_at`, m0.`rejected_by`, m0.`rejected_at`, m0.`rejection_reason`, m0.`created_by`, m0.`updated_by`, m0.`inserted_at`, m0.`updated_at` FROM `merchant_adjustments` AS m0 WHERE (m0.`adjustment_date` = ?) AND (m0.`approval_status` = 'approved') [~D[2026-09-01]] ↳ SettlementCore.Context.list_approved_adjustments_by_date/1, at: lib/settlement_core/context.ex:971 [2026-09-02 12:26:41.471] [DEBUG] QUERY OK source="core_transactions" db=1.1ms idle=1.0ms SELECT DISTINCT c0.`merchant_mid`, coalesce(t1.`merchant_name_legal`, t1.`merchant_name_dba`) FROM `core_transactions` AS c0 INNER JOIN `tid_masters` AS t1 ON t1.`mid` = c0.`merchant_mid` WHERE (DATE(c0.`transaction_datetime`) = ?) AND ((c0.`risk_hold` = TRUE) OR (c0.`settlement_status` = 'exception_hold')) AND (NOT (c0.`merchant_mid` IN (SELECT DISTINCT ss0.`merchant_mid` FROM `settlement_mis_items` AS ss0 WHERE (ss0.`settlement_mis_id` = ?)))) [~D[2026-09-01], 328] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:301 [2026-09-02 12:26:41.471] [DEBUG] Replied in 4ms [2026-09-02 12:26:43.991] [DEBUG] HANDLE EVENT "expand_merchant" in PlatformWeb.SettlementLive.MisApproval Parameters: %{"mid" => "419926360000000"} [2026-09-02 12:26:43.992] [DEBUG] QUERY OK source="settlement_mis_items" db=0.8ms queue=0.1ms idle=1435.7ms SELECT s0.`id`, s0.`settlement_mis_id`, s0.`core_transaction_id`, s0.`merchant_mid`, s0.`merchant_id`, s0.`merchant_name`, s0.`merchant_ref_number`, s0.`bank_name`, s0.`iban`, s0.`account_number`, s0.`settlement_date`, s0.`rrn`, s0.`tid`, s0.`auth_number`, s0.`transaction_date`, s0.`transaction_type`, s0.`scheme_name`, s0.`card_type_code`, s0.`gross_amount`, s0.`mdr_percentage_rate`, s0.`mdr_amount`, s0.`vat_rate`, s0.`vat_amount`, s0.`interchange_fee`, s0.`adjustment_amount`, s0.`ar_recovery`, s0.`net_payable`, s0.`transaction_count`, s0.`total_gross_amount`, s0.`total_mdr_amount`, s0.`total_vat_amount`, s0.`total_interchange_fee`, s0.`total_net_settlement_amount`, s0.`risk_status`, s0.`exception_type`, s0.`mpr_sent`, s0.`margin_contribution`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis_items` AS s0 WHERE ((s0.`settlement_mis_id` = ?) AND (s0.`merchant_mid` = ?)) ORDER BY s0.`card_type_code` [328, "419926360000000"] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:341 [2026-09-02 12:26:43.993] [DEBUG] QUERY OK source="merchant_adjustments" db=0.4ms idle=752.3ms SELECT m0.`id`, m0.`merchant_mid`, m0.`merchant_name`, m0.`adjustment_date`, m0.`debit_credit`, m0.`amount`, m0.`currency`, m0.`adjustment_type`, m0.`description`, m0.`settlement_mis_id`, m0.`status`, m0.`applied_at`, m0.`cancelled_at`, m0.`cancel_reason`, m0.`approval_status`, m0.`level1_reviewed_by`, m0.`level1_reviewed_at`, m0.`level2_approved_by`, m0.`level2_approved_at`, m0.`rejected_by`, m0.`rejected_at`, m0.`rejection_reason`, m0.`created_by`, m0.`updated_by`, m0.`inserted_at`, m0.`updated_at` FROM `merchant_adjustments` AS m0 WHERE (m0.`adjustment_date` = ?) AND (m0.`approval_status` = 'approved') [~D[2026-09-01]] ↳ SettlementCore.Context.list_approved_adjustments_by_date/1, at: lib/settlement_core/context.ex:971 [2026-09-02 12:26:43.994] [DEBUG] QUERY OK source="core_transactions" db=0.6ms idle=1.1ms SELECT c0.`id`, c0.`source_type`, c0.`source_ref_id`, c0.`settlement_batch_id`, c0.`rrn`, c0.`tid`, c0.`auth_number`, c0.`stan`, c0.`invoice_number`, c0.`batch_number`, c0.`merchant_mid`, c0.`merchant_id`, c0.`merchant_ref_number`, c0.`transaction_amount`, c0.`transaction_currency`, c0.`transaction_type`, c0.`transaction_datetime`, c0.`masked_pan`, c0.`scheme_name`, c0.`card_holder_name`, c0.`customer_mobile`, c0.`customer_country`, c0.`mcc_code`, c0.`card_type_id`, c0.`card_type_code`, c0.`mdr_template_id`, c0.`mdr_percentage_rate`, c0.`mdr_fixed_fee`, c0.`mdr_minimum_fee`, c0.`mdr_maximum_fee`, c0.`mdr_amount`, c0.`vat_rate`, c0.`vat_amount`, c0.`interchange_fee`, c0.`interchange_template_id`, c0.`gross_amount`, c0.`net_settlement_amount`, c0.`settlement_status`, c0.`switch_settled_date`, c0.`released_for_settlement_date`, c0.`risk_hold`, c0.`risk_rule_name`, c0.`chargeback_hold`, c0.`exception_type`, c0.`refund_status`, c0.`refund_date`, c0.`reversal_status`, c0.`reversal_date`, c0.`store_id`, c0.`dr_cr`, c0.`qr_tag`, c0.`bank_transfer_reference`, c0.`bank_transfer_date`, c0.`spare_fields`, c0.`inserted_at`, c0.`updated_at` FROM `core_transactions` AS c0 WHERE (DATE(c0.`transaction_datetime`) = ?) AND ((c0.`risk_hold` = TRUE) OR (c0.`settlement_status` = 'exception_hold')) AND (c0.`merchant_mid` = ?) ORDER BY c0.`merchant_mid`, c0.`transaction_datetime` [~D[2026-09-01], "419926360000000"] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:350 [2026-09-02 12:26:43.994] [DEBUG] Replied in 3ms [2026-09-02 12:26:45.920] [DEBUG] HANDLE EVENT "expand_merchant" in PlatformWeb.SettlementLive.MisApproval Parameters: %{"mid" => "425590250000000"} [2026-09-02 12:26:45.921] [DEBUG] QUERY OK source="settlement_mis_items" db=1.0ms idle=1152.7ms SELECT s0.`id`, s0.`settlement_mis_id`, s0.`core_transaction_id`, s0.`merchant_mid`, s0.`merchant_id`, s0.`merchant_name`, s0.`merchant_ref_number`, s0.`bank_name`, s0.`iban`, s0.`account_number`, s0.`settlement_date`, s0.`rrn`, s0.`tid`, s0.`auth_number`, s0.`transaction_date`, s0.`transaction_type`, s0.`scheme_name`, s0.`card_type_code`, s0.`gross_amount`, s0.`mdr_percentage_rate`, s0.`mdr_amount`, s0.`vat_rate`, s0.`vat_amount`, s0.`interchange_fee`, s0.`adjustment_amount`, s0.`ar_recovery`, s0.`net_payable`, s0.`transaction_count`, s0.`total_gross_amount`, s0.`total_mdr_amount`, s0.`total_vat_amount`, s0.`total_interchange_fee`, s0.`total_net_settlement_amount`, s0.`risk_status`, s0.`exception_type`, s0.`mpr_sent`, s0.`margin_contribution`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis_items` AS s0 WHERE ((s0.`settlement_mis_id` = ?) AND (s0.`merchant_mid` = ?)) ORDER BY s0.`card_type_code` [328, "425590250000000"] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:341 [2026-09-02 12:26:45.923] [DEBUG] QUERY OK source="merchant_adjustments" db=0.6ms queue=0.8ms idle=676.9ms SELECT m0.`id`, m0.`merchant_mid`, m0.`merchant_name`, m0.`adjustment_date`, m0.`debit_credit`, m0.`amount`, m0.`currency`, m0.`adjustment_type`, m0.`description`, m0.`settlement_mis_id`, m0.`status`, m0.`applied_at`, m0.`cancelled_at`, m0.`cancel_reason`, m0.`approval_status`, m0.`level1_reviewed_by`, m0.`level1_reviewed_at`, m0.`level2_approved_by`, m0.`level2_approved_at`, m0.`rejected_by`, m0.`rejected_at`, m0.`rejection_reason`, m0.`created_by`, m0.`updated_by`, m0.`inserted_at`, m0.`updated_at` FROM `merchant_adjustments` AS m0 WHERE (m0.`adjustment_date` = ?) AND (m0.`approval_status` = 'approved') [~D[2026-09-01]] ↳ SettlementCore.Context.list_approved_adjustments_by_date/1, at: lib/settlement_core/context.ex:971 [2026-09-02 12:26:45.924] [DEBUG] QUERY OK source="core_transactions" db=0.9ms idle=2.1ms SELECT c0.`id`, c0.`source_type`, c0.`source_ref_id`, c0.`settlement_batch_id`, c0.`rrn`, c0.`tid`, c0.`auth_number`, c0.`stan`, c0.`invoice_number`, c0.`batch_number`, c0.`merchant_mid`, c0.`merchant_id`, c0.`merchant_ref_number`, c0.`transaction_amount`, c0.`transaction_currency`, c0.`transaction_type`, c0.`transaction_datetime`, c0.`masked_pan`, c0.`scheme_name`, c0.`card_holder_name`, c0.`customer_mobile`, c0.`customer_country`, c0.`mcc_code`, c0.`card_type_id`, c0.`card_type_code`, c0.`mdr_template_id`, c0.`mdr_percentage_rate`, c0.`mdr_fixed_fee`, c0.`mdr_minimum_fee`, c0.`mdr_maximum_fee`, c0.`mdr_amount`, c0.`vat_rate`, c0.`vat_amount`, c0.`interchange_fee`, c0.`interchange_template_id`, c0.`gross_amount`, c0.`net_settlement_amount`, c0.`settlement_status`, c0.`switch_settled_date`, c0.`released_for_settlement_date`, c0.`risk_hold`, c0.`risk_rule_name`, c0.`chargeback_hold`, c0.`exception_type`, c0.`refund_status`, c0.`refund_date`, c0.`reversal_status`, c0.`reversal_date`, c0.`store_id`, c0.`dr_cr`, c0.`qr_tag`, c0.`bank_transfer_reference`, c0.`bank_transfer_date`, c0.`spare_fields`, c0.`inserted_at`, c0.`updated_at` FROM `core_transactions` AS c0 WHERE (DATE(c0.`transaction_datetime`) = ?) AND ((c0.`risk_hold` = TRUE) OR (c0.`settlement_status` = 'exception_hold')) AND (c0.`merchant_mid` = ?) ORDER BY c0.`merchant_mid`, c0.`transaction_datetime` [~D[2026-09-01], "425590250000000"] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:350 [2026-09-02 12:26:45.924] [DEBUG] Replied in 4ms [2026-09-02 12:26:47.549] [DEBUG] HANDLE EVENT "expand_merchant" in PlatformWeb.SettlementLive.MisApproval Parameters: %{"mid" => "E2E_M3_TEST001"} [2026-09-02 12:26:47.551] [DEBUG] QUERY OK source="settlement_mis_items" db=2.1ms queue=0.1ms idle=1302.4ms SELECT s0.`id`, s0.`settlement_mis_id`, s0.`core_transaction_id`, s0.`merchant_mid`, s0.`merchant_id`, s0.`merchant_name`, s0.`merchant_ref_number`, s0.`bank_name`, s0.`iban`, s0.`account_number`, s0.`settlement_date`, s0.`rrn`, s0.`tid`, s0.`auth_number`, s0.`transaction_date`, s0.`transaction_type`, s0.`scheme_name`, s0.`card_type_code`, s0.`gross_amount`, s0.`mdr_percentage_rate`, s0.`mdr_amount`, s0.`vat_rate`, s0.`vat_amount`, s0.`interchange_fee`, s0.`adjustment_amount`, s0.`ar_recovery`, s0.`net_payable`, s0.`transaction_count`, s0.`total_gross_amount`, s0.`total_mdr_amount`, s0.`total_vat_amount`, s0.`total_interchange_fee`, s0.`total_net_settlement_amount`, s0.`risk_status`, s0.`exception_type`, s0.`mpr_sent`, s0.`margin_contribution`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis_items` AS s0 WHERE ((s0.`settlement_mis_id` = ?) AND (s0.`merchant_mid` = ?)) ORDER BY s0.`card_type_code` [328, "E2E_M3_TEST001"] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:341 [2026-09-02 12:26:47.553] [DEBUG] QUERY OK source="merchant_adjustments" db=0.8ms idle=300.8ms SELECT m0.`id`, m0.`merchant_mid`, m0.`merchant_name`, m0.`adjustment_date`, m0.`debit_credit`, m0.`amount`, m0.`currency`, m0.`adjustment_type`, m0.`description`, m0.`settlement_mis_id`, m0.`status`, m0.`applied_at`, m0.`cancelled_at`, m0.`cancel_reason`, m0.`approval_status`, m0.`level1_reviewed_by`, m0.`level1_reviewed_at`, m0.`level2_approved_by`, m0.`level2_approved_at`, m0.`rejected_by`, m0.`rejected_at`, m0.`rejection_reason`, m0.`created_by`, m0.`updated_by`, m0.`inserted_at`, m0.`updated_at` FROM `merchant_adjustments` AS m0 WHERE (m0.`adjustment_date` = ?) AND (m0.`approval_status` = 'approved') [~D[2026-09-01]] ↳ SettlementCore.Context.list_approved_adjustments_by_date/1, at: lib/settlement_core/context.ex:971 [2026-09-02 12:26:47.555] [DEBUG] QUERY OK source="core_transactions" db=1.1ms idle=2.0ms SELECT c0.`id`, c0.`source_type`, c0.`source_ref_id`, c0.`settlement_batch_id`, c0.`rrn`, c0.`tid`, c0.`auth_number`, c0.`stan`, c0.`invoice_number`, c0.`batch_number`, c0.`merchant_mid`, c0.`merchant_id`, c0.`merchant_ref_number`, c0.`transaction_amount`, c0.`transaction_currency`, c0.`transaction_type`, c0.`transaction_datetime`, c0.`masked_pan`, c0.`scheme_name`, c0.`card_holder_name`, c0.`customer_mobile`, c0.`customer_country`, c0.`mcc_code`, c0.`card_type_id`, c0.`card_type_code`, c0.`mdr_template_id`, c0.`mdr_percentage_rate`, c0.`mdr_fixed_fee`, c0.`mdr_minimum_fee`, c0.`mdr_maximum_fee`, c0.`mdr_amount`, c0.`vat_rate`, c0.`vat_amount`, c0.`interchange_fee`, c0.`interchange_template_id`, c0.`gross_amount`, c0.`net_settlement_amount`, c0.`settlement_status`, c0.`switch_settled_date`, c0.`released_for_settlement_date`, c0.`risk_hold`, c0.`risk_rule_name`, c0.`chargeback_hold`, c0.`exception_type`, c0.`refund_status`, c0.`refund_date`, c0.`reversal_status`, c0.`reversal_date`, c0.`store_id`, c0.`dr_cr`, c0.`qr_tag`, c0.`bank_transfer_reference`, c0.`bank_transfer_date`, c0.`spare_fields`, c0.`inserted_at`, c0.`updated_at` FROM `core_transactions` AS c0 WHERE (DATE(c0.`transaction_datetime`) = ?) AND ((c0.`risk_hold` = TRUE) OR (c0.`settlement_status` = 'exception_hold')) AND (c0.`merchant_mid` = ?) ORDER BY c0.`merchant_mid`, c0.`transaction_datetime` [~D[2026-09-01], "E2E_M3_TEST001"] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:350 [2026-09-02 12:26:47.555] [DEBUG] Replied in 6ms [2026-09-02 12:27:00.402] [DEBUG] HANDLE EVENT "close_detail" in PlatformWeb.SettlementLive.MisApproval Parameters: %{"value" => ""} [2026-09-02 12:27:00.402] [DEBUG] Replied in 196µs [2026-09-02 12:27:03.810] [DEBUG] HANDLE EVENT "mis_row_clicked" in PlatformWeb.SettlementLive.MisApproval Parameters: %{"id" => 322} [2026-09-02 12:27:03.814] [DEBUG] QUERY OK source="settlement_mis" db=3.2ms idle=441.9ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 WHERE (s0.`id` = ?) [322] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:284 [2026-09-02 12:27:03.819] [DEBUG] QUERY OK source="settlement_mis_items" db=3.9ms idle=246.1ms SELECT s0.`merchant_mid`, s0.`merchant_id`, MAX(s0.`merchant_name`), sum(s0.`transaction_count`), sum(s0.`total_gross_amount`), sum(s0.`total_mdr_amount`), sum(s0.`total_vat_amount`), sum(s0.`total_interchange_fee`), sum(s0.`net_payable`), GROUP_CONCAT(DISTINCT s0.`scheme_name` SEPARATOR ', '), GROUP_CONCAT(DISTINCT s0.`card_type_code` SEPARATOR ', ') FROM `settlement_mis_items` AS s0 WHERE (s0.`settlement_mis_id` = ?) GROUP BY s0.`merchant_mid`, s0.`merchant_id` [322] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:285 [2026-09-02 12:27:03.822] [DEBUG] QUERY OK source="merchant_adjustments" db=1.7ms idle=6.6ms SELECT m0.`id`, m0.`merchant_mid`, m0.`merchant_name`, m0.`adjustment_date`, m0.`debit_credit`, m0.`amount`, m0.`currency`, m0.`adjustment_type`, m0.`description`, m0.`settlement_mis_id`, m0.`status`, m0.`applied_at`, m0.`cancelled_at`, m0.`cancel_reason`, m0.`approval_status`, m0.`level1_reviewed_by`, m0.`level1_reviewed_at`, m0.`level2_approved_by`, m0.`level2_approved_at`, m0.`rejected_by`, m0.`rejected_at`, m0.`rejection_reason`, m0.`created_by`, m0.`updated_by`, m0.`inserted_at`, m0.`updated_at` FROM `merchant_adjustments` AS m0 WHERE (m0.`adjustment_date` = ?) AND (m0.`approval_status` = 'approved') [~D[2026-08-17]] ↳ SettlementCore.Context.list_approved_adjustments_by_date/1, at: lib/settlement_core/context.ex:971 [2026-09-02 12:27:03.833] [DEBUG] QUERY OK source="core_transactions" db=10.1ms idle=3.4ms SELECT DISTINCT c0.`merchant_mid`, coalesce(t1.`merchant_name_legal`, t1.`merchant_name_dba`) FROM `core_transactions` AS c0 INNER JOIN `tid_masters` AS t1 ON t1.`mid` = c0.`merchant_mid` WHERE (DATE(c0.`transaction_datetime`) = ?) AND ((c0.`risk_hold` = TRUE) OR (c0.`settlement_status` = 'exception_hold')) AND (NOT (c0.`merchant_mid` IN (SELECT DISTINCT ss0.`merchant_mid` FROM `settlement_mis_items` AS ss0 WHERE (ss0.`settlement_mis_id` = ?)))) [~D[2026-08-17], 322] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:301 [2026-09-02 12:27:03.833] [DEBUG] Replied in 23ms [2026-09-02 12:27:06.112] [DEBUG] HANDLE EVENT "expand_merchant" in PlatformWeb.SettlementLive.MisApproval Parameters: %{"mid" => "419926360000000"} [2026-09-02 12:27:06.113] [DEBUG] QUERY OK source="settlement_mis_items" db=1.0ms idle=716.7ms SELECT s0.`id`, s0.`settlement_mis_id`, s0.`core_transaction_id`, s0.`merchant_mid`, s0.`merchant_id`, s0.`merchant_name`, s0.`merchant_ref_number`, s0.`bank_name`, s0.`iban`, s0.`account_number`, s0.`settlement_date`, s0.`rrn`, s0.`tid`, s0.`auth_number`, s0.`transaction_date`, s0.`transaction_type`, s0.`scheme_name`, s0.`card_type_code`, s0.`gross_amount`, s0.`mdr_percentage_rate`, s0.`mdr_amount`, s0.`vat_rate`, s0.`vat_amount`, s0.`interchange_fee`, s0.`adjustment_amount`, s0.`ar_recovery`, s0.`net_payable`, s0.`transaction_count`, s0.`total_gross_amount`, s0.`total_mdr_amount`, s0.`total_vat_amount`, s0.`total_interchange_fee`, s0.`total_net_settlement_amount`, s0.`risk_status`, s0.`exception_type`, s0.`mpr_sent`, s0.`margin_contribution`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis_items` AS s0 WHERE ((s0.`settlement_mis_id` = ?) AND (s0.`merchant_mid` = ?)) ORDER BY s0.`card_type_code` [322, "419926360000000"] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:341 [2026-09-02 12:27:06.116] [DEBUG] QUERY OK source="merchant_adjustments" db=1.9ms idle=546.5ms SELECT m0.`id`, m0.`merchant_mid`, m0.`merchant_name`, m0.`adjustment_date`, m0.`debit_credit`, m0.`amount`, m0.`currency`, m0.`adjustment_type`, m0.`description`, m0.`settlement_mis_id`, m0.`status`, m0.`applied_at`, m0.`cancelled_at`, m0.`cancel_reason`, m0.`approval_status`, m0.`level1_reviewed_by`, m0.`level1_reviewed_at`, m0.`level2_approved_by`, m0.`level2_approved_at`, m0.`rejected_by`, m0.`rejected_at`, m0.`rejection_reason`, m0.`created_by`, m0.`updated_by`, m0.`inserted_at`, m0.`updated_at` FROM `merchant_adjustments` AS m0 WHERE (m0.`adjustment_date` = ?) AND (m0.`approval_status` = 'approved') [~D[2026-08-17]] ↳ SettlementCore.Context.list_approved_adjustments_by_date/1, at: lib/settlement_core/context.ex:971 [2026-09-02 12:27:06.120] [DEBUG] QUERY OK source="core_transactions" db=4.0ms idle=2.4ms SELECT c0.`id`, c0.`source_type`, c0.`source_ref_id`, c0.`settlement_batch_id`, c0.`rrn`, c0.`tid`, c0.`auth_number`, c0.`stan`, c0.`invoice_number`, c0.`batch_number`, c0.`merchant_mid`, c0.`merchant_id`, c0.`merchant_ref_number`, c0.`transaction_amount`, c0.`transaction_currency`, c0.`transaction_type`, c0.`transaction_datetime`, c0.`masked_pan`, c0.`scheme_name`, c0.`card_holder_name`, c0.`customer_mobile`, c0.`customer_country`, c0.`mcc_code`, c0.`card_type_id`, c0.`card_type_code`, c0.`mdr_template_id`, c0.`mdr_percentage_rate`, c0.`mdr_fixed_fee`, c0.`mdr_minimum_fee`, c0.`mdr_maximum_fee`, c0.`mdr_amount`, c0.`vat_rate`, c0.`vat_amount`, c0.`interchange_fee`, c0.`interchange_template_id`, c0.`gross_amount`, c0.`net_settlement_amount`, c0.`settlement_status`, c0.`switch_settled_date`, c0.`released_for_settlement_date`, c0.`risk_hold`, c0.`risk_rule_name`, c0.`chargeback_hold`, c0.`exception_type`, c0.`refund_status`, c0.`refund_date`, c0.`reversal_status`, c0.`reversal_date`, c0.`store_id`, c0.`dr_cr`, c0.`qr_tag`, c0.`bank_transfer_reference`, c0.`bank_transfer_date`, c0.`spare_fields`, c0.`inserted_at`, c0.`updated_at` FROM `core_transactions` AS c0 WHERE (DATE(c0.`transaction_datetime`) = ?) AND ((c0.`risk_hold` = TRUE) OR (c0.`settlement_status` = 'exception_hold')) AND (c0.`merchant_mid` = ?) ORDER BY c0.`merchant_mid`, c0.`transaction_datetime` [~D[2026-08-17], "419926360000000"] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:350 [2026-09-02 12:27:06.120] [DEBUG] Replied in 8ms [2026-09-02 12:27:08.015] [DEBUG] HANDLE EVENT "expand_merchant" in PlatformWeb.SettlementLive.MisApproval Parameters: %{"mid" => "425590250000000"} [2026-09-02 12:27:08.016] [DEBUG] QUERY OK source="settlement_mis_items" db=0.6ms idle=608.8ms SELECT s0.`id`, s0.`settlement_mis_id`, s0.`core_transaction_id`, s0.`merchant_mid`, s0.`merchant_id`, s0.`merchant_name`, s0.`merchant_ref_number`, s0.`bank_name`, s0.`iban`, s0.`account_number`, s0.`settlement_date`, s0.`rrn`, s0.`tid`, s0.`auth_number`, s0.`transaction_date`, s0.`transaction_type`, s0.`scheme_name`, s0.`card_type_code`, s0.`gross_amount`, s0.`mdr_percentage_rate`, s0.`mdr_amount`, s0.`vat_rate`, s0.`vat_amount`, s0.`interchange_fee`, s0.`adjustment_amount`, s0.`ar_recovery`, s0.`net_payable`, s0.`transaction_count`, s0.`total_gross_amount`, s0.`total_mdr_amount`, s0.`total_vat_amount`, s0.`total_interchange_fee`, s0.`total_net_settlement_amount`, s0.`risk_status`, s0.`exception_type`, s0.`mpr_sent`, s0.`margin_contribution`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis_items` AS s0 WHERE ((s0.`settlement_mis_id` = ?) AND (s0.`merchant_mid` = ?)) ORDER BY s0.`card_type_code` [322, "425590250000000"] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:341 [2026-09-02 12:27:08.017] [DEBUG] QUERY OK source="merchant_adjustments" db=0.4ms idle=443.9ms SELECT m0.`id`, m0.`merchant_mid`, m0.`merchant_name`, m0.`adjustment_date`, m0.`debit_credit`, m0.`amount`, m0.`currency`, m0.`adjustment_type`, m0.`description`, m0.`settlement_mis_id`, m0.`status`, m0.`applied_at`, m0.`cancelled_at`, m0.`cancel_reason`, m0.`approval_status`, m0.`level1_reviewed_by`, m0.`level1_reviewed_at`, m0.`level2_approved_by`, m0.`level2_approved_at`, m0.`rejected_by`, m0.`rejected_at`, m0.`rejection_reason`, m0.`created_by`, m0.`updated_by`, m0.`inserted_at`, m0.`updated_at` FROM `merchant_adjustments` AS m0 WHERE (m0.`adjustment_date` = ?) AND (m0.`approval_status` = 'approved') [~D[2026-08-17]] ↳ SettlementCore.Context.list_approved_adjustments_by_date/1, at: lib/settlement_core/context.ex:971 [2026-09-02 12:27:08.018] [DEBUG] QUERY OK source="core_transactions" db=0.7ms idle=1.6ms SELECT c0.`id`, c0.`source_type`, c0.`source_ref_id`, c0.`settlement_batch_id`, c0.`rrn`, c0.`tid`, c0.`auth_number`, c0.`stan`, c0.`invoice_number`, c0.`batch_number`, c0.`merchant_mid`, c0.`merchant_id`, c0.`merchant_ref_number`, c0.`transaction_amount`, c0.`transaction_currency`, c0.`transaction_type`, c0.`transaction_datetime`, c0.`masked_pan`, c0.`scheme_name`, c0.`card_holder_name`, c0.`customer_mobile`, c0.`customer_country`, c0.`mcc_code`, c0.`card_type_id`, c0.`card_type_code`, c0.`mdr_template_id`, c0.`mdr_percentage_rate`, c0.`mdr_fixed_fee`, c0.`mdr_minimum_fee`, c0.`mdr_maximum_fee`, c0.`mdr_amount`, c0.`vat_rate`, c0.`vat_amount`, c0.`interchange_fee`, c0.`interchange_template_id`, c0.`gross_amount`, c0.`net_settlement_amount`, c0.`settlement_status`, c0.`switch_settled_date`, c0.`released_for_settlement_date`, c0.`risk_hold`, c0.`risk_rule_name`, c0.`chargeback_hold`, c0.`exception_type`, c0.`refund_status`, c0.`refund_date`, c0.`reversal_status`, c0.`reversal_date`, c0.`store_id`, c0.`dr_cr`, c0.`qr_tag`, c0.`bank_transfer_reference`, c0.`bank_transfer_date`, c0.`spare_fields`, c0.`inserted_at`, c0.`updated_at` FROM `core_transactions` AS c0 WHERE (DATE(c0.`transaction_datetime`) = ?) AND ((c0.`risk_hold` = TRUE) OR (c0.`settlement_status` = 'exception_hold')) AND (c0.`merchant_mid` = ?) ORDER BY c0.`merchant_mid`, c0.`transaction_datetime` [~D[2026-08-17], "425590250000000"] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:350 [2026-09-02 12:27:08.019] [DEBUG] Replied in 3ms [2026-09-02 12:27:11.190] [DEBUG] HANDLE EVENT "expand_merchant" in PlatformWeb.SettlementLive.MisApproval Parameters: %{"mid" => "301510300000000"} [2026-09-02 12:27:11.192] [DEBUG] QUERY OK source="settlement_mis_items" db=0.7ms queue=0.1ms idle=1615.3ms SELECT s0.`id`, s0.`settlement_mis_id`, s0.`core_transaction_id`, s0.`merchant_mid`, s0.`merchant_id`, s0.`merchant_name`, s0.`merchant_ref_number`, s0.`bank_name`, s0.`iban`, s0.`account_number`, s0.`settlement_date`, s0.`rrn`, s0.`tid`, s0.`auth_number`, s0.`transaction_date`, s0.`transaction_type`, s0.`scheme_name`, s0.`card_type_code`, s0.`gross_amount`, s0.`mdr_percentage_rate`, s0.`mdr_amount`, s0.`vat_rate`, s0.`vat_amount`, s0.`interchange_fee`, s0.`adjustment_amount`, s0.`ar_recovery`, s0.`net_payable`, s0.`transaction_count`, s0.`total_gross_amount`, s0.`total_mdr_amount`, s0.`total_vat_amount`, s0.`total_interchange_fee`, s0.`total_net_settlement_amount`, s0.`risk_status`, s0.`exception_type`, s0.`mpr_sent`, s0.`margin_contribution`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis_items` AS s0 WHERE ((s0.`settlement_mis_id` = ?) AND (s0.`merchant_mid` = ?)) ORDER BY s0.`card_type_code` [322, "301510300000000"] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:341 [2026-09-02 12:27:11.193] [DEBUG] QUERY OK source="merchant_adjustments" db=0.7ms idle=771.4ms SELECT m0.`id`, m0.`merchant_mid`, m0.`merchant_name`, m0.`adjustment_date`, m0.`debit_credit`, m0.`amount`, m0.`currency`, m0.`adjustment_type`, m0.`description`, m0.`settlement_mis_id`, m0.`status`, m0.`applied_at`, m0.`cancelled_at`, m0.`cancel_reason`, m0.`approval_status`, m0.`level1_reviewed_by`, m0.`level1_reviewed_at`, m0.`level2_approved_by`, m0.`level2_approved_at`, m0.`rejected_by`, m0.`rejected_at`, m0.`rejection_reason`, m0.`created_by`, m0.`updated_by`, m0.`inserted_at`, m0.`updated_at` FROM `merchant_adjustments` AS m0 WHERE (m0.`adjustment_date` = ?) AND (m0.`approval_status` = 'approved') [~D[2026-08-17]] ↳ SettlementCore.Context.list_approved_adjustments_by_date/1, at: lib/settlement_core/context.ex:971 [2026-09-02 12:27:11.194] [DEBUG] QUERY OK source="core_transactions" db=1.5ms idle=1.2ms SELECT c0.`id`, c0.`source_type`, c0.`source_ref_id`, c0.`settlement_batch_id`, c0.`rrn`, c0.`tid`, c0.`auth_number`, c0.`stan`, c0.`invoice_number`, c0.`batch_number`, c0.`merchant_mid`, c0.`merchant_id`, c0.`merchant_ref_number`, c0.`transaction_amount`, c0.`transaction_currency`, c0.`transaction_type`, c0.`transaction_datetime`, c0.`masked_pan`, c0.`scheme_name`, c0.`card_holder_name`, c0.`customer_mobile`, c0.`customer_country`, c0.`mcc_code`, c0.`card_type_id`, c0.`card_type_code`, c0.`mdr_template_id`, c0.`mdr_percentage_rate`, c0.`mdr_fixed_fee`, c0.`mdr_minimum_fee`, c0.`mdr_maximum_fee`, c0.`mdr_amount`, c0.`vat_rate`, c0.`vat_amount`, c0.`interchange_fee`, c0.`interchange_template_id`, c0.`gross_amount`, c0.`net_settlement_amount`, c0.`settlement_status`, c0.`switch_settled_date`, c0.`released_for_settlement_date`, c0.`risk_hold`, c0.`risk_rule_name`, c0.`chargeback_hold`, c0.`exception_type`, c0.`refund_status`, c0.`refund_date`, c0.`reversal_status`, c0.`reversal_date`, c0.`store_id`, c0.`dr_cr`, c0.`qr_tag`, c0.`bank_transfer_reference`, c0.`bank_transfer_date`, c0.`spare_fields`, c0.`inserted_at`, c0.`updated_at` FROM `core_transactions` AS c0 WHERE (DATE(c0.`transaction_datetime`) = ?) AND ((c0.`risk_hold` = TRUE) OR (c0.`settlement_status` = 'exception_hold')) AND (c0.`merchant_mid` = ?) ORDER BY c0.`merchant_mid`, c0.`transaction_datetime` [~D[2026-08-17], "301510300000000"] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:350 [2026-09-02 12:27:11.195] [DEBUG] Replied in 4ms [2026-09-02 12:27:37.262] [DEBUG] HANDLE EVENT "close_detail" in PlatformWeb.SettlementLive.MisApproval Parameters: %{"value" => ""} [2026-09-02 12:27:37.262] [DEBUG] Replied in 207µs [2026-09-02 12:27:41.900] [DEBUG] HANDLE EVENT "mis_row_clicked" in PlatformWeb.SettlementLive.MisApproval Parameters: %{"id" => 315} [2026-09-02 12:27:41.904] [DEBUG] QUERY OK source="settlement_mis" db=0.6ms queue=1.6ms idle=1126.7ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 WHERE (s0.`id` = ?) [315] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:284 [2026-09-02 12:27:41.911] [DEBUG] QUERY OK source="settlement_mis_items" db=3.1ms queue=3.3ms idle=125.2ms SELECT s0.`merchant_mid`, s0.`merchant_id`, MAX(s0.`merchant_name`), sum(s0.`transaction_count`), sum(s0.`total_gross_amount`), sum(s0.`total_mdr_amount`), sum(s0.`total_vat_amount`), sum(s0.`total_interchange_fee`), sum(s0.`net_payable`), GROUP_CONCAT(DISTINCT s0.`scheme_name` SEPARATOR ', '), GROUP_CONCAT(DISTINCT s0.`card_type_code` SEPARATOR ', ') FROM `settlement_mis_items` AS s0 WHERE (s0.`settlement_mis_id` = ?) GROUP BY s0.`merchant_mid`, s0.`merchant_id` [315] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:285 [2026-09-02 12:27:41.912] [DEBUG] QUERY OK source="merchant_adjustments" db=0.5ms queue=0.2ms idle=7.2ms SELECT m0.`id`, m0.`merchant_mid`, m0.`merchant_name`, m0.`adjustment_date`, m0.`debit_credit`, m0.`amount`, m0.`currency`, m0.`adjustment_type`, m0.`description`, m0.`settlement_mis_id`, m0.`status`, m0.`applied_at`, m0.`cancelled_at`, m0.`cancel_reason`, m0.`approval_status`, m0.`level1_reviewed_by`, m0.`level1_reviewed_at`, m0.`level2_approved_by`, m0.`level2_approved_at`, m0.`rejected_by`, m0.`rejected_at`, m0.`rejection_reason`, m0.`created_by`, m0.`updated_by`, m0.`inserted_at`, m0.`updated_at` FROM `merchant_adjustments` AS m0 WHERE (m0.`adjustment_date` = ?) AND (m0.`approval_status` = 'approved') [~D[2026-08-06]] ↳ SettlementCore.Context.list_approved_adjustments_by_date/1, at: lib/settlement_core/context.ex:971 [2026-09-02 12:27:41.917] [DEBUG] QUERY OK source="tid_masters" db=1.6ms queue=3.0ms idle=1.8ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ PlatformWeb.SettlementLive.MisApproval.merchant_name_map/1, at: lib/platform_web/live/settlement_live/mis_approval.ex:664 [2026-09-02 12:27:41.922] [DEBUG] QUERY OK source="core_transactions" db=2.4ms queue=0.2ms idle=7.5ms SELECT DISTINCT c0.`merchant_mid`, coalesce(t1.`merchant_name_legal`, t1.`merchant_name_dba`) FROM `core_transactions` AS c0 INNER JOIN `tid_masters` AS t1 ON t1.`mid` = c0.`merchant_mid` WHERE (DATE(c0.`transaction_datetime`) = ?) AND ((c0.`risk_hold` = TRUE) OR (c0.`settlement_status` = 'exception_hold')) AND (NOT (c0.`merchant_mid` IN (SELECT DISTINCT ss0.`merchant_mid` FROM `settlement_mis_items` AS ss0 WHERE (ss0.`settlement_mis_id` = ?)))) [~D[2026-08-06], 315] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:301 [2026-09-02 12:27:41.922] [DEBUG] Replied in 22ms [2026-09-02 12:27:44.486] [DEBUG] HANDLE EVENT "expand_merchant" in PlatformWeb.SettlementLive.MisApproval Parameters: %{"mid" => "419926360000000"} [2026-09-02 12:27:44.490] [DEBUG] QUERY OK source="settlement_mis_items" db=0.8ms queue=3.0ms idle=1700.2ms SELECT s0.`id`, s0.`settlement_mis_id`, s0.`core_transaction_id`, s0.`merchant_mid`, s0.`merchant_id`, s0.`merchant_name`, s0.`merchant_ref_number`, s0.`bank_name`, s0.`iban`, s0.`account_number`, s0.`settlement_date`, s0.`rrn`, s0.`tid`, s0.`auth_number`, s0.`transaction_date`, s0.`transaction_type`, s0.`scheme_name`, s0.`card_type_code`, s0.`gross_amount`, s0.`mdr_percentage_rate`, s0.`mdr_amount`, s0.`vat_rate`, s0.`vat_amount`, s0.`interchange_fee`, s0.`adjustment_amount`, s0.`ar_recovery`, s0.`net_payable`, s0.`transaction_count`, s0.`total_gross_amount`, s0.`total_mdr_amount`, s0.`total_vat_amount`, s0.`total_interchange_fee`, s0.`total_net_settlement_amount`, s0.`risk_status`, s0.`exception_type`, s0.`mpr_sent`, s0.`margin_contribution`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis_items` AS s0 WHERE ((s0.`settlement_mis_id` = ?) AND (s0.`merchant_mid` = ?)) ORDER BY s0.`card_type_code` [315, "419926360000000"] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:341 [2026-09-02 12:27:44.496] [DEBUG] QUERY OK source="merchant_adjustments" db=5.2ms idle=697.4ms SELECT m0.`id`, m0.`merchant_mid`, m0.`merchant_name`, m0.`adjustment_date`, m0.`debit_credit`, m0.`amount`, m0.`currency`, m0.`adjustment_type`, m0.`description`, m0.`settlement_mis_id`, m0.`status`, m0.`applied_at`, m0.`cancelled_at`, m0.`cancel_reason`, m0.`approval_status`, m0.`level1_reviewed_by`, m0.`level1_reviewed_at`, m0.`level2_approved_by`, m0.`level2_approved_at`, m0.`rejected_by`, m0.`rejected_at`, m0.`rejection_reason`, m0.`created_by`, m0.`updated_by`, m0.`inserted_at`, m0.`updated_at` FROM `merchant_adjustments` AS m0 WHERE (m0.`adjustment_date` = ?) AND (m0.`approval_status` = 'approved') [~D[2026-08-06]] ↳ SettlementCore.Context.list_approved_adjustments_by_date/1, at: lib/settlement_core/context.ex:971 [2026-09-02 12:27:44.502] [DEBUG] QUERY OK source="tid_masters" db=0.5ms queue=0.4ms idle=11.2ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?)) ["419926360000000"] ↳ PlatformWeb.SettlementLive.MisApproval.merchant_name_map/1, at: lib/platform_web/live/settlement_live/mis_approval.ex:664 [2026-09-02 12:27:44.504] [DEBUG] QUERY OK source="core_transactions" db=1.1ms idle=6.6ms SELECT c0.`id`, c0.`source_type`, c0.`source_ref_id`, c0.`settlement_batch_id`, c0.`rrn`, c0.`tid`, c0.`auth_number`, c0.`stan`, c0.`invoice_number`, c0.`batch_number`, c0.`merchant_mid`, c0.`merchant_id`, c0.`merchant_ref_number`, c0.`transaction_amount`, c0.`transaction_currency`, c0.`transaction_type`, c0.`transaction_datetime`, c0.`masked_pan`, c0.`scheme_name`, c0.`card_holder_name`, c0.`customer_mobile`, c0.`customer_country`, c0.`mcc_code`, c0.`card_type_id`, c0.`card_type_code`, c0.`mdr_template_id`, c0.`mdr_percentage_rate`, c0.`mdr_fixed_fee`, c0.`mdr_minimum_fee`, c0.`mdr_maximum_fee`, c0.`mdr_amount`, c0.`vat_rate`, c0.`vat_amount`, c0.`interchange_fee`, c0.`interchange_template_id`, c0.`gross_amount`, c0.`net_settlement_amount`, c0.`settlement_status`, c0.`switch_settled_date`, c0.`released_for_settlement_date`, c0.`risk_hold`, c0.`risk_rule_name`, c0.`chargeback_hold`, c0.`exception_type`, c0.`refund_status`, c0.`refund_date`, c0.`reversal_status`, c0.`reversal_date`, c0.`store_id`, c0.`dr_cr`, c0.`qr_tag`, c0.`bank_transfer_reference`, c0.`bank_transfer_date`, c0.`spare_fields`, c0.`inserted_at`, c0.`updated_at` FROM `core_transactions` AS c0 WHERE (DATE(c0.`transaction_datetime`) = ?) AND ((c0.`risk_hold` = TRUE) OR (c0.`settlement_status` = 'exception_hold')) AND (c0.`merchant_mid` = ?) ORDER BY c0.`merchant_mid`, c0.`transaction_datetime` [~D[2026-08-06], "419926360000000"] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:350 [2026-09-02 12:27:44.505] [DEBUG] Replied in 19ms [2026-09-02 12:27:46.084] [DEBUG] HANDLE EVENT "expand_merchant" in PlatformWeb.SettlementLive.MisApproval Parameters: %{"mid" => "425590250000000"} [2026-09-02 12:27:46.087] [DEBUG] QUERY OK source="settlement_mis_items" db=2.4ms idle=505.6ms SELECT s0.`id`, s0.`settlement_mis_id`, s0.`core_transaction_id`, s0.`merchant_mid`, s0.`merchant_id`, s0.`merchant_name`, s0.`merchant_ref_number`, s0.`bank_name`, s0.`iban`, s0.`account_number`, s0.`settlement_date`, s0.`rrn`, s0.`tid`, s0.`auth_number`, s0.`transaction_date`, s0.`transaction_type`, s0.`scheme_name`, s0.`card_type_code`, s0.`gross_amount`, s0.`mdr_percentage_rate`, s0.`mdr_amount`, s0.`vat_rate`, s0.`vat_amount`, s0.`interchange_fee`, s0.`adjustment_amount`, s0.`ar_recovery`, s0.`net_payable`, s0.`transaction_count`, s0.`total_gross_amount`, s0.`total_mdr_amount`, s0.`total_vat_amount`, s0.`total_interchange_fee`, s0.`total_net_settlement_amount`, s0.`risk_status`, s0.`exception_type`, s0.`mpr_sent`, s0.`margin_contribution`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis_items` AS s0 WHERE ((s0.`settlement_mis_id` = ?) AND (s0.`merchant_mid` = ?)) ORDER BY s0.`card_type_code` [315, "425590250000000"] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:341 [2026-09-02 12:27:46.088] [DEBUG] QUERY OK source="merchant_adjustments" db=0.7ms idle=274.4ms SELECT m0.`id`, m0.`merchant_mid`, m0.`merchant_name`, m0.`adjustment_date`, m0.`debit_credit`, m0.`amount`, m0.`currency`, m0.`adjustment_type`, m0.`description`, m0.`settlement_mis_id`, m0.`status`, m0.`applied_at`, m0.`cancelled_at`, m0.`cancel_reason`, m0.`approval_status`, m0.`level1_reviewed_by`, m0.`level1_reviewed_at`, m0.`level2_approved_by`, m0.`level2_approved_at`, m0.`rejected_by`, m0.`rejected_at`, m0.`rejection_reason`, m0.`created_by`, m0.`updated_by`, m0.`inserted_at`, m0.`updated_at` FROM `merchant_adjustments` AS m0 WHERE (m0.`adjustment_date` = ?) AND (m0.`approval_status` = 'approved') [~D[2026-08-06]] ↳ SettlementCore.Context.list_approved_adjustments_by_date/1, at: lib/settlement_core/context.ex:971 [2026-09-02 12:27:46.091] [DEBUG] QUERY OK source="tid_masters" db=2.3ms queue=0.5ms idle=1.6ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?)) ["425590250000000"] ↳ PlatformWeb.SettlementLive.MisApproval.merchant_name_map/1, at: lib/platform_web/live/settlement_live/mis_approval.ex:664 [2026-09-02 12:27:46.093] [DEBUG] QUERY OK source="core_transactions" db=1.5ms idle=3.6ms SELECT c0.`id`, c0.`source_type`, c0.`source_ref_id`, c0.`settlement_batch_id`, c0.`rrn`, c0.`tid`, c0.`auth_number`, c0.`stan`, c0.`invoice_number`, c0.`batch_number`, c0.`merchant_mid`, c0.`merchant_id`, c0.`merchant_ref_number`, c0.`transaction_amount`, c0.`transaction_currency`, c0.`transaction_type`, c0.`transaction_datetime`, c0.`masked_pan`, c0.`scheme_name`, c0.`card_holder_name`, c0.`customer_mobile`, c0.`customer_country`, c0.`mcc_code`, c0.`card_type_id`, c0.`card_type_code`, c0.`mdr_template_id`, c0.`mdr_percentage_rate`, c0.`mdr_fixed_fee`, c0.`mdr_minimum_fee`, c0.`mdr_maximum_fee`, c0.`mdr_amount`, c0.`vat_rate`, c0.`vat_amount`, c0.`interchange_fee`, c0.`interchange_template_id`, c0.`gross_amount`, c0.`net_settlement_amount`, c0.`settlement_status`, c0.`switch_settled_date`, c0.`released_for_settlement_date`, c0.`risk_hold`, c0.`risk_rule_name`, c0.`chargeback_hold`, c0.`exception_type`, c0.`refund_status`, c0.`refund_date`, c0.`reversal_status`, c0.`reversal_date`, c0.`store_id`, c0.`dr_cr`, c0.`qr_tag`, c0.`bank_transfer_reference`, c0.`bank_transfer_date`, c0.`spare_fields`, c0.`inserted_at`, c0.`updated_at` FROM `core_transactions` AS c0 WHERE (DATE(c0.`transaction_datetime`) = ?) AND ((c0.`risk_hold` = TRUE) OR (c0.`settlement_status` = 'exception_hold')) AND (c0.`merchant_mid` = ?) ORDER BY c0.`merchant_mid`, c0.`transaction_datetime` [~D[2026-08-06], "425590250000000"] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:350 [2026-09-02 12:27:46.093] [DEBUG] Replied in 9ms [2026-09-02 12:27:50.535] [DEBUG] HANDLE EVENT "close_detail" in PlatformWeb.SettlementLive.MisApproval Parameters: %{"value" => ""} [2026-09-02 12:27:50.535] [DEBUG] Replied in 208µs [2026-09-02 12:30:16.835] [INFO ] Performing scheduled filter cache refresh... [2026-09-02 12:30:16.836] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms queue=0.1ms idle=639.0ms SELECT t0.`area`, t0.`vendor`, t0.`model` FROM `tms_terminals` AS t0 WHERE ((NOT (t0.`area` IS NULL) OR NOT (t0.`vendor` IS NULL)) OR NOT (t0.`model` IS NULL)) [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_terminal_filter_data/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:153 [2026-09-02 12:30:16.840] [DEBUG] QUERY OK source="filter_usage" db=0.5ms idle=156.5ms SELECT f0.`filter_type`, f0.`filter_value`, coalesce(sum(f0.`usage_count`), 0) FROM `filter_usage` AS f0 GROUP BY f0.`filter_type`, f0.`filter_value` [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_usage_statistics/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:190 [2026-09-02 12:30:16.840] [INFO ] Filter cache rebuilt: 0 areas, 5 vendors, 8 models [2026-09-02 12:30:18.481] [INFO ] Running offline device check... [2026-09-02 12:30:18.481] [INFO ] Starting offline device check... [2026-09-02 12:30:18.483] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=1281.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1234 [2026-09-02 12:30:18.485] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=281.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [1] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:30:18.486] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:30:18.488] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.2ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:30:18.489] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=0.2ms idle=2.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:30:18.490] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:30:18.491] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:30:18.492] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:30:18.494] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:30:18.495] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:30:18.496] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.6ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:30:18.497] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:30:18.498] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:30:18.499] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:30:18.500] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:30:18.501] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:30:18.502] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:30:18.502] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:30:18.503] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:30:18.504] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:30:18.505] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:30:18.506] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.3ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:30:18.507] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:30:18.507] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:30:18.508] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms decode=0.1ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:30:18.509] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:30:18.511] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.1ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:30:18.512] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:30:18.513] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:30:18.514] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:30:18.515] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:30:18.517] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:30:18.518] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:30:18.519] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:30:18.519] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:30:18.520] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:30:18.521] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:30:18.522] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:30:18.523] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.4ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:30:18.524] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.2ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:30:18.525] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:30:18.526] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:30:18.529] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:30:18.530] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:30:18.534] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.9ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:30:18.537] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=5.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:30:18.539] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:30:18.540] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:30:18.541] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:30:18.541] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:30:18.542] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:30:18.544] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:30:18.545] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=2.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:30:18.546] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [82] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:30:18.547] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [83] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:30:18.547] [INFO ] Offline device check completed. Found 51 offline devices, updated 0 statuses. [2026-09-02 12:30:18.547] [INFO ] Offline device check completed successfully [2026-09-02 12:35:18.548] [INFO ] Running offline device check... [2026-09-02 12:35:18.548] [INFO ] Starting offline device check... [2026-09-02 12:35:18.549] [DEBUG] QUERY OK source="tms_terminals" db=1.3ms idle=1715.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1234 [2026-09-02 12:35:18.552] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=750.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [1] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:35:18.554] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=3.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:35:18.556] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:35:18.557] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:35:18.557] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:35:18.558] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:35:18.559] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:35:18.560] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:35:18.561] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:35:18.562] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:35:18.562] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:35:18.563] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:35:18.566] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms queue=0.2ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:35:18.567] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms queue=0.1ms idle=2.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:35:18.568] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.1ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:35:18.568] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:35:18.571] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.3ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:35:18.572] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.5ms idle=3.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:35:18.573] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:35:18.574] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:35:18.575] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:35:18.576] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.6ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:35:18.577] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:35:18.579] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:35:18.580] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=1.0ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:35:18.581] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:35:18.584] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms queue=0.1ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:35:18.585] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=3.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:35:18.587] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:35:18.589] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=2.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:35:18.591] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=2.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:35:18.592] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:35:18.594] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms queue=0.4ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:35:18.595] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:35:18.597] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:35:18.598] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:35:18.599] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=0.1ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:35:18.600] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=0.2ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:35:18.601] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:35:18.602] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:35:18.602] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:35:18.604] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:35:18.605] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:35:18.605] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:35:18.606] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:35:18.608] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:35:18.609] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:35:18.610] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:35:18.611] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:35:18.611] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:35:18.612] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.6ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:35:18.614] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.5ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:35:18.615] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [82] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:35:18.616] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [83] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:35:18.616] [INFO ] Offline device check completed. Found 51 offline devices, updated 0 statuses. [2026-09-02 12:35:18.616] [INFO ] Offline device check completed successfully [2026-09-02 12:40:18.617] [INFO ] Running offline device check... [2026-09-02 12:40:18.617] [INFO ] Starting offline device check... [2026-09-02 12:40:18.618] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=504.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1234 [2026-09-02 12:40:18.620] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=257.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [1] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:40:18.621] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:40:18.622] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:40:18.623] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.3ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:40:18.624] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:40:18.626] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:40:18.627] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:40:18.627] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:40:18.628] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:40:18.629] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.4ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:40:18.630] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:40:18.631] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:40:18.632] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:40:18.633] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.1ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:40:18.634] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:40:18.635] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:40:18.635] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.1ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:40:18.636] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:40:18.637] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:40:18.637] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:40:18.638] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:40:18.639] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:40:18.640] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:40:18.641] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:40:18.644] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.3ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:40:18.645] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.3ms idle=2.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:40:18.646] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:40:18.647] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.5ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:40:18.648] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:40:18.649] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:40:18.649] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:40:18.650] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:40:18.651] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:40:18.652] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.3ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:40:18.653] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:40:18.654] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.1ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:40:18.654] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:40:18.655] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:40:18.656] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:40:18.657] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:40:18.658] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:40:18.658] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:40:18.659] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:40:18.660] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:40:18.661] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=0.1ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:40:18.662] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:40:18.663] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.1ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:40:18.664] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:40:18.666] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:40:18.667] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms queue=0.3ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:40:18.669] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.7ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:40:18.670] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:40:18.671] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [82] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:40:18.672] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [83] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:40:18.672] [INFO ] Offline device check completed. Found 51 offline devices, updated 0 statuses. [2026-09-02 12:40:18.672] [INFO ] Offline device check completed successfully [2026-09-02 12:45:16.841] [INFO ] Performing scheduled filter cache refresh... [2026-09-02 12:45:16.842] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.1ms idle=396.8ms SELECT t0.`area`, t0.`vendor`, t0.`model` FROM `tms_terminals` AS t0 WHERE ((NOT (t0.`area` IS NULL) OR NOT (t0.`vendor` IS NULL)) OR NOT (t0.`model` IS NULL)) [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_terminal_filter_data/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:153 [2026-09-02 12:45:16.843] [DEBUG] QUERY OK source="filter_usage" db=0.7ms idle=292.8ms SELECT f0.`filter_type`, f0.`filter_value`, coalesce(sum(f0.`usage_count`), 0) FROM `filter_usage` AS f0 GROUP BY f0.`filter_type`, f0.`filter_value` [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_usage_statistics/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:190 [2026-09-02 12:45:16.843] [INFO ] Filter cache rebuilt: 0 areas, 5 vendors, 8 models [2026-09-02 12:45:18.674] [INFO ] Running offline device check... [2026-09-02 12:45:18.674] [INFO ] Starting offline device check... [2026-09-02 12:45:18.678] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=233.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1234 [2026-09-02 12:45:18.684] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=123.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [1] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:45:18.685] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=5.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:45:18.687] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:45:18.689] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:45:18.690] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:45:18.692] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=3.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:45:18.694] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:45:18.703] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.0ms idle=2.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:45:18.713] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.2ms idle=9.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:45:18.715] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=10.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:45:18.717] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:45:18.718] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:45:18.720] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms queue=0.3ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:45:18.721] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.4ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:45:18.722] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:45:18.724] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms decode=0.1ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:45:18.725] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:45:18.727] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms decode=0.3ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:45:18.729] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:45:18.730] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=3.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:45:18.731] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:45:18.733] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:45:18.736] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.7ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:45:18.739] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=5.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:45:18.740] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=2.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:45:18.741] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:45:18.743] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:45:18.744] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:45:18.748] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=4.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:45:18.749] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=3.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:45:18.750] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:45:18.751] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:45:18.752] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:45:18.752] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:45:18.753] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:45:18.754] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:45:18.754] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:45:18.756] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:45:18.756] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:45:18.757] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:45:18.759] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms queue=0.2ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:45:18.760] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:45:18.761] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:45:18.762] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:45:18.767] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms queue=3.0ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:45:18.767] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=4.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:45:18.768] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:45:18.770] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:45:18.771] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:45:18.772] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:45:18.775] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:45:18.776] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:45:18.778] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [82] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:45:18.780] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [83] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:45:18.780] [INFO ] Offline device check completed. Found 51 offline devices, updated 0 statuses. [2026-09-02 12:45:18.780] [INFO ] Offline device check completed successfully [2026-09-02 12:50:18.781] [INFO ] Running offline device check... [2026-09-02 12:50:18.781] [INFO ] Starting offline device check... [2026-09-02 12:50:18.788] [DEBUG] QUERY OK source="tms_terminals" db=3.0ms queue=0.1ms idle=974.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1234 [2026-09-02 12:50:18.797] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.8ms queue=0.1ms idle=700.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [1] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:50:18.801] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.2ms idle=9.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:50:18.808] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.0ms queue=1.0ms idle=4.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:50:18.812] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.5ms idle=7.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:50:18.815] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms queue=1.8ms idle=4.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:50:18.818] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.4ms idle=4.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:50:18.820] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=3.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:50:18.830] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.8ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:50:18.835] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.0ms idle=9.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:50:18.845] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.0ms idle=5.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:50:18.856] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.1ms queue=1.2ms idle=9.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:50:18.870] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.9ms queue=4.1ms idle=11.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:50:18.883] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.0ms queue=7.9ms idle=14.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:50:18.888] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms queue=2.6ms idle=14.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:50:18.895] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.5ms idle=7.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:50:18.904] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.0ms queue=0.4ms idle=12.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:50:18.909] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.4ms idle=9.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:50:18.910] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=5.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:50:18.914] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.3ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:50:18.916] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=3.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:50:18.936] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.8ms queue=0.1ms idle=14.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:50:18.946] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms queue=2.6ms idle=26.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:50:18.954] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.5ms queue=2.5ms idle=12.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:50:18.968] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=14.0ms idle=7.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:50:18.989] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.2ms queue=0.1ms idle=25.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:50:19.007] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.2ms idle=33.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:50:19.023] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=11.3ms idle=23.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:50:19.034] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.6ms queue=0.1ms idle=24.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:50:19.048] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=12.9ms idle=11.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:50:19.055] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.4ms idle=14.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:50:19.075] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=19.7ms idle=7.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:50:19.079] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.1ms idle=20.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:50:19.098] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=15.8ms idle=3.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:50:19.109] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.0ms idle=3.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:50:19.111] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms queue=0.6ms idle=0.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:50:19.113] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=0.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:50:19.120] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.0ms idle=0.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:50:19.137] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=16.9ms idle=7.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:50:19.144] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.4ms decode=3.1ms idle=18.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:50:19.146] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms queue=0.8ms idle=6.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:50:19.149] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms idle=6.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:50:19.152] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.6ms idle=2.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:50:19.153] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.2ms idle=3.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:50:19.157] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.1ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:50:19.161] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.2ms idle=3.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:50:19.173] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.6ms queue=0.1ms idle=4.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:50:19.177] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms queue=0.1ms idle=14.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:50:19.191] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.7ms queue=6.3ms idle=4.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:50:19.196] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.5ms idle=15.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:50:19.210] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms queue=8.2ms idle=8.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:50:19.235] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=21.2ms queue=3.2ms idle=14.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:50:19.243] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.6ms idle=25.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:50:19.245] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=8.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [82] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:50:19.248] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=1.8ms idle=3.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [83] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:50:19.248] [INFO ] Offline device check completed. Found 51 offline devices, updated 0 statuses. [2026-09-02 12:50:19.248] [INFO ] Offline device check completed successfully [2026-09-02 12:55:19.251] [INFO ] Running offline device check... [2026-09-02 12:55:19.251] [INFO ] Starting offline device check... [2026-09-02 12:55:19.283] [DEBUG] QUERY OK source="tms_terminals" db=20.6ms queue=4.2ms idle=1205.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1234 [2026-09-02 12:55:19.327] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=17.4ms idle=733.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [1] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:55:19.364] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.5ms queue=29.1ms idle=44.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:55:19.369] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.6ms queue=0.1ms idle=37.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:55:19.370] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=5.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:55:19.379] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.8ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:55:19.389] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.3ms queue=0.1ms idle=8.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:55:19.437] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=48.0ms queue=0.1ms idle=10.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:55:19.452] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=14.5ms idle=48.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:55:19.465] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=12.6ms idle=15.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:55:19.503] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=37.1ms idle=13.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:55:19.507] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.4ms queue=0.8ms idle=37.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:55:19.509] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=5.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:55:19.548] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=39.3ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:55:19.553] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.4ms idle=40.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:55:19.556] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.8ms idle=5.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:55:19.574] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=16.6ms idle=3.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:55:19.596] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=21.6ms idle=17.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:55:19.611] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=14.9ms idle=0.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:55:19.631] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.1ms idle=16.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:55:19.633] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.6ms idle=20.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:55:19.639] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.1ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:55:19.657] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=16.7ms idle=6.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:55:19.675] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.3ms queue=13.6ms idle=17.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:55:19.722] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=46.7ms idle=18.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:55:19.736] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=13.3ms idle=47.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:55:19.750] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=13.5ms idle=14.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:55:19.778] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=27.1ms idle=14.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:55:19.791] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=5.5ms queue=7.5ms idle=28.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:55:19.809] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=17.1ms idle=21.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:55:19.900] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=73.9ms queue=11.7ms idle=23.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:55:19.902] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms queue=0.1ms idle=93.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:55:19.911] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.8ms queue=3.1ms idle=4.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:55:19.916] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.0ms idle=9.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:55:19.919] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=1.9ms idle=4.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:55:19.934] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=15.3ms idle=3.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:55:19.945] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.3ms idle=16.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:55:19.953] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=7.3ms queue=0.1ms idle=20.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:55:19.988] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=26.6ms queue=7.4ms idle=11.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:55:20.005] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=16.5ms idle=34.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:55:20.017] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.1ms idle=25.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:55:20.027] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.1ms idle=12.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:55:20.044] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=15.6ms queue=0.4ms idle=11.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:55:20.063] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.8ms queue=2.1ms idle=26.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:55:20.090] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=26.9ms queue=0.1ms idle=19.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:55:20.092] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.2ms idle=28.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:55:20.113] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=9.6ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:55:20.137] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=6.2ms idle=39.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:55:20.173] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=35.3ms idle=35.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:55:20.182] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=8.6ms idle=36.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:55:20.207] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=24.0ms idle=9.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:55:20.232] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=24.6ms idle=24.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:55:20.245] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=12.8ms idle=25.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:55:20.259] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=13.2ms idle=13.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [82] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:55:20.277] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=10.7ms queue=0.6ms idle=19.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [83] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 12:55:20.277] [INFO ] Offline device check completed. Found 51 offline devices, updated 0 statuses. [2026-09-02 12:55:20.277] [INFO ] Offline device check completed successfully [2026-09-02 12:58:59.330] [WARN ] [message: "Oban.Peer.leader?/2 check failed due to {:timeout, {GenServer, :call, [#PID<0.1870.0>, :leader?, 5000]}}", source: :oban, module: Oban.Peer] [2026-09-02 12:59:02.799] [WARN ] [message: "Oban.Peer.leader?/2 check failed due to {:timeout, {GenServer, :call, [#PID<0.1870.0>, :leader?, 5000]}}", source: :oban, module: Oban.Peer] [2026-09-02 12:59:03.296] [DEBUG] HANDLE EVENT "mis_row_clicked" in PlatformWeb.SettlementLive.MisApproval Parameters: %{"id" => 315} [2026-09-02 12:59:03.301] [DEBUG] QUERY OK source="settlement_mis" db=4.3ms idle=368.5ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 WHERE (s0.`id` = ?) [315] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:284 [2026-09-02 12:59:03.305] [DEBUG] QUERY OK source="settlement_mis_items" db=3.3ms idle=0.4ms SELECT s0.`merchant_mid`, s0.`merchant_id`, MAX(s0.`merchant_name`), sum(s0.`transaction_count`), sum(s0.`total_gross_amount`), sum(s0.`total_mdr_amount`), sum(s0.`total_vat_amount`), sum(s0.`total_interchange_fee`), sum(s0.`net_payable`), GROUP_CONCAT(DISTINCT s0.`scheme_name` SEPARATOR ', '), GROUP_CONCAT(DISTINCT s0.`card_type_code` SEPARATOR ', ') FROM `settlement_mis_items` AS s0 WHERE (s0.`settlement_mis_id` = ?) GROUP BY s0.`merchant_mid`, s0.`merchant_id` [315] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:285 [2026-09-02 12:59:03.312] [DEBUG] QUERY OK source="merchant_adjustments" db=6.7ms idle=0.3ms SELECT m0.`id`, m0.`merchant_mid`, m0.`merchant_name`, m0.`adjustment_date`, m0.`debit_credit`, m0.`amount`, m0.`currency`, m0.`adjustment_type`, m0.`description`, m0.`settlement_mis_id`, m0.`status`, m0.`applied_at`, m0.`cancelled_at`, m0.`cancel_reason`, m0.`approval_status`, m0.`level1_reviewed_by`, m0.`level1_reviewed_at`, m0.`level2_approved_by`, m0.`level2_approved_at`, m0.`rejected_by`, m0.`rejected_at`, m0.`rejection_reason`, m0.`created_by`, m0.`updated_by`, m0.`inserted_at`, m0.`updated_at` FROM `merchant_adjustments` AS m0 WHERE (m0.`adjustment_date` = ?) AND (m0.`approval_status` = 'approved') [~D[2026-08-06]] ↳ SettlementCore.Context.list_approved_adjustments_by_date/1, at: lib/settlement_core/context.ex:971 [2026-09-02 12:59:03.331] [DEBUG] QUERY OK source="tid_masters" db=12.7ms queue=5.8ms idle=0.4ms SELECT t0.`id`,[2026-09-02 13:20:44.258] [INFO ] [Ysp.Scheduler] Started. SFTP in 13h 39m, MIS in 18h 39m [2026-09-02 13:20:44.287] [INFO ] :alarm_handler: {:set, {{:disk_almost_full, ~c"/"}, []}} [2026-09-02 13:20:44.300] [INFO ] :alarm_handler: {:set, {:system_memory_high_watermark, []}} [2026-09-02 13:20:46.187] [INFO ] Terminal Event Listener started and listening to events [2026-09-02 13:20:46.188] [INFO ] Rule Validation Worker started - will run every hour [2026-09-02 13:20:46.192] [INFO ] Building initial filter cache... [2026-09-02 13:20:46.209] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms queue=0.5ms idle=557.2ms SELECT t0.`area`, t0.`vendor`, t0.`model` FROM `tms_terminals` AS t0 WHERE ((NOT (t0.`area` IS NULL) OR NOT (t0.`vendor` IS NULL)) OR NOT (t0.`model` IS NULL)) [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_terminal_filter_data/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:153 [2026-09-02 13:20:46.217] [DEBUG] QUERY OK source="filter_usage" db=2.2ms queue=1.0ms idle=290.6ms SELECT f0.`filter_type`, f0.`filter_value`, coalesce(sum(f0.`usage_count`), 0) FROM `filter_usage` AS f0 GROUP BY f0.`filter_type`, f0.`filter_value` [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_usage_statistics/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:190 [2026-09-02 13:20:46.218] [INFO ] Filter cache rebuilt: 0 areas, 5 vendors, 8 models [2026-09-02 13:20:46.312] [INFO ] Running PlatformWeb.Endpoint with Bandit 1.10.2 at 0.0.0.0:5329 (http) [2026-09-02 13:20:46.326] [INFO ] Access PlatformWeb.Endpoint at http://localhost:5329 [2026-09-02 13:20:46.337] [INFO ] Device phoenix_client_tms_apps_vidya connected [2026-09-02 13:21:05.148] [INFO ] Received status update for terminal 98251226730001 [2026-09-02 13:21:05.148] [INFO ] Incoming JSON payload: {"oid":"c63c81a7-3b35-48f0-b7e0-69bb080b8c22","sn":"98251226730001","uploadTime":"2026-09-02T13:21:04Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-09-02T13:21:04Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-09-02T13:21:04Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-09-02T13:21:04Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-09-02T13:21:04Z"},{"itemkey":"ram_free_mb","value":"812","timestamp":"2026-09-02T13:21:04Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-09-02T13:21:04Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-09-02T13:21:04Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-09-02T13:21:04Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-09-02T13:21:04Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-09-02T13:21:04Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-09-02T13:21:04Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-09-02T13:21:04Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-09-02T13:21:04Z"},{"itemkey":"data_usage_mb","value":"43","timestamp":"2026-09-02T13:21:04Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-09-02T13:21:04Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-09-02 13:21:05.154] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "c63c81a7-3b35-48f0-b7e0-69bb080b8c22", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-09-02T13:21:04Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-09-02T13:21:04Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-09-02T13:21:04Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-09-02T13:21:04Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-09-02T13:21:04Z", "value" => "812"}, %{"itemkey" => "network_type", "timestamp" => "2026-09-02T13:21:04Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-09-02T13:21:04Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-09-02T13:21:04Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-09-02T13:21:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-09-02T13:21:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-09-02T13:21:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-09-02T13:21:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-09-02T13:21:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-09-02T13:21:04Z", "value" => "43"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-09-02T13:21:04Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-09-02T13:21:04Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-09-02T13:21:04Z", "vendor" => "morefun"} [2026-09-02 13:21:05.154] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-09-02 13:21:05.202] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-09-02 13:21:05.203] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-09-02 13:21:05.210] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms queue=5.8ms idle=523.1ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-09-02 13:21:05.213] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms queue=2.5ms idle=119.4ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-09-02 13:21:05.218] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-09-02 13:21:05.324] [DEBUG] QUERY OK source="tms_terminals" db=3.7ms queue=4.2ms idle=106.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:140 [2026-09-02 13:21:05.386] [INFO ] Terminal updated: 98251226730001 [2026-09-02 13:21:05.483] [DEBUG] QUERY OK source="tms_terminals" db=79.1ms queue=9.6ms idle=173.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-09-02 13:21:05], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:164 [2026-09-02 13:21:05.488] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-09-02 13:21:05.490] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms idle=163.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:1184 [2026-09-02 13:21:05.581] [DEBUG] QUERY OK source="tms_terminals" db=88.2ms queue=2.4ms idle=14.7ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 13:21:05], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:174 [2026-09-02 13:21:05.651] [DEBUG] QUERY OK source="app_upgrade_device_statuses" db=1.6ms queue=4.7ms idle=155.3ms SELECT a0.`id`, a0.`config_id`, a0.`device_id`, a0.`device_sn`, a0.`vendor`, a0.`model`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`update_result`, a0.`status`, a0.`remark`, a0.`finish_time`, a0.`pushed_time`, a0.`retry_count`, a0.`inserted_at`, a0.`updated_at` FROM `app_upgrade_device_statuses` AS a0 WHERE ((a0.`device_sn` = ?) AND a0.`status` IN ('pending','pushed')) ["98251226730001"] ↳ TmsCore.TerminalManagement.AppUpgradeService.maybe_repush_for_device/1, at: lib/tms_core/terminal_management/app_upgrade_service.ex:148 [2026-09-02 13:21:05.750] [DEBUG] QUERY OK db=49.7ms queue=2.3ms idle=117.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "c63c81a7-3b35-48f0-b7e0-69bb080b8c22", "2026-09-02T13:21:04Z", ~N[2026-09-02 13:21:05], ~N[2026-09-02 13:21:05]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:179 [2026-09-02 13:21:05.767] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 106536, oid: "c63c81a7-3b35-48f0-b7e0-69bb080b8c22", upload_time: "2026-09-02T13:21:04Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:21:05], updated_at: ~N[2026-09-02 13:21:05]} [2026-09-02 13:21:05.767] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-09-02T13:21:04Z", "value" => "morefun"} [2026-09-02 13:21:05.835] [DEBUG] QUERY OK db=62.9ms queue=2.4ms idle=117.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:21:04Z", "morefun", "vendor", 106536, ~N[2026-09-02 13:21:05], ~N[2026-09-02 13:21:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:21:05.835] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1092878, itemkey: "vendor", value: "morefun", timestamp: "2026-09-02T13:21:04Z", message: nil, status_log_id: 106536, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:21:05], updated_at: ~N[2026-09-02 13:21:05]}} [2026-09-02 13:21:05.835] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-09-02T13:21:04Z", "value" => "kiosk_launcher"} [2026-09-02 13:21:05.910] [DEBUG] QUERY OK db=70.8ms queue=3.7ms idle=87.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:21:04Z", "kiosk_launcher", "model", 106536, ~N[2026-09-02 13:21:05], ~N[2026-09-02 13:21:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:21:05.910] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1092881, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-09-02T13:21:04Z", message: nil, status_log_id: 106536, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:21:05], updated_at: ~N[2026-09-02 13:21:05]}} [2026-09-02 13:21:05.910] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-09-02T13:21:04Z", "value" => "1.0"} [2026-09-02 13:21:06.012] [DEBUG] QUERY OK db=100.3ms queue=0.4ms idle=76.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:21:04Z", "1.0", "app_version", 106536, ~N[2026-09-02 13:21:05], ~N[2026-09-02 13:21:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:21:06.012] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1092885, itemkey: "app_version", value: "1.0", timestamp: "2026-09-02T13:21:04Z", message: nil, status_log_id: 106536, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:21:05], updated_at: ~N[2026-09-02 13:21:05]}} [2026-09-02 13:21:06.012] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-09-02T13:21:04Z", "value" => "13"} [2026-09-02 13:21:06.114] [DEBUG] QUERY OK db=98.4ms queue=2.8ms idle=102.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:21:04Z", "13", "android_version", 106536, ~N[2026-09-02 13:21:06], ~N[2026-09-02 13:21:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:21:06.114] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1092889, itemkey: "android_version", value: "13", timestamp: "2026-09-02T13:21:04Z", message: nil, status_log_id: 106536, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:21:06], updated_at: ~N[2026-09-02 13:21:06]}} [2026-09-02 13:21:06.114] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-09-02T13:21:04Z", "value" => "812"} [2026-09-02 13:21:06.204] [DEBUG] QUERY OK db=89.7ms idle=19.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:21:04Z", "812", "ram_free_mb", 106536, ~N[2026-09-02 13:21:06], ~N[2026-09-02 13:21:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:21:06.206] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1092893, itemkey: "ram_free_mb", value: "812", timestamp: "2026-09-02T13:21:04Z", message: nil, status_log_id: 106536, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:21:06], updated_at: ~N[2026-09-02 13:21:06]}} [2026-09-02 13:21:06.206] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-09-02T13:21:04Z", "value" => "WIFI"} [2026-09-02 13:21:06.248] [DEBUG] QUERY OK db=40.3ms idle=93.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:21:04Z", "WIFI", "network_type", 106536, ~N[2026-09-02 13:21:06], ~N[2026-09-02 13:21:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:21:06.248] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1092897, itemkey: "network_type", value: "WIFI", timestamp: "2026-09-02T13:21:04Z", message: nil, status_log_id: 106536, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:21:06], updated_at: ~N[2026-09-02 13:21:06]}} [2026-09-02 13:21:06.248] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-09-02T13:21:04Z", "value" => "true"} [2026-09-02 13:21:06.371] [DEBUG] QUERY OK db=121.0ms idle=44.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:21:04Z", "true", "kiosk_active", 106536, ~N[2026-09-02 13:21:06], ~N[2026-09-02 13:21:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:21:06.371] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1092900, itemkey: "kiosk_active", value: "true", timestamp: "2026-09-02T13:21:04Z", message: nil, status_log_id: 106536, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:21:06], updated_at: ~N[2026-09-02 13:21:06]}} [2026-09-02 13:21:06.375] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-09-02T13:21:04Z", "value" => ""} [2026-09-02 13:21:06.486] [DEBUG] QUERY OK db=109.6ms queue=0.6ms idle=127.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-09-02T13:21:04Z", "sim_operator", 106536, ~N[2026-09-02 13:21:06], ~N[2026-09-02 13:21:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:21:06.500] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1092904, itemkey: "sim_operator", value: nil, timestamp: "2026-09-02T13:21:04Z", message: nil, status_log_id: 106536, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:21:06], updated_at: ~N[2026-09-02 13:21:06]}} [2026-09-02 13:21:06.509] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-09-02T13:21:04Z", "value" => "UNKNOWN"} [2026-09-02 13:21:06.647] [DEBUG] QUERY OK db=114.6ms queue=2.1ms idle=160.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:21:04Z", "UNKNOWN", "sim_number", 106536, ~N[2026-09-02 13:21:06], ~N[2026-09-02 13:21:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:21:06.647] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1092909, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-09-02T13:21:04Z", message: nil, status_log_id: 106536, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:21:06], updated_at: ~N[2026-09-02 13:21:06]}} [2026-09-02 13:21:06.647] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-09-02T13:21:04Z", "value" => "UNKNOWN"} [2026-09-02 13:21:06.732] [DEBUG] QUERY OK db=83.5ms idle=162.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:21:04Z", "UNKNOWN", "sim_iccid", 106536, ~N[2026-09-02 13:21:06], ~N[2026-09-02 13:21:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:21:06.732] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1092914, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-09-02T13:21:04Z", message: nil, status_log_id: 106536, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:21:06], updated_at: ~N[2026-09-02 13:21:06]}} [2026-09-02 13:21:06.732] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-09-02T13:21:04Z", "value" => "UNKNOWN"} [2026-09-02 13:21:06.793] [DEBUG] QUERY OK db=60.9ms idle=85.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:21:04Z", "UNKNOWN", "sim_imsi", 106536, ~N[2026-09-02 13:21:06], ~N[2026-09-02 13:21:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:21:06.793] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1092917, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-09-02T13:21:04Z", message: nil, status_log_id: 106536, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:21:06], updated_at: ~N[2026-09-02 13:21:06]}} [2026-09-02 13:21:06.794] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-09-02T13:21:04Z", "value" => "UNKNOWN"} [2026-09-02 13:21:06.843] [DEBUG] QUERY OK db=49.2ms idle=62.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:21:04Z", "UNKNOWN", "sim_iccid2", 106536, ~N[2026-09-02 13:21:06], ~N[2026-09-02 13:21:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:21:06.843] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1092919, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-09-02T13:21:04Z", message: nil, status_log_id: 106536, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:21:06], updated_at: ~N[2026-09-02 13:21:06]}} [2026-09-02 13:21:06.844] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-09-02T13:21:04Z", "value" => "UNKNOWN"} [2026-09-02 13:21:06.909] [DEBUG] QUERY OK db=65.0ms idle=50.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:21:04Z", "UNKNOWN", "sim_imsi2", 106536, ~N[2026-09-02 13:21:06], ~N[2026-09-02 13:21:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:21:06.910] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1092921, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-09-02T13:21:04Z", message: nil, status_log_id: 106536, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:21:06], updated_at: ~N[2026-09-02 13:21:06]}} [2026-09-02 13:21:06.910] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-09-02T13:21:04Z", "value" => "43"} [2026-09-02 13:21:07.026] [DEBUG] QUERY OK db=114.6ms idle=68.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:21:04Z", "43", "data_usage_mb", 106536, ~N[2026-09-02 13:21:06], ~N[2026-09-02 13:21:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:21:07.035] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1092923, itemkey: "data_usage_mb", value: "43", timestamp: "2026-09-02T13:21:04Z", message: nil, status_log_id: 106536, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:21:06], updated_at: ~N[2026-09-02 13:21:06]}} [2026-09-02 13:21:07.046] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-09-02T13:21:04Z", "value" => "0"} [2026-09-02 13:21:07.095] [DEBUG] QUERY OK db=48.9ms idle=137.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:21:04Z", "0", "mobile_data_mb", 106536, ~N[2026-09-02 13:21:07], ~N[2026-09-02 13:21:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:21:07.097] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1092924, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-09-02T13:21:04Z", message: nil, status_log_id: 106536, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:21:07], updated_at: ~N[2026-09-02 13:21:07]}} [2026-09-02 13:21:07.097] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-09-02T13:21:04Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-09-02 13:21:07.188] [DEBUG] QUERY OK db=71.8ms queue=17.9ms idle=2.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:21:04Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 106536, ~N[2026-09-02 13:21:07], ~N[2026-09-02 13:21:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:21:07.189] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1092925, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-09-02T13:21:04Z", message: nil, status_log_id: 106536, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:21:07], updated_at: ~N[2026-09-02 13:21:07]}} [2026-09-02 13:21:20.882] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 37µs Transport: :longpoll Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "LAEoEnstNBYHKWY-OVgmARpxKyggB0RyudquOGUISQ6oMjKsW0oxT2r4", "_live_referer" => "http://localhost:5329/admin/settlements/adjustments", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://localhost:5329/assets/app.css", "1" => "http://localhost:5329/assets/app.js"}, "vsn" => "2.0.0"} [2026-09-02 13:21:21.628] [DEBUG] MOUNT PlatformWeb.SettlementLive.MisApproval Parameters: %{} Session: %{"_csrf_token" => "YeYg4ja_TxPQt2mrMADPt56F", "live_socket_id" => "users_sessions:1SCMkuUViXFyTH5BPBDsb34g_qe7I7Ttdm5i6LAnpjM=", "user_token" => <<213, 32, 140, 146, 229, 21, 137, 113, 114, 76, 126, 65, 60, 16, 236, 111, 126, 32, 254, 167, 187, 35, 180, 237, 118, 110, 98, 232, 176, 39, 166, 51>>} [2026-09-02 13:21:21.670] [DEBUG] QUERY OK source="users_tokens" db=1.0ms queue=1.6ms idle=1509.2ms SELECT u1.`id`, u1.`email`, u1.`hashed_password`, u1.`confirmed_at`, u1.`role`, u1.`name`, u1.`first_name`, u1.`last_name`, u1.`data`, u1.`inserted_at`, u1.`updated_at` FROM `users_tokens` AS u0 INNER JOIN `users` AS u1 ON u1.`id` = u0.`user_id` WHERE ((u0.`token` = ?) AND (u0.`context` = ?)) AND (u0.`inserted_at` > date_add(?, INTERVAL -(60) day)) [<<213, 32, 140, 146, 229, 21, 137, 113, 114, 76, 126, 65, 60, 16, 236, 111, 126, 32, 254, 167, 187, 35, 180, 237, 118, 110, 98, 232, 176, 39, 166, 51>>, "session", ~U[2026-09-02 13:21:21.648712Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-09-02 13:21:21.681] [DEBUG] QUERY OK source="settlement_mis" db=1.3ms queue=1.0ms idle=1500.8ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 ORDER BY s0.`mis_date` DESC LIMIT 100 [] ↳ PlatformWeb.SettlementLive.MisApproval.load_mis_rows/1, at: lib/platform_web/live/settlement_live/mis_approval.ex:599 [2026-09-02 13:21:21.692] [DEBUG] Replied in 64ms [2026-09-02 13:21:22.297] [INFO ] GET /admin/settlements/mis [2026-09-02 13:21:22.390] [DEBUG] Processing with PlatformWeb.SettlementLive.MisApproval.index/2 Parameters: %{} Pipelines: [:browser, :require_authenticated_user] [2026-09-02 13:21:22.395] [DEBUG] QUERY OK source="users_tokens" db=1.1ms queue=1.3ms idle=735.3ms SELECT u1.`id`, u1.`email`, u1.`hashed_password`, u1.`confirmed_at`, u1.`role`, u1.`name`, u1.`first_name`, u1.`last_name`, u1.`data`, u1.`inserted_at`, u1.`updated_at` FROM `users_tokens` AS u0 INNER JOIN `users` AS u1 ON u1.`id` = u0.`user_id` WHERE ((u0.`token` = ?) AND (u0.`context` = ?)) AND (u0.`inserted_at` > date_add(?, INTERVAL -(60) day)) [<<213, 32, 140, 146, 229, 21, 137, 113, 114, 76, 126, 65, 60, 16, 236, 111, 126, 32, 254, 167, 187, 35, 180, 237, 118, 110, 98, 232, 176, 39, 166, 51>>, "session", ~U[2026-09-02 13:21:22.392143Z]] ↳ PlatformWeb.UserAuth.fetch_current_user/2, at: lib/platform_web/user_auth.ex:97 [2026-09-02 13:21:22.432] [DEBUG] QUERY OK source="settlement_mis" db=2.3ms idle=745.7ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 ORDER BY s0.`mis_date` DESC LIMIT 100 [] ↳ PlatformWeb.SettlementLive.MisApproval.load_mis_rows/1, at: lib/platform_web/live/settlement_live/mis_approval.ex:599 [2026-09-02 13:21:22.479] [INFO ] Sent 200 in 181ms [2026-09-02 13:21:26.379] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 25µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "dD0hMgcCDzghISEyLFVZFzcIBwojekR0-XxU3hnguYqcXg4ezICZWOr2", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://localhost:5329/assets/app.css", "1" => "http://localhost:5329/assets/app.js"}, "vsn" => "2.0.0"} [2026-09-02 13:21:26.601] [DEBUG] MOUNT PlatformWeb.SettlementLive.MisApproval Parameters: %{} Session: %{"_csrf_token" => "YeYg4ja_TxPQt2mrMADPt56F", "live_socket_id" => "users_sessions:1SCMkuUViXFyTH5BPBDsb34g_qe7I7Ttdm5i6LAnpjM=", "user_token" => <<213, 32, 140, 146, 229, 21, 137, 113, 114, 76, 126, 65, 60, 16, 236, 111, 126, 32, 254, 167, 187, 35, 180, 237, 118, 110, 98, 232, 176, 39, 166, 51>>} [2026-09-02 13:21:26.617] [DEBUG] QUERY OK source="users_tokens" db=6.7ms queue=1.5ms idle=460.7ms SELECT u1.`id`, u1.`email`, u1.`hashed_password`, u1.`confirmed_at`, u1.`role`, u1.`name`, u1.`first_name`, u1.`last_name`, u1.`data`, u1.`inserted_at`, u1.`updated_at` FROM `users_tokens` AS u0 INNER JOIN `users` AS u1 ON u1.`id` = u0.`user_id` WHERE ((u0.`token` = ?) AND (u0.`context` = ?)) AND (u0.`inserted_at` > date_add(?, INTERVAL -(60) day)) [<<213, 32, 140, 146, 229, 21, 137, 113, 114, 76, 126, 65, 60, 16, 236, 111, 126, 32, 254, 167, 187, 35, 180, 237, 118, 110, 98, 232, 176, 39, 166, 51>>, "session", ~U[2026-09-02 13:21:26.601892Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-09-02 13:21:26.641] [DEBUG] QUERY OK source="settlement_mis" db=17.4ms queue=0.1ms idle=854.3ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 ORDER BY s0.`mis_date` DESC LIMIT 100 [] ↳ PlatformWeb.SettlementLive.MisApproval.load_mis_rows/1, at: lib/platform_web/live/settlement_live/mis_approval.ex:599 [2026-09-02 13:21:26.648] [DEBUG] Replied in 47ms [2026-09-02 13:21:29.777] [DEBUG] HANDLE EVENT "mis_row_clicked" in PlatformWeb.SettlementLive.MisApproval Parameters: %{"id" => 328} [2026-09-02 13:21:29.779] [DEBUG] QUERY OK source="settlement_mis" db=0.5ms queue=0.7ms idle=533.3ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 WHERE (s0.`id` = ?) [328] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:292 [2026-09-02 13:21:29.805] [DEBUG] QUERY OK source="settlement_mis_items" db=1.2ms queue=1.0ms idle=96.3ms SELECT s0.`merchant_mid`, s0.`merchant_id`, MAX(s0.`merchant_name`), sum(s0.`transaction_count`), sum(s0.`total_gross_amount`), sum(s0.`total_mdr_amount`), sum(s0.`total_vat_amount`), sum(s0.`total_interchange_fee`), sum(s0.`net_payable`), GROUP_CONCAT(DISTINCT s0.`scheme_name` SEPARATOR ', '), GROUP_CONCAT(DISTINCT s0.`card_type_code` SEPARATOR ', ') FROM `settlement_mis_items` AS s0 WHERE (s0.`settlement_mis_id` = ?) GROUP BY s0.`merchant_mid`, s0.`merchant_id` [328] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:293 [2026-09-02 13:21:29.815] [DEBUG] QUERY OK source="merchant_adjustments" db=0.8ms queue=1.6ms idle=32.8ms SELECT m0.`id`, m0.`merchant_mid`, m0.`merchant_name`, m0.`adjustment_date`, m0.`debit_credit`, m0.`amount`, m0.`currency`, m0.`adjustment_type`, m0.`description`, m0.`settlement_mis_id`, m0.`status`, m0.`applied_at`, m0.`cancelled_at`, m0.`cancel_reason`, m0.`approval_status`, m0.`level1_reviewed_by`, m0.`level1_reviewed_at`, m0.`level2_approved_by`, m0.`level2_approved_at`, m0.`rejected_by`, m0.`rejected_at`, m0.`rejection_reason`, m0.`created_by`, m0.`updated_by`, m0.`inserted_at`, m0.`updated_at` FROM `merchant_adjustments` AS m0 WHERE (m0.`settlement_mis_id` = ?) [328] ↳ SettlementCore.Context.list_adjustments_by_settlement_mis/1, at: lib/settlement_core/context.ex:1013 [2026-09-02 13:21:29.826] [DEBUG] QUERY OK source="settlement_mis_hold_snapshots" db=0.6ms queue=4.2ms idle=16.1ms SELECT DISTINCT s0.`merchant_mid`, s0.`merchant_name` FROM `settlement_mis_hold_snapshots` AS s0 WHERE (s0.`settlement_mis_id` = ?) AND (NOT (s0.`merchant_mid` IN (SELECT DISTINCT ss0.`merchant_mid` FROM `settlement_mis_items` AS ss0 WHERE (ss0.`settlement_mis_id` = ?)))) [328, 328] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:329 [2026-09-02 13:21:29.827] [DEBUG] QUERY OK source="settlement_mis_hold_snapshots" db=0.3ms queue=0.6ms idle=11.8ms SELECT s0.`id`, s0.`settlement_mis_id`, s0.`core_transaction_id`, s0.`merchant_mid`, s0.`merchant_name`, s0.`rrn`, s0.`tid`, s0.`scheme_name`, s0.`card_type_code`, s0.`gross_amount`, s0.`hold_type`, s0.`transaction_datetime`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis_hold_snapshots` AS s0 WHERE (s0.`settlement_mis_id` = ?) [328] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:378 [2026-09-02 13:21:29.827] [DEBUG] Replied in 50ms [2026-09-02 13:21:35.485] [INFO ] Received status update for terminal 98251226730001 [2026-09-02 13:21:35.485] [INFO ] Incoming JSON payload: {"oid":"8a5f7434-20e0-4f90-ba29-7c6152416dc6","sn":"98251226730001","uploadTime":"2026-09-02T13:21:34Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-09-02T13:21:34Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-09-02T13:21:34Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-09-02T13:21:34Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-09-02T13:21:34Z"},{"itemkey":"ram_free_mb","value":"818","timestamp":"2026-09-02T13:21:34Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-09-02T13:21:34Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-09-02T13:21:34Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-09-02T13:21:34Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-09-02T13:21:34Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-09-02T13:21:34Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-09-02T13:21:34Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-09-02T13:21:34Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-09-02T13:21:34Z"},{"itemkey":"data_usage_mb","value":"43","timestamp":"2026-09-02T13:21:34Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-09-02T13:21:34Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-09-02 13:21:35.486] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "8a5f7434-20e0-4f90-ba29-7c6152416dc6", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-09-02T13:21:34Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-09-02T13:21:34Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-09-02T13:21:34Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-09-02T13:21:34Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-09-02T13:21:34Z", "value" => "818"}, %{"itemkey" => "network_type", "timestamp" => "2026-09-02T13:21:34Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-09-02T13:21:34Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-09-02T13:21:34Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-09-02T13:21:34Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-09-02T13:21:34Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-09-02T13:21:34Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-09-02T13:21:34Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-09-02T13:21:34Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-09-02T13:21:34Z", "value" => "43"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-09-02T13:21:34Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-09-02T13:21:34Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-09-02T13:21:34Z", "vendor" => "morefun"} [2026-09-02 13:21:35.487] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-09-02 13:21:35.487] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-09-02 13:21:35.487] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-09-02 13:21:35.528] [DEBUG] QUERY OK source="parameter_templates" db=41.0ms queue=0.1ms idle=1223.3ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-09-02 13:21:35.532] [DEBUG] QUERY OK source="parameter_templates" db=0.7ms queue=2.1ms idle=259.6ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-09-02 13:21:35.532] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-09-02 13:21:35.544] [DEBUG] QUERY OK source="tms_terminals" db=11.8ms idle=4.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:140 [2026-09-02 13:21:35.544] [INFO ] Terminal updated: 98251226730001 [2026-09-02 13:21:35.578] [DEBUG] QUERY OK source="tms_terminals" db=32.9ms idle=12.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-09-02 13:21:35], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:164 [2026-09-02 13:21:35.581] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-09-02 13:21:35.584] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms idle=38.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:1184 [2026-09-02 13:21:35.627] [DEBUG] QUERY OK source="tms_terminals" db=42.6ms idle=7.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 13:21:35], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:174 [2026-09-02 13:21:35.630] [DEBUG] QUERY OK source="app_upgrade_device_statuses" db=2.0ms queue=0.8ms idle=43.5ms SELECT a0.`id`, a0.`config_id`, a0.`device_id`, a0.`device_sn`, a0.`vendor`, a0.`model`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`update_result`, a0.`status`, a0.`remark`, a0.`finish_time`, a0.`pushed_time`, a0.`retry_count`, a0.`inserted_at`, a0.`updated_at` FROM `app_upgrade_device_statuses` AS a0 WHERE ((a0.`device_sn` = ?) AND a0.`status` IN ('pending','pushed')) ["98251226730001"] ↳ TmsCore.TerminalManagement.AppUpgradeService.maybe_repush_for_device/1, at: lib/tms_core/terminal_management/app_upgrade_service.ex:148 [2026-09-02 13:21:35.721] [DEBUG] QUERY OK db=88.8ms idle=10.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "8a5f7434-20e0-4f90-ba29-7c6152416dc6", "2026-09-02T13:21:34Z", ~N[2026-09-02 13:21:35], ~N[2026-09-02 13:21:35]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:179 [2026-09-02 13:21:35.722] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 106540, oid: "8a5f7434-20e0-4f90-ba29-7c6152416dc6", upload_time: "2026-09-02T13:21:34Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:21:35], updated_at: ~N[2026-09-02 13:21:35]} [2026-09-02 13:21:35.722] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-09-02T13:21:34Z", "value" => "morefun"} [2026-09-02 13:21:35.929] [DEBUG] QUERY OK db=206.9ms queue=0.1ms idle=91.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:21:34Z", "morefun", "vendor", 106540, ~N[2026-09-02 13:21:35], ~N[2026-09-02 13:21:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:21:35.930] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1092929, itemkey: "vendor", value: "morefun", timestamp: "2026-09-02T13:21:34Z", message: nil, status_log_id: 106540, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:21:35], updated_at: ~N[2026-09-02 13:21:35]}} [2026-09-02 13:21:35.930] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-09-02T13:21:34Z", "value" => "kiosk_launcher"} [2026-09-02 13:21:36.013] [DEBUG] QUERY OK db=81.8ms idle=213.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:21:34Z", "kiosk_launcher", "model", 106540, ~N[2026-09-02 13:21:35], ~N[2026-09-02 13:21:35]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:21:36.014] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1092932, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-09-02T13:21:34Z", message: nil, status_log_id: 106540, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:21:35], updated_at: ~N[2026-09-02 13:21:35]}} [2026-09-02 13:21:36.014] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-09-02T13:21:34Z", "value" => "1.0"} [2026-09-02 13:21:36.094] [DEBUG] QUERY OK db=79.6ms idle=85.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:21:34Z", "1.0", "app_version", 106540, ~N[2026-09-02 13:21:36], ~N[2026-09-02 13:21:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:21:36.094] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1092938, itemkey: "app_version", value: "1.0", timestamp: "2026-09-02T13:21:34Z", message: nil, status_log_id: 106540, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:21:36], updated_at: ~N[2026-09-02 13:21:36]}} [2026-09-02 13:21:36.095] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-09-02T13:21:34Z", "value" => "13"} [2026-09-02 13:21:36.164] [DEBUG] QUERY OK db=68.9ms idle=82.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:21:34Z", "13", "android_version", 106540, ~N[2026-09-02 13:21:36], ~N[2026-09-02 13:21:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:21:36.164] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1092941, itemkey: "android_version", value: "13", timestamp: "2026-09-02T13:21:34Z", message: nil, status_log_id: 106540, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:21:36], updated_at: ~N[2026-09-02 13:21:36]}} [2026-09-02 13:21:36.164] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-09-02T13:21:34Z", "value" => "818"} [2026-09-02 13:21:36.225] [DEBUG] QUERY OK db=60.0ms idle=70.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:21:34Z", "818", "ram_free_mb", 106540, ~N[2026-09-02 13:21:36], ~N[2026-09-02 13:21:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:21:36.225] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1092944, itemkey: "ram_free_mb", value: "818", timestamp: "2026-09-02T13:21:34Z", message: nil, status_log_id: 106540, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:21:36], updated_at: ~N[2026-09-02 13:21:36]}} [2026-09-02 13:21:36.225] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-09-02T13:21:34Z", "value" => "WIFI"} [2026-09-02 13:21:36.301] [DEBUG] QUERY OK db=75.4ms idle=61.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:21:34Z", "WIFI", "network_type", 106540, ~N[2026-09-02 13:21:36], ~N[2026-09-02 13:21:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:21:36.302] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1092948, itemkey: "network_type", value: "WIFI", timestamp: "2026-09-02T13:21:34Z", message: nil, status_log_id: 106540, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:21:36], updated_at: ~N[2026-09-02 13:21:36]}} [2026-09-02 13:21:36.303] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-09-02T13:21:34Z", "value" => "true"} [2026-09-02 13:21:36.356] [DEBUG] QUERY OK db=52.9ms queue=0.7ms idle=29.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:21:34Z", "true", "kiosk_active", 106540, ~N[2026-09-02 13:21:36], ~N[2026-09-02 13:21:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:21:36.362] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1092953, itemkey: "kiosk_active", value: "true", timestamp: "2026-09-02T13:21:34Z", message: nil, status_log_id: 106540, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:21:36], updated_at: ~N[2026-09-02 13:21:36]}} [2026-09-02 13:21:36.362] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-09-02T13:21:34Z", "value" => ""} [2026-09-02 13:21:36.471] [DEBUG] QUERY OK db=105.5ms idle=63.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-09-02T13:21:34Z", "sim_operator", 106540, ~N[2026-09-02 13:21:36], ~N[2026-09-02 13:21:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:21:36.474] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1092957, itemkey: "sim_operator", value: nil, timestamp: "2026-09-02T13:21:34Z", message: nil, status_log_id: 106540, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:21:36], updated_at: ~N[2026-09-02 13:21:36]}} [2026-09-02 13:21:36.474] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-09-02T13:21:34Z", "value" => "UNKNOWN"} [2026-09-02 13:21:36.558] [DEBUG] QUERY OK db=79.7ms idle=121.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:21:34Z", "UNKNOWN", "sim_number", 106540, ~N[2026-09-02 13:21:36], ~N[2026-09-02 13:21:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:21:36.560] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1092962, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-09-02T13:21:34Z", message: nil, status_log_id: 106540, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:21:36], updated_at: ~N[2026-09-02 13:21:36]}} [2026-09-02 13:21:36.560] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-09-02T13:21:34Z", "value" => "UNKNOWN"} [2026-09-02 13:21:36.631] [DEBUG] QUERY OK db=67.5ms queue=0.3ms idle=93.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:21:34Z", "UNKNOWN", "sim_iccid", 106540, ~N[2026-09-02 13:21:36], ~N[2026-09-02 13:21:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:21:36.632] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1092965, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-09-02T13:21:34Z", message: nil, status_log_id: 106540, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:21:36], updated_at: ~N[2026-09-02 13:21:36]}} [2026-09-02 13:21:36.633] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-09-02T13:21:34Z", "value" => "UNKNOWN"} [2026-09-02 13:21:36.739] [DEBUG] QUERY OK db=97.3ms queue=7.2ms idle=76.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:21:34Z", "UNKNOWN", "sim_imsi", 106540, ~N[2026-09-02 13:21:36], ~N[2026-09-02 13:21:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:21:36.739] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1092970, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-09-02T13:21:34Z", message: nil, status_log_id: 106540, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:21:36], updated_at: ~N[2026-09-02 13:21:36]}} [2026-09-02 13:21:36.739] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-09-02T13:21:34Z", "value" => "UNKNOWN"} [2026-09-02 13:21:36.827] [DEBUG] QUERY OK db=87.6ms idle=108.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:21:34Z", "UNKNOWN", "sim_iccid2", 106540, ~N[2026-09-02 13:21:36], ~N[2026-09-02 13:21:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:21:36.828] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1092974, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-09-02T13:21:34Z", message: nil, status_log_id: 106540, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:21:36], updated_at: ~N[2026-09-02 13:21:36]}} [2026-09-02 13:21:36.828] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-09-02T13:21:34Z", "value" => "UNKNOWN"} [2026-09-02 13:21:37.043] [DEBUG] QUERY OK db=215.0ms queue=0.1ms idle=89.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:21:34Z", "UNKNOWN", "sim_imsi2", 106540, ~N[2026-09-02 13:21:36], ~N[2026-09-02 13:21:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:21:37.043] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1092978, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-09-02T13:21:34Z", message: nil, status_log_id: 106540, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:21:36], updated_at: ~N[2026-09-02 13:21:36]}} [2026-09-02 13:21:37.044] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-09-02T13:21:34Z", "value" => "43"} [2026-09-02 13:21:37.115] [DEBUG] QUERY OK db=63.3ms queue=0.3ms idle=224.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:21:34Z", "43", "data_usage_mb", 106540, ~N[2026-09-02 13:21:37], ~N[2026-09-02 13:21:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:21:37.116] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1092981, itemkey: "data_usage_mb", value: "43", timestamp: "2026-09-02T13:21:34Z", message: nil, status_log_id: 106540, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:21:37], updated_at: ~N[2026-09-02 13:21:37]}} [2026-09-02 13:21:37.116] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-09-02T13:21:34Z", "value" => "0"} [2026-09-02 13:21:37.221] [DEBUG] QUERY OK db=104.5ms idle=73.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:21:34Z", "0", "mobile_data_mb", 106540, ~N[2026-09-02 13:21:37], ~N[2026-09-02 13:21:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:21:37.221] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1092985, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-09-02T13:21:34Z", message: nil, status_log_id: 106540, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:21:37], updated_at: ~N[2026-09-02 13:21:37]}} [2026-09-02 13:21:37.223] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-09-02T13:21:34Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-09-02 13:21:37.314] [DEBUG] QUERY OK db=87.3ms queue=0.1ms idle=108.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:21:34Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 106540, ~N[2026-09-02 13:21:37], ~N[2026-09-02 13:21:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:21:37.314] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1092988, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-09-02T13:21:34Z", message: nil, status_log_id: 106540, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:21:37], updated_at: ~N[2026-09-02 13:21:37]}} [2026-09-02 13:21:47.594] [DEBUG] HANDLE EVENT "close_detail" in PlatformWeb.SettlementLive.MisApproval Parameters: %{"value" => ""} [2026-09-02 13:21:47.594] [DEBUG] Replied in 200µs [2026-09-02 13:21:50.365] [DEBUG] HANDLE EVENT "mis_row_clicked" in PlatformWeb.SettlementLive.MisApproval Parameters: %{"id" => 326} [2026-09-02 13:21:50.366] [DEBUG] QUERY OK source="settlement_mis" db=0.9ms idle=646.1ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 WHERE (s0.`id` = ?) [326] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:292 [2026-09-02 13:21:50.368] [DEBUG] QUERY OK source="settlement_mis_items" db=0.6ms queue=0.4ms idle=34.2ms SELECT s0.`merchant_mid`, s0.`merchant_id`, MAX(s0.`merchant_name`), sum(s0.`transaction_count`), sum(s0.`total_gross_amount`), sum(s0.`total_mdr_amount`), sum(s0.`total_vat_amount`), sum(s0.`total_interchange_fee`), sum(s0.`net_payable`), GROUP_CONCAT(DISTINCT s0.`scheme_name` SEPARATOR ', '), GROUP_CONCAT(DISTINCT s0.`card_type_code` SEPARATOR ', ') FROM `settlement_mis_items` AS s0 WHERE (s0.`settlement_mis_id` = ?) GROUP BY s0.`merchant_mid`, s0.`merchant_id` [326] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:293 [2026-09-02 13:21:50.369] [DEBUG] QUERY OK source="merchant_adjustments" db=0.6ms idle=2.5ms SELECT m0.`id`, m0.`merchant_mid`, m0.`merchant_name`, m0.`adjustment_date`, m0.`debit_credit`, m0.`amount`, m0.`currency`, m0.`adjustment_type`, m0.`description`, m0.`settlement_mis_id`, m0.`status`, m0.`applied_at`, m0.`cancelled_at`, m0.`cancel_reason`, m0.`approval_status`, m0.`level1_reviewed_by`, m0.`level1_reviewed_at`, m0.`level2_approved_by`, m0.`level2_approved_at`, m0.`rejected_by`, m0.`rejected_at`, m0.`rejection_reason`, m0.`created_by`, m0.`updated_by`, m0.`inserted_at`, m0.`updated_at` FROM `merchant_adjustments` AS m0 WHERE (m0.`settlement_mis_id` = ?) [326] ↳ SettlementCore.Context.list_adjustments_by_settlement_mis/1, at: lib/settlement_core/context.ex:1013 [2026-09-02 13:21:50.371] [DEBUG] QUERY OK source="settlement_mis_hold_snapshots" db=0.7ms idle=2.2ms SELECT DISTINCT s0.`merchant_mid`, s0.`merchant_name` FROM `settlement_mis_hold_snapshots` AS s0 WHERE (s0.`settlement_mis_id` = ?) AND (NOT (s0.`merchant_mid` IN (SELECT DISTINCT ss0.`merchant_mid` FROM `settlement_mis_items` AS ss0 WHERE (ss0.`settlement_mis_id` = ?)))) [326, 326] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:329 [2026-09-02 13:21:50.373] [DEBUG] QUERY OK source="settlement_mis_hold_snapshots" db=0.7ms idle=2.7ms SELECT s0.`id`, s0.`settlement_mis_id`, s0.`core_transaction_id`, s0.`merchant_mid`, s0.`merchant_name`, s0.`rrn`, s0.`tid`, s0.`scheme_name`, s0.`card_type_code`, s0.`gross_amount`, s0.`hold_type`, s0.`transaction_datetime`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis_hold_snapshots` AS s0 WHERE (s0.`settlement_mis_id` = ?) [326] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:378 [2026-09-02 13:21:50.373] [DEBUG] Replied in 8ms [2026-09-02 13:22:05.631] [INFO ] Received status update for terminal 98251226730001 [2026-09-02 13:22:05.635] [INFO ] Incoming JSON payload: {"oid":"bc0fdca3-e161-4a26-acf8-1f9ce03abc05","sn":"98251226730001","uploadTime":"2026-09-02T13:22:04Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-09-02T13:22:04Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-09-02T13:22:04Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-09-02T13:22:04Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-09-02T13:22:04Z"},{"itemkey":"ram_free_mb","value":"814","timestamp":"2026-09-02T13:22:04Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-09-02T13:22:04Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-09-02T13:22:04Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-09-02T13:22:04Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-09-02T13:22:04Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-09-02T13:22:04Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-09-02T13:22:04Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-09-02T13:22:04Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-09-02T13:22:04Z"},{"itemkey":"data_usage_mb","value":"43","timestamp":"2026-09-02T13:22:04Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-09-02T13:22:04Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-09-02 13:22:05.637] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "bc0fdca3-e161-4a26-acf8-1f9ce03abc05", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-09-02T13:22:04Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-09-02T13:22:04Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-09-02T13:22:04Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-09-02T13:22:04Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-09-02T13:22:04Z", "value" => "814"}, %{"itemkey" => "network_type", "timestamp" => "2026-09-02T13:22:04Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-09-02T13:22:04Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-09-02T13:22:04Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-09-02T13:22:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-09-02T13:22:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-09-02T13:22:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-09-02T13:22:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-09-02T13:22:04Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-09-02T13:22:04Z", "value" => "43"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-09-02T13:22:04Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-09-02T13:22:04Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-09-02T13:22:04Z", "vendor" => "morefun"} [2026-09-02 13:22:05.637] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-09-02 13:22:05.643] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-09-02 13:22:05.643] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-09-02 13:22:05.688] [DEBUG] QUERY OK source="parameter_templates" db=13.5ms idle=920.3ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-09-02 13:22:05.710] [DEBUG] QUERY OK source="parameter_templates" db=21.9ms queue=0.1ms idle=218.4ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-09-02 13:22:05.710] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-09-02 13:22:05.745] [DEBUG] QUERY OK source="tms_terminals" db=33.9ms idle=53.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:140 [2026-09-02 13:22:05.745] [INFO ] Terminal updated: 98251226730001 [2026-09-02 13:22:06.000] [DEBUG] QUERY OK source="tms_terminals" db=98.6ms idle=182.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-09-02 13:22:05], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:164 [2026-09-02 13:22:06.007] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-09-02 13:22:06.031] [DEBUG] QUERY OK source="tms_terminals" db=14.0ms idle=262.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:1184 [2026-09-02 13:22:06.143] [DEBUG] QUERY OK source="tms_terminals" db=109.5ms queue=0.1ms idle=41.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 13:22:06], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:174 [2026-09-02 13:22:06.146] [DEBUG] QUERY OK source="app_upgrade_device_statuses" db=2.8ms idle=122.1ms SELECT a0.`id`, a0.`config_id`, a0.`device_id`, a0.`device_sn`, a0.`vendor`, a0.`model`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`update_result`, a0.`status`, a0.`remark`, a0.`finish_time`, a0.`pushed_time`, a0.`retry_count`, a0.`inserted_at`, a0.`updated_at` FROM `app_upgrade_device_statuses` AS a0 WHERE ((a0.`device_sn` = ?) AND a0.`status` IN ('pending','pushed')) ["98251226730001"] ↳ TmsCore.TerminalManagement.AppUpgradeService.maybe_repush_for_device/1, at: lib/tms_core/terminal_management/app_upgrade_service.ex:148 [2026-09-02 13:22:06.223] [DEBUG] QUERY OK db=76.1ms queue=0.1ms idle=3.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "bc0fdca3-e161-4a26-acf8-1f9ce03abc05", "2026-09-02T13:22:04Z", ~N[2026-09-02 13:22:06], ~N[2026-09-02 13:22:06]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:179 [2026-09-02 13:22:06.223] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 106544, oid: "bc0fdca3-e161-4a26-acf8-1f9ce03abc05", upload_time: "2026-09-02T13:22:04Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:22:06], updated_at: ~N[2026-09-02 13:22:06]} [2026-09-02 13:22:06.223] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-09-02T13:22:04Z", "value" => "morefun"} [2026-09-02 13:22:06.292] [DEBUG] QUERY OK db=68.2ms idle=77.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:22:04Z", "morefun", "vendor", 106544, ~N[2026-09-02 13:22:06], ~N[2026-09-02 13:22:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:22:06.292] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1092999, itemkey: "vendor", value: "morefun", timestamp: "2026-09-02T13:22:04Z", message: nil, status_log_id: 106544, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:22:06], updated_at: ~N[2026-09-02 13:22:06]}} [2026-09-02 13:22:06.292] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-09-02T13:22:04Z", "value" => "kiosk_launcher"} [2026-09-02 13:22:06.372] [DEBUG] QUERY OK db=79.4ms idle=69.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:22:04Z", "kiosk_launcher", "model", 106544, ~N[2026-09-02 13:22:06], ~N[2026-09-02 13:22:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:22:06.373] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093003, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-09-02T13:22:04Z", message: nil, status_log_id: 106544, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:22:06], updated_at: ~N[2026-09-02 13:22:06]}} [2026-09-02 13:22:06.373] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-09-02T13:22:04Z", "value" => "1.0"} [2026-09-02 13:22:06.472] [DEBUG] QUERY OK db=99.1ms idle=81.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:22:04Z", "1.0", "app_version", 106544, ~N[2026-09-02 13:22:06], ~N[2026-09-02 13:22:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:22:06.476] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093007, itemkey: "app_version", value: "1.0", timestamp: "2026-09-02T13:22:04Z", message: nil, status_log_id: 106544, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:22:06], updated_at: ~N[2026-09-02 13:22:06]}} [2026-09-02 13:22:06.476] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-09-02T13:22:04Z", "value" => "13"} [2026-09-02 13:22:06.583] [DEBUG] QUERY OK db=102.6ms queue=0.1ms idle=8.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:22:04Z", "13", "android_version", 106544, ~N[2026-09-02 13:22:06], ~N[2026-09-02 13:22:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:22:06.584] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093012, itemkey: "android_version", value: "13", timestamp: "2026-09-02T13:22:04Z", message: nil, status_log_id: 106544, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:22:06], updated_at: ~N[2026-09-02 13:22:06]}} [2026-09-02 13:22:06.584] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-09-02T13:22:04Z", "value" => "814"} [2026-09-02 13:22:06.634] [DEBUG] QUERY OK db=44.8ms idle=85.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:22:04Z", "814", "ram_free_mb", 106544, ~N[2026-09-02 13:22:06], ~N[2026-09-02 13:22:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:22:06.636] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093016, itemkey: "ram_free_mb", value: "814", timestamp: "2026-09-02T13:22:04Z", message: nil, status_log_id: 106544, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:22:06], updated_at: ~N[2026-09-02 13:22:06]}} [2026-09-02 13:22:06.636] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-09-02T13:22:04Z", "value" => "WIFI"} [2026-09-02 13:22:06.736] [DEBUG] QUERY OK db=98.1ms queue=0.3ms idle=54.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:22:04Z", "WIFI", "network_type", 106544, ~N[2026-09-02 13:22:06], ~N[2026-09-02 13:22:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:22:06.736] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093020, itemkey: "network_type", value: "WIFI", timestamp: "2026-09-02T13:22:04Z", message: nil, status_log_id: 106544, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:22:06], updated_at: ~N[2026-09-02 13:22:06]}} [2026-09-02 13:22:06.736] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-09-02T13:22:04Z", "value" => "true"} [2026-09-02 13:22:06.839] [DEBUG] QUERY OK db=102.0ms idle=102.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:22:04Z", "true", "kiosk_active", 106544, ~N[2026-09-02 13:22:06], ~N[2026-09-02 13:22:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:22:06.845] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093024, itemkey: "kiosk_active", value: "true", timestamp: "2026-09-02T13:22:04Z", message: nil, status_log_id: 106544, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:22:06], updated_at: ~N[2026-09-02 13:22:06]}} [2026-09-02 13:22:06.845] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-09-02T13:22:04Z", "value" => ""} [2026-09-02 13:22:06.899] [DEBUG] QUERY OK db=50.9ms queue=3.4ms idle=109.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-09-02T13:22:04Z", "sim_operator", 106544, ~N[2026-09-02 13:22:06], ~N[2026-09-02 13:22:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:22:06.900] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093027, itemkey: "sim_operator", value: nil, timestamp: "2026-09-02T13:22:04Z", message: nil, status_log_id: 106544, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:22:06], updated_at: ~N[2026-09-02 13:22:06]}} [2026-09-02 13:22:06.900] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-09-02T13:22:04Z", "value" => "UNKNOWN"} [2026-09-02 13:22:06.995] [DEBUG] QUERY OK db=90.0ms idle=65.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:22:04Z", "UNKNOWN", "sim_number", 106544, ~N[2026-09-02 13:22:06], ~N[2026-09-02 13:22:06]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:22:07.002] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093030, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-09-02T13:22:04Z", message: nil, status_log_id: 106544, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:22:06], updated_at: ~N[2026-09-02 13:22:06]}} [2026-09-02 13:22:07.002] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-09-02T13:22:04Z", "value" => "UNKNOWN"} [2026-09-02 13:22:07.127] [DEBUG] QUERY OK db=121.1ms queue=0.1ms idle=106.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:22:04Z", "UNKNOWN", "sim_iccid", 106544, ~N[2026-09-02 13:22:07], ~N[2026-09-02 13:22:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:22:07.130] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093035, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-09-02T13:22:04Z", message: nil, status_log_id: 106544, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:22:07], updated_at: ~N[2026-09-02 13:22:07]}} [2026-09-02 13:22:07.130] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-09-02T13:22:04Z", "value" => "UNKNOWN"} [2026-09-02 13:22:07.191] [DEBUG] QUERY OK db=61.2ms idle=135.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:22:04Z", "UNKNOWN", "sim_imsi", 106544, ~N[2026-09-02 13:22:07], ~N[2026-09-02 13:22:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:22:07.192] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093039, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-09-02T13:22:04Z", message: nil, status_log_id: 106544, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:22:07], updated_at: ~N[2026-09-02 13:22:07]}} [2026-09-02 13:22:07.192] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-09-02T13:22:04Z", "value" => "UNKNOWN"} [2026-09-02 13:22:07.281] [DEBUG] QUERY OK db=88.4ms idle=65.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:22:04Z", "UNKNOWN", "sim_iccid2", 106544, ~N[2026-09-02 13:22:07], ~N[2026-09-02 13:22:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:22:07.282] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093041, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-09-02T13:22:04Z", message: nil, status_log_id: 106544, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:22:07], updated_at: ~N[2026-09-02 13:22:07]}} [2026-09-02 13:22:07.288] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-09-02T13:22:04Z", "value" => "UNKNOWN"} [2026-09-02 13:22:07.349] [DEBUG] QUERY OK db=60.5ms idle=96.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:22:04Z", "UNKNOWN", "sim_imsi2", 106544, ~N[2026-09-02 13:22:07], ~N[2026-09-02 13:22:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:22:07.349] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093047, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-09-02T13:22:04Z", message: nil, status_log_id: 106544, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:22:07], updated_at: ~N[2026-09-02 13:22:07]}} [2026-09-02 13:22:07.349] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-09-02T13:22:04Z", "value" => "43"} [2026-09-02 13:22:07.424] [DEBUG] QUERY OK db=74.1ms idle=68.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:22:04Z", "43", "data_usage_mb", 106544, ~N[2026-09-02 13:22:07], ~N[2026-09-02 13:22:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:22:07.426] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093048, itemkey: "data_usage_mb", value: "43", timestamp: "2026-09-02T13:22:04Z", message: nil, status_log_id: 106544, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:22:07], updated_at: ~N[2026-09-02 13:22:07]}} [2026-09-02 13:22:07.427] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-09-02T13:22:04Z", "value" => "0"} [2026-09-02 13:22:07.490] [DEBUG] QUERY OK db=62.4ms idle=78.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:22:04Z", "0", "mobile_data_mb", 106544, ~N[2026-09-02 13:22:07], ~N[2026-09-02 13:22:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:22:07.490] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093051, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-09-02T13:22:04Z", message: nil, status_log_id: 106544, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:22:07], updated_at: ~N[2026-09-02 13:22:07]}} [2026-09-02 13:22:07.496] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-09-02T13:22:04Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-09-02 13:22:07.563] [DEBUG] QUERY OK db=62.8ms idle=74.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:22:04Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 106544, ~N[2026-09-02 13:22:07], ~N[2026-09-02 13:22:07]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:22:07.566] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093053, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-09-02T13:22:04Z", message: nil, status_log_id: 106544, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:22:07], updated_at: ~N[2026-09-02 13:22:07]}} [2026-09-02 13:22:25.571] [INFO ] Received status update for terminal 28260702280001 [2026-09-02 13:22:25.571] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-09-02T21:22:07Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-09-02T21:22:07Z","value":"100"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-09-02T21:22:07Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-09-02T21:22:07Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-09-02T21:22:07Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-09-02T21:22:07Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-09-02T21:22:07Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-09-02T21:22:07Z","value":"3.8.7.1-SNAPSHOT-SR800"}],"model":"SR800 A20","oid":"organization_id","sn":"28260702280001","uploadTime":"2026-09-02T21:22:07Z","vendor":"MoreFun"} [2026-09-02 13:22:25.571] [INFO ] Decoded JSON: %{"model" => "SR800 A20", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-09-02T21:22:07Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-09-02T21:22:07Z", "value" => "100"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-09-02T21:22:07Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-09-02T21:22:07Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-09-02T21:22:07Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-09-02T21:22:07Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-09-02T21:22:07Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-09-02T21:22:07Z", "value" => "3.8.7.1-SNAPSHOT-SR800"}], "sn" => "28260702280001", "uploadTime" => "2026-09-02T21:22:07Z", "vendor" => "MoreFun"} [2026-09-02 13:22:25.571] [INFO ] Extracted versions for 28260702280001: %{application: "3.8.7.1-SNAPSHOT-SR800", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-09-02 13:22:25.571] [INFO ] Detected missing versions for 28260702280001, triggering auto-push [2026-09-02 13:22:25.572] [INFO ] AutoPushService: Triggering auto-push for 28260702280001 (MoreFun SR800 A20) - missing version [2026-09-02 13:22:25.579] [DEBUG] QUERY OK source="parameter_templates" db=7.4ms idle=961.7ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["MoreFun", "SR800 A20"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-09-02 13:22:25.592] [DEBUG] QUERY OK source="tms_terminals" db=12.2ms idle=813.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["28260702280001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-09-02 13:22:25.611] [DEBUG] QUERY OK source="parameter_template_values" db=1.2ms queue=1.9ms idle=28.9ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [15] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-09-02 13:22:25.616] [DEBUG] QUERY OK source="parameter_definitions" db=1.4ms queue=2.2ms idle=0.6ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-09-02 13:22:25.713] [DEBUG] QUERY OK db=89.5ms queue=1.5ms idle=7.8ms INSERT INTO `parameter_push_logs` (`status`,`request_id`,`terminal_id`,`template_id`,`push_type`,`config_type`,`device_vendor`,`device_model`,`parameters_sent`,`log_time`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", 44516, 64, 15, "full", "parameter", "MoreFun", "SR800 A20", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", "PINPAD_MASTER_KEY_INDEX" => "0", "COMM_PORT" => "80", ...}, ~U[2026-09-02 13:22:25Z], "missing_version", "1.0.0", ~N[2026-09-02 13:22:25], ~N[2026-09-02 13:22:25]] ↳ TmsCore.TerminalManagement.AutoPushService.push_generic_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:235 [2026-09-02 13:22:25.714] [INFO ] AutoPushService: Created push log 61147 for parameters (template: 15) [2026-09-02 13:22:25.719] [INFO ] SR600 MQTT Command: %{"command" => "file_download", "merchant_config" => "true", "request_id" => 44516, "retry_count" => "3", "version" => "1.0.0"} [2026-09-02 13:22:25.720] [INFO ] AutoPushService: Sending parameter push to 28260702280001 on topic: /ota/pFppbioOCKlo5c8E/28260702280001/update [2026-09-02 13:22:25.736] [INFO ] AutoPushService: Parameter push sent successfully to 28260702280001 [2026-09-02 13:22:25.822] [DEBUG] QUERY OK db=85.0ms queue=0.8ms idle=120.6ms INSERT INTO `parameter_push_logs` (`status`,`request_id`,`terminal_id`,`push_type`,`config_type`,`device_vendor`,`device_model`,`log_time`,`trigger_reason`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?) ["pending", 23939, 64, "full", "emv_config", "MoreFun", "SR800 A20", ~U[2026-09-02 13:22:25Z], "missing_version", ~N[2026-09-02 13:22:25], ~N[2026-09-02 13:22:25]] ↳ TmsCore.TerminalManagement.AutoPushService.push_regular_config/5, at: lib/tms_core/terminal_management/auto_push_service.ex:427 [2026-09-02 13:22:25.823] [INFO ] AutoPushService: Created push log for emv_config [2026-09-02 13:22:25.824] [INFO ] SR600 MQTT Command: %{"command" => "file_download", "merchant_config" => "true", "request_id" => 23939, "retry_count" => "3"} [2026-09-02 13:22:25.824] [INFO ] AutoPushService: Sending emv_config push to 28260702280001 on topic: /ota/pFppbioOCKlo5c8E/28260702280001/update [2026-09-02 13:22:25.825] [INFO ] AutoPushService: emv_config push sent successfully to 28260702280001 [2026-09-02 13:22:25.827] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms queue=1.2ms idle=111.7ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "SR800 A20"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-09-02 13:22:25.841] [INFO ] KeysConfigService: Generating keys.json for 28260702280001 (SR800 A20) [2026-09-02 13:22:25.843] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms idle=19.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["28260702280001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-09-02 13:22:25.844] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 28260702280001 with params: %{"kekKcv" => "112233", "model" => "SR800 A20", "serialNumber" => "28260702280001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-09-02 13:22:25.950] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-09-02 13:22:25.951] [ERROR] KeysConfigService: Failed to generate keys for 28260702280001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 13:22:25.952] [ERROR] AutoPushService: Failed to generate keys.json for 28260702280001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 13:22:26.050] [DEBUG] QUERY OK db=92.7ms queue=4.8ms idle=125.6ms INSERT INTO `parameter_push_logs` (`status`,`request_id`,`terminal_id`,`push_type`,`config_type`,`device_vendor`,`device_model`,`log_time`,`trigger_reason`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?) ["pending", 44580, 64, "full", "application", "MoreFun", "SR800 A20", ~U[2026-09-02 13:22:25Z], "missing_version", ~N[2026-09-02 13:22:25], ~N[2026-09-02 13:22:25]] ↳ TmsCore.TerminalManagement.AutoPushService.push_regular_config/5, at: lib/tms_core/terminal_management/auto_push_service.ex:427 [2026-09-02 13:22:26.054] [INFO ] AutoPushService: Created push log for application [2026-09-02 13:22:26.054] [INFO ] SR600 MQTT Command: %{"command" => "file_download", "merchant_config" => "true", "request_id" => 44580, "retry_count" => "3"} [2026-09-02 13:22:26.056] [INFO ] AutoPushService: Sending application push to 28260702280001 on topic: /ota/pFppbioOCKlo5c8E/28260702280001/update [2026-09-02 13:22:26.056] [INFO ] AutoPushService: application push sent successfully to 28260702280001 [2026-09-02 13:22:26.056] [INFO ] AutoPushService: Auto-push completed for 28260702280001 [2026-09-02 13:22:26.057] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=213.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["28260702280001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:140 [2026-09-02 13:22:26.058] [INFO ] Terminal updated: 28260702280001 [2026-09-02 13:22:26.061] [DEBUG] QUERY OK source="parameter_templates" db=1.7ms queue=0.6ms idle=8.4ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) ORDER BY p0.`updated_at` DESC LIMIT 1 ["MoreFun", "SR800 A20"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_parameter_version/2, at: lib/tms_core/terminal_management/version_compliance_checker.ex:105 [2026-09-02 13:22:26.067] [DEBUG] QUERY OK source="config_file_versions" db=3.3ms idle=6.4ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "SR800 A20"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-09-02 13:22:26.068] [DEBUG] QUERY OK source="config_file_versions" db=0.6ms idle=6.9ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "SR800 A20"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-09-02 13:22:26.068] [INFO ] VersionComplianceChecker: 28260702280001 — outdated configs: [{:application, "3.8.7.1-SNAPSHOT-SR800", "3.8.5"}] [2026-09-02 13:22:26.090] [DEBUG] QUERY OK source="parameter_push_logs" db=20.6ms queue=0.4ms idle=1.5ms SELECT TRUE FROM `parameter_push_logs` AS p0 WHERE ((((p0.`terminal_id` = ?) AND (p0.`config_type` = ?)) AND (p0.`inserted_at` >= ?)) AND p0.`status` IN ('pending','sent')) LIMIT 1 [64, "application", ~N[2026-09-02 12:52:26]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-09-02 13:22:26.091] [INFO ] VersionComplianceChecker: Skipping application re-push for 28260702280001 (push already in-flight or within cooldown) [2026-09-02 13:22:26.092] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms idle=22.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["28260702280001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:1184 [2026-09-02 13:22:26.107] [DEBUG] QUERY OK source="tms_terminals" db=11.8ms queue=0.8ms idle=4.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 13:22:26], 64] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:174 [2026-09-02 13:22:26.111] [DEBUG] QUERY OK source="app_upgrade_device_statuses" db=2.3ms queue=0.7ms idle=15.1ms SELECT a0.`id`, a0.`config_id`, a0.`device_id`, a0.`device_sn`, a0.`vendor`, a0.`model`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`update_result`, a0.`status`, a0.`remark`, a0.`finish_time`, a0.`pushed_time`, a0.`retry_count`, a0.`inserted_at`, a0.`updated_at` FROM `app_upgrade_device_statuses` AS a0 WHERE ((a0.`device_sn` = ?) AND a0.`status` IN ('pending','pushed')) ["28260702280001"] ↳ TmsCore.TerminalManagement.AppUpgradeService.maybe_repush_for_device/1, at: lib/tms_core/terminal_management/app_upgrade_service.ex:148 [2026-09-02 13:22:26.197] [DEBUG] QUERY OK db=83.9ms queue=1.4ms idle=4.4ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [64, "organization_id", "2026-09-02T21:22:07Z", ~N[2026-09-02 13:22:26], ~N[2026-09-02 13:22:26]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:179 [2026-09-02 13:22:26.197] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 106548, oid: "organization_id", upload_time: "2026-09-02T21:22:07Z", terminal_id: 64, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:22:26], updated_at: ~N[2026-09-02 13:22:26]} [2026-09-02 13:22:26.197] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-09-02T21:22:07Z", "value" => "online"} [2026-09-02 13:22:26.281] [DEBUG] QUERY OK db=76.4ms queue=3.7ms idle=86.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-09-02T21:22:07Z", "online", "status", 106548, ~N[2026-09-02 13:22:26], ~N[2026-09-02 13:22:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:22:26.282] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093055, itemkey: "status", value: "online", timestamp: "2026-09-02T21:22:07Z", message: "Terminal status update", status_log_id: 106548, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:22:26], updated_at: ~N[2026-09-02 13:22:26]}} [2026-09-02 13:22:26.282] [INFO ] Setting terminal 28260702280001 status to 'online' from status itemkey [2026-09-02 13:22:26.291] [DEBUG] QUERY OK source="tms_terminals" db=1.2ms queue=7.0ms idle=85.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 13:22:26], 64] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:203 [2026-09-02 13:22:26.291] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-09-02T21:22:07Z", "value" => "100"} [2026-09-02 13:22:26.372] [DEBUG] QUERY OK db=80.9ms idle=14.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-09-02T21:22:07Z", "100", "battery", 106548, ~N[2026-09-02 13:22:26], ~N[2026-09-02 13:22:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:22:26.373] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093060, itemkey: "battery", value: "100", timestamp: "2026-09-02T21:22:07Z", message: "Battery level", status_log_id: 106548, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:22:26], updated_at: ~N[2026-09-02 13:22:26]}} [2026-09-02 13:22:26.373] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-09-02T21:22:07Z", "value" => "online"} [2026-09-02 13:22:26.455] [DEBUG] QUERY OK db=75.7ms queue=1.3ms idle=87.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-09-02T21:22:07Z", "online", "network", 106548, ~N[2026-09-02 13:22:26], ~N[2026-09-02 13:22:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:22:26.457] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093066, itemkey: "network", value: "online", timestamp: "2026-09-02T21:22:07Z", message: "Network connectivity", status_log_id: 106548, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:22:26], updated_at: ~N[2026-09-02 13:22:26]}} [2026-09-02 13:22:26.457] [INFO ] Setting terminal 28260702280001 status to 'online' from network itemkey [2026-09-02 13:22:26.460] [DEBUG] QUERY OK source="tms_terminals" db=2.2ms queue=0.1ms idle=84.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 13:22:26], 64] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:203 [2026-09-02 13:22:26.462] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-09-02T21:22:07Z", "value" => "0"} [2026-09-02 13:22:26.524] [DEBUG] QUERY OK db=60.9ms queue=0.1ms idle=9.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-09-02T21:22:07Z", "0", "cpu", 106548, ~N[2026-09-02 13:22:26], ~N[2026-09-02 13:22:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:22:26.525] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093070, itemkey: "cpu", value: "0", timestamp: "2026-09-02T21:22:07Z", message: "CPU usage percentage", status_log_id: 106548, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:22:26], updated_at: ~N[2026-09-02 13:22:26]}} [2026-09-02 13:22:26.530] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-09-02T21:22:07Z", "value" => "1.0.0"} [2026-09-02 13:22:26.645] [DEBUG] QUERY OK db=113.9ms idle=71.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-09-02T21:22:07Z", "1.0.0", "parameter_config", 106548, ~N[2026-09-02 13:22:26], ~N[2026-09-02 13:22:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:22:26.645] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093074, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-09-02T21:22:07Z", message: "Current parameters version", status_log_id: 106548, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:22:26], updated_at: ~N[2026-09-02 13:22:26]}} [2026-09-02 13:22:26.645] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-09-02T21:22:07Z", "value" => "1.0.1"} [2026-09-02 13:22:26.723] [DEBUG] QUERY OK db=68.4ms idle=33.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-09-02T21:22:07Z", "1.0.1", "emv_config", 106548, ~N[2026-09-02 13:22:26], ~N[2026-09-02 13:22:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:22:26.723] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093078, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-09-02T21:22:07Z", message: "Current EMV config version", status_log_id: 106548, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:22:26], updated_at: ~N[2026-09-02 13:22:26]}} [2026-09-02 13:22:26.723] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-09-02T21:22:07Z", "value" => ""} [2026-09-02 13:22:26.838] [DEBUG] QUERY OK db=109.1ms queue=5.2ms idle=78.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-09-02T21:22:07Z", "keys_config", 106548, ~N[2026-09-02 13:22:26], ~N[2026-09-02 13:22:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:22:26.843] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093081, itemkey: "keys_config", value: nil, timestamp: "2026-09-02T21:22:07Z", message: "Current keys config version", status_log_id: 106548, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:22:26], updated_at: ~N[2026-09-02 13:22:26]}} [2026-09-02 13:22:26.843] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-09-02T21:22:07Z", "value" => "3.8.7.1-SNAPSHOT-SR800"} [2026-09-02 13:22:26.929] [DEBUG] QUERY OK db=84.8ms queue=0.1ms idle=121.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-09-02T21:22:07Z", "3.8.7.1-SNAPSHOT-SR800", "application", 106548, ~N[2026-09-02 13:22:26], ~N[2026-09-02 13:22:26]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:22:26.929] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093085, itemkey: "application", value: "3.8.7.1-SNAPSHOT-SR800", timestamp: "2026-09-02T21:22:07Z", message: "Current application version", status_log_id: 106548, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:22:26], updated_at: ~N[2026-09-02 13:22:26]}} [2026-09-02 13:22:26.932] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=93.0ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 13:22:26], 64] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:233 [2026-09-02 13:22:26.939] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"212834","status":"failed","timestamp":1788384127774,"type":"tms_response"} [2026-09-02 13:22:26.949] [INFO ] Processing file download response for device 28260702280001, request_id: 212834 [2026-09-02 13:22:26.959] [DEBUG] QUERY OK source="file_download_logs" db=0.5ms queue=4.3ms idle=25.7ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["212834"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:22:26.960] [INFO ] No file download log for request_id 212834; response not attached to a push [2026-09-02 13:22:26.960] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:22:26.960157Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "212834", "status" => "failed", "timestamp" => 1788384127774, "type" => "tms_response"}, request_id: "212834", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:22:26.960] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"13314","status":"failed","timestamp":1788384127888,"type":"tms_response"} [2026-09-02 13:22:26.960] [INFO ] Processing file download response for device 28260702280001, request_id: 13314 [2026-09-02 13:22:26.965] [DEBUG] QUERY OK source="file_download_logs" db=4.4ms idle=28.4ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["13314"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:22:26.966] [INFO ] No file download log for request_id 13314; response not attached to a push [2026-09-02 13:22:26.966] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:22:26.966319Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "13314", "status" => "failed", "timestamp" => 1788384127888, "type" => "tms_response"}, request_id: "13314", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:22:26.966] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"44516","status":"failed","timestamp":1788384128002,"type":"tms_response"} [2026-09-02 13:22:26.966] [INFO ] Processing file download response for device 28260702280001, request_id: 44516 [2026-09-02 13:22:26.970] [DEBUG] QUERY OK source="file_download_logs" db=3.3ms idle=7.1ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["44516"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:22:26.970] [INFO ] No file download log for request_id 44516; response not attached to a push [2026-09-02 13:22:26.971] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:22:26.971353Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "44516", "status" => "failed", "timestamp" => 1788384128002, "type" => "tms_response"}, request_id: "44516", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:22:26.972] [WARN ] Unexpected async result [2026-09-02 13:22:26.972] [WARN ] Unexpected async result [2026-09-02 13:22:26.972] [WARN ] Unexpected async result [2026-09-02 13:22:26.991] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"169413","status":"failed","timestamp":1788384128126,"type":"tms_response"} [2026-09-02 13:22:26.991] [INFO ] Processing file download response for device 28260702280001, request_id: 169413 [2026-09-02 13:22:26.995] [DEBUG] QUERY OK source="file_download_logs" db=3.1ms idle=27.4ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["169413"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:22:26.995] [INFO ] No file download log for request_id 169413; response not attached to a push [2026-09-02 13:22:26.996] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:22:26.996014Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "169413", "status" => "failed", "timestamp" => 1788384128126, "type" => "tms_response"}, request_id: "169413", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:22:27.002] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"9378","status":"failed","timestamp":1788384128239,"type":"tms_response"} [2026-09-02 13:22:27.002] [INFO ] Processing file download response for device 28260702280001, request_id: 9378 [2026-09-02 13:22:27.003] [DEBUG] QUERY OK source="file_download_logs" db=0.4ms idle=32.8ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["9378"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:22:27.003] [INFO ] No file download log for request_id 9378; response not attached to a push [2026-09-02 13:22:27.004] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:22:27.003983Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "9378", "status" => "failed", "timestamp" => 1788384128239, "type" => "tms_response"}, request_id: "9378", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:22:27.006] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"13378","status":"failed","timestamp":1788384128353,"type":"tms_response"} [2026-09-02 13:22:27.006] [INFO ] Processing file download response for device 28260702280001, request_id: 13378 [2026-09-02 13:22:27.007] [DEBUG] QUERY OK source="file_download_logs" db=0.8ms idle=11.6ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["13378"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:22:27.008] [INFO ] No file download log for request_id 13378; response not attached to a push [2026-09-02 13:22:27.008] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:22:27.008375Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "13378", "status" => "failed", "timestamp" => 1788384128353, "type" => "tms_response"}, request_id: "13378", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:22:27.012] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"23939","status":"failed","timestamp":1788384128465,"type":"tms_response"} [2026-09-02 13:22:27.013] [INFO ] Processing file download response for device 28260702280001, request_id: 23939 [2026-09-02 13:22:27.014] [DEBUG] QUERY OK source="file_download_logs" db=0.4ms queue=0.4ms idle=9.9ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["23939"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:22:27.014] [INFO ] No file download log for request_id 23939; response not attached to a push [2026-09-02 13:22:27.014] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:22:27.014757Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "23939", "status" => "failed", "timestamp" => 1788384128465, "type" => "tms_response"}, request_id: "23939", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:22:27.394] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"169445","status":"failed","timestamp":1788384128577,"type":"tms_response"} [2026-09-02 13:22:27.394] [INFO ] Processing file download response for device 28260702280001, request_id: 169445 [2026-09-02 13:22:27.396] [DEBUG] QUERY OK source="file_download_logs" db=1.6ms idle=387.2ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["169445"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:22:27.396] [INFO ] No file download log for request_id 169445; response not attached to a push [2026-09-02 13:22:27.396] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:22:27.396701Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "169445", "status" => "failed", "timestamp" => 1788384128577, "type" => "tms_response"}, request_id: "169445", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:22:27.414] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"2725","status":"failed","timestamp":1788384128689,"type":"tms_response"} [2026-09-02 13:22:27.414] [INFO ] Processing file download response for device 28260702280001, request_id: 2725 [2026-09-02 13:22:27.422] [DEBUG] QUERY OK source="file_download_logs" db=6.8ms idle=401.4ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["2725"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:22:27.423] [INFO ] No file download log for request_id 2725; response not attached to a push [2026-09-02 13:22:27.423] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:22:27.423179Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "2725", "status" => "failed", "timestamp" => 1788384128689, "type" => "tms_response"}, request_id: "2725", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:22:27.423] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"2213","status":"failed","timestamp":1788384128803,"type":"tms_response"} [2026-09-02 13:22:27.428] [INFO ] Processing file download response for device 28260702280001, request_id: 2213 [2026-09-02 13:22:27.429] [DEBUG] QUERY OK source="file_download_logs" db=0.5ms idle=32.1ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["2213"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:22:27.430] [INFO ] No file download log for request_id 2213; response not attached to a push [2026-09-02 13:22:27.431] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:22:27.431368Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "2213", "status" => "failed", "timestamp" => 1788384128803, "type" => "tms_response"}, request_id: "2213", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:22:27.831] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"6083","status":"failed","timestamp":1788384128915,"type":"tms_response"} [2026-09-02 13:22:27.832] [INFO ] Processing file download response for device 28260702280001, request_id: 6083 [2026-09-02 13:22:27.833] [DEBUG] QUERY OK source="file_download_logs" db=1.1ms idle=403.1ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["6083"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:22:27.833] [INFO ] No file download log for request_id 6083; response not attached to a push [2026-09-02 13:22:27.833] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:22:27.833734Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "6083", "status" => "failed", "timestamp" => 1788384128915, "type" => "tms_response"}, request_id: "6083", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:22:27.846] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"44580","status":"failed","timestamp":1788384129026,"type":"tms_response"} [2026-09-02 13:22:27.847] [INFO ] Processing file download response for device 28260702280001, request_id: 44580 [2026-09-02 13:22:27.855] [DEBUG] QUERY OK source="file_download_logs" db=7.6ms queue=0.2ms idle=216.3ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["44580"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:22:27.855] [INFO ] No file download log for request_id 44580; response not attached to a push [2026-09-02 13:22:27.856] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:22:27.856051Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "44580", "status" => "failed", "timestamp" => 1788384129026, "type" => "tms_response"}, request_id: "44580", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:22:29.384] [DEBUG] HANDLE EVENT "close_detail" in PlatformWeb.SettlementLive.MisApproval Parameters: %{"value" => ""} [2026-09-02 13:22:29.384] [DEBUG] Replied in 198µs [2026-09-02 13:22:32.759] [DEBUG] HANDLE EVENT "mis_row_clicked" in PlatformWeb.SettlementLive.MisApproval Parameters: %{"id" => 322} [2026-09-02 13:22:32.761] [DEBUG] QUERY OK source="settlement_mis" db=1.5ms queue=0.1ms idle=991.0ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 WHERE (s0.`id` = ?) [322] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:292 [2026-09-02 13:22:32.763] [DEBUG] QUERY OK source="settlement_mis_items" db=1.7ms idle=105.4ms SELECT s0.`merchant_mid`, s0.`merchant_id`, MAX(s0.`merchant_name`), sum(s0.`transaction_count`), sum(s0.`total_gross_amount`), sum(s0.`total_mdr_amount`), sum(s0.`total_vat_amount`), sum(s0.`total_interchange_fee`), sum(s0.`net_payable`), GROUP_CONCAT(DISTINCT s0.`scheme_name` SEPARATOR ', '), GROUP_CONCAT(DISTINCT s0.`card_type_code` SEPARATOR ', ') FROM `settlement_mis_items` AS s0 WHERE (s0.`settlement_mis_id` = ?) GROUP BY s0.`merchant_mid`, s0.`merchant_id` [322] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:293 [2026-09-02 13:22:32.769] [DEBUG] QUERY OK source="merchant_adjustments" db=5.5ms idle=2.3ms SELECT m0.`id`, m0.`merchant_mid`, m0.`merchant_name`, m0.`adjustment_date`, m0.`debit_credit`, m0.`amount`, m0.`currency`, m0.`adjustment_type`, m0.`description`, m0.`settlement_mis_id`, m0.`status`, m0.`applied_at`, m0.`cancelled_at`, m0.`cancel_reason`, m0.`approval_status`, m0.`level1_reviewed_by`, m0.`level1_reviewed_at`, m0.`level2_approved_by`, m0.`level2_approved_at`, m0.`rejected_by`, m0.`rejected_at`, m0.`rejection_reason`, m0.`created_by`, m0.`updated_by`, m0.`inserted_at`, m0.`updated_at` FROM `merchant_adjustments` AS m0 WHERE (m0.`settlement_mis_id` = ?) [322] ↳ SettlementCore.Context.list_adjustments_by_settlement_mis/1, at: lib/settlement_core/context.ex:1013 [2026-09-02 13:22:32.771] [DEBUG] QUERY OK source="settlement_mis_hold_snapshots" db=1.2ms idle=7.0ms SELECT DISTINCT s0.`merchant_mid`, s0.`merchant_name` FROM `settlement_mis_hold_snapshots` AS s0 WHERE (s0.`settlement_mis_id` = ?) AND (NOT (s0.`merchant_mid` IN (SELECT DISTINCT ss0.`merchant_mid` FROM `settlement_mis_items` AS ss0 WHERE (ss0.`settlement_mis_id` = ?)))) [322, 322] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:329 [2026-09-02 13:22:32.772] [DEBUG] QUERY OK source="settlement_mis_hold_snapshots" db=0.7ms idle=2.6ms SELECT s0.`id`, s0.`settlement_mis_id`, s0.`core_transaction_id`, s0.`merchant_mid`, s0.`merchant_name`, s0.`rrn`, s0.`tid`, s0.`scheme_name`, s0.`card_type_code`, s0.`gross_amount`, s0.`hold_type`, s0.`transaction_datetime`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis_hold_snapshots` AS s0 WHERE (s0.`settlement_mis_id` = ?) [322] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:378 [2026-09-02 13:22:32.773] [DEBUG] Replied in 13ms [2026-09-02 13:22:35.618] [INFO ] Received status update for terminal 98251226730001 [2026-09-02 13:22:35.618] [INFO ] Incoming JSON payload: {"oid":"896a626b-a70d-4b0c-b3ce-9820720918e1","sn":"98251226730001","uploadTime":"2026-09-02T13:22:34Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-09-02T13:22:34Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-09-02T13:22:34Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-09-02T13:22:34Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-09-02T13:22:34Z"},{"itemkey":"ram_free_mb","value":"823","timestamp":"2026-09-02T13:22:34Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-09-02T13:22:34Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-09-02T13:22:34Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-09-02T13:22:34Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-09-02T13:22:34Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-09-02T13:22:34Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-09-02T13:22:34Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-09-02T13:22:34Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-09-02T13:22:34Z"},{"itemkey":"data_usage_mb","value":"43","timestamp":"2026-09-02T13:22:34Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-09-02T13:22:34Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-09-02 13:22:35.626] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "896a626b-a70d-4b0c-b3ce-9820720918e1", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-09-02T13:22:34Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-09-02T13:22:34Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-09-02T13:22:34Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-09-02T13:22:34Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-09-02T13:22:34Z", "value" => "823"}, %{"itemkey" => "network_type", "timestamp" => "2026-09-02T13:22:34Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-09-02T13:22:34Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-09-02T13:22:34Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-09-02T13:22:34Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-09-02T13:22:34Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-09-02T13:22:34Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-09-02T13:22:34Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-09-02T13:22:34Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-09-02T13:22:34Z", "value" => "43"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-09-02T13:22:34Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-09-02T13:22:34Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-09-02T13:22:34Z", "vendor" => "morefun"} [2026-09-02 13:22:35.627] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-09-02 13:22:35.627] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-09-02 13:22:35.627] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-09-02 13:22:35.630] [DEBUG] QUERY OK source="parameter_templates" db=3.0ms idle=963.5ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-09-02 13:22:35.631] [DEBUG] QUERY OK source="parameter_templates" db=0.4ms queue=0.4ms idle=862.0ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-09-02 13:22:35.631] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-09-02 13:22:35.633] [DEBUG] QUERY OK source="tms_terminals" db=1.5ms idle=1.4ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:140 [2026-09-02 13:22:35.634] [INFO ] Terminal updated: 98251226730001 [2026-09-02 13:22:35.981] [DEBUG] HANDLE EVENT "expand_merchant" in PlatformWeb.SettlementLive.MisApproval Parameters: %{"mid" => "419926360000000"} [2026-09-02 13:22:35.984] [DEBUG] QUERY OK source="settlement_mis_items" db=0.9ms queue=1.0ms idle=315.5ms SELECT s0.`id`, s0.`settlement_mis_id`, s0.`core_transaction_id`, s0.`merchant_mid`, s0.`merchant_id`, s0.`merchant_name`, s0.`merchant_ref_number`, s0.`bank_name`, s0.`iban`, s0.`account_number`, s0.`settlement_date`, s0.`rrn`, s0.`tid`, s0.`auth_number`, s0.`transaction_date`, s0.`transaction_type`, s0.`scheme_name`, s0.`card_type_code`, s0.`gross_amount`, s0.`mdr_percentage_rate`, s0.`mdr_amount`, s0.`vat_rate`, s0.`vat_amount`, s0.`interchange_fee`, s0.`adjustment_amount`, s0.`ar_recovery`, s0.`net_payable`, s0.`transaction_count`, s0.`total_gross_amount`, s0.`total_mdr_amount`, s0.`total_vat_amount`, s0.`total_interchange_fee`, s0.`total_net_settlement_amount`, s0.`risk_status`, s0.`exception_type`, s0.`mpr_sent`, s0.`margin_contribution`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis_items` AS s0 WHERE ((s0.`settlement_mis_id` = ?) AND (s0.`merchant_mid` = ?)) ORDER BY s0.`card_type_code` [322, "419926360000000"] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:398 [2026-09-02 13:22:35.986] [DEBUG] QUERY OK source="merchant_adjustments" db=0.5ms idle=1.3ms SELECT m0.`id`, m0.`merchant_mid`, m0.`merchant_name`, m0.`adjustment_date`, m0.`debit_credit`, m0.`amount`, m0.`currency`, m0.`adjustment_type`, m0.`description`, m0.`settlement_mis_id`, m0.`status`, m0.`applied_at`, m0.`cancelled_at`, m0.`cancel_reason`, m0.`approval_status`, m0.`level1_reviewed_by`, m0.`level1_reviewed_at`, m0.`level2_approved_by`, m0.`level2_approved_at`, m0.`rejected_by`, m0.`rejected_at`, m0.`rejection_reason`, m0.`created_by`, m0.`updated_by`, m0.`inserted_at`, m0.`updated_at` FROM `merchant_adjustments` AS m0 WHERE (m0.`settlement_mis_id` = ?) [322] ↳ SettlementCore.Context.list_adjustments_by_settlement_mis/1, at: lib/settlement_core/context.ex:1013 [2026-09-02 13:22:35.987] [DEBUG] QUERY OK source="settlement_mis_hold_snapshots" db=1.1ms queue=0.4ms idle=0.2ms SELECT s0.`id`, s0.`settlement_mis_id`, s0.`core_transaction_id`, s0.`merchant_mid`, s0.`merchant_name`, s0.`rrn`, s0.`tid`, s0.`scheme_name`, s0.`card_type_code`, s0.`gross_amount`, s0.`hold_type`, s0.`transaction_datetime`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis_hold_snapshots` AS s0 WHERE (s0.`settlement_mis_id` = ?) AND (s0.`merchant_mid` = ?) [322, "419926360000000"] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:418 [2026-09-02 13:22:35.988] [DEBUG] Replied in 6ms [2026-09-02 13:22:36.056] [DEBUG] QUERY OK source="tms_terminals" db=421.8ms idle=2.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-09-02 13:22:35], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:164 [2026-09-02 13:22:36.056] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-09-02 13:22:36.059] [DEBUG] QUERY OK source="tms_terminals" db=2.2ms queue=0.2ms idle=68.7ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:1184 [2026-09-02 13:22:36.445] [DEBUG] QUERY OK source="tms_terminals" db=383.2ms idle=5.8ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 13:22:36], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:174 [2026-09-02 13:22:36.447] [DEBUG] QUERY OK source="app_upgrade_device_statuses" db=0.8ms idle=387.5ms SELECT a0.`id`, a0.`config_id`, a0.`device_id`, a0.`device_sn`, a0.`vendor`, a0.`model`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`update_result`, a0.`status`, a0.`remark`, a0.`finish_time`, a0.`pushed_time`, a0.`retry_count`, a0.`inserted_at`, a0.`updated_at` FROM `app_upgrade_device_statuses` AS a0 WHERE ((a0.`device_sn` = ?) AND a0.`status` IN ('pending','pushed')) ["98251226730001"] ↳ TmsCore.TerminalManagement.AppUpgradeService.maybe_repush_for_device/1, at: lib/tms_core/terminal_management/app_upgrade_service.ex:148 [2026-09-02 13:22:36.810] [DEBUG] QUERY OK db=362.4ms queue=0.3ms idle=2.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "896a626b-a70d-4b0c-b3ce-9820720918e1", "2026-09-02T13:22:34Z", ~N[2026-09-02 13:22:36], ~N[2026-09-02 13:22:36]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:179 [2026-09-02 13:22:36.811] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 106551, oid: "896a626b-a70d-4b0c-b3ce-9820720918e1", upload_time: "2026-09-02T13:22:34Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:22:36], updated_at: ~N[2026-09-02 13:22:36]} [2026-09-02 13:22:36.811] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-09-02T13:22:34Z", "value" => "morefun"} [2026-09-02 13:22:36.908] [DEBUG] QUERY OK db=93.7ms queue=3.0ms idle=1.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:22:34Z", "morefun", "vendor", 106551, ~N[2026-09-02 13:22:36], ~N[2026-09-02 13:22:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:22:36.908] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093089, itemkey: "vendor", value: "morefun", timestamp: "2026-09-02T13:22:34Z", message: nil, status_log_id: 106551, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:22:36], updated_at: ~N[2026-09-02 13:22:36]}} [2026-09-02 13:22:36.908] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-09-02T13:22:34Z", "value" => "kiosk_launcher"} [2026-09-02 13:22:36.993] [DEBUG] QUERY OK db=83.7ms idle=68.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:22:34Z", "kiosk_launcher", "model", 106551, ~N[2026-09-02 13:22:36], ~N[2026-09-02 13:22:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:22:36.993] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093091, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-09-02T13:22:34Z", message: nil, status_log_id: 106551, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:22:36], updated_at: ~N[2026-09-02 13:22:36]}} [2026-09-02 13:22:36.995] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-09-02T13:22:34Z", "value" => "1.0"} [2026-09-02 13:22:37.087] [DEBUG] QUERY OK db=91.6ms idle=2.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:22:34Z", "1.0", "app_version", 106551, ~N[2026-09-02 13:22:36], ~N[2026-09-02 13:22:36]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:22:37.088] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093097, itemkey: "app_version", value: "1.0", timestamp: "2026-09-02T13:22:34Z", message: nil, status_log_id: 106551, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:22:36], updated_at: ~N[2026-09-02 13:22:36]}} [2026-09-02 13:22:37.091] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-09-02T13:22:34Z", "value" => "13"} [2026-09-02 13:22:37.179] [DEBUG] QUERY OK db=88.2ms idle=4.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:22:34Z", "13", "android_version", 106551, ~N[2026-09-02 13:22:37], ~N[2026-09-02 13:22:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:22:37.180] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093100, itemkey: "android_version", value: "13", timestamp: "2026-09-02T13:22:34Z", message: nil, status_log_id: 106551, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:22:37], updated_at: ~N[2026-09-02 13:22:37]}} [2026-09-02 13:22:37.180] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-09-02T13:22:34Z", "value" => "823"} [2026-09-02 13:22:37.270] [DEBUG] QUERY OK db=88.5ms idle=94.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:22:34Z", "823", "ram_free_mb", 106551, ~N[2026-09-02 13:22:37], ~N[2026-09-02 13:22:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:22:37.271] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093106, itemkey: "ram_free_mb", value: "823", timestamp: "2026-09-02T13:22:34Z", message: nil, status_log_id: 106551, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:22:37], updated_at: ~N[2026-09-02 13:22:37]}} [2026-09-02 13:22:37.271] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-09-02T13:22:34Z", "value" => "WIFI"} [2026-09-02 13:22:37.340] [DEBUG] QUERY OK db=68.2ms idle=92.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:22:34Z", "WIFI", "network_type", 106551, ~N[2026-09-02 13:22:37], ~N[2026-09-02 13:22:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:22:37.340] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093108, itemkey: "network_type", value: "WIFI", timestamp: "2026-09-02T13:22:34Z", message: nil, status_log_id: 106551, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:22:37], updated_at: ~N[2026-09-02 13:22:37]}} [2026-09-02 13:22:37.340] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-09-02T13:22:34Z", "value" => "true"} [2026-09-02 13:22:37.426] [DEBUG] QUERY OK db=85.2ms idle=70.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:22:34Z", "true", "kiosk_active", 106551, ~N[2026-09-02 13:22:37], ~N[2026-09-02 13:22:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:22:37.432] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093112, itemkey: "kiosk_active", value: "true", timestamp: "2026-09-02T13:22:34Z", message: nil, status_log_id: 106551, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:22:37], updated_at: ~N[2026-09-02 13:22:37]}} [2026-09-02 13:22:37.433] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-09-02T13:22:34Z", "value" => ""} [2026-09-02 13:22:37.507] [DEBUG] QUERY OK db=73.3ms idle=93.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-09-02T13:22:34Z", "sim_operator", 106551, ~N[2026-09-02 13:22:37], ~N[2026-09-02 13:22:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:22:37.507] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093116, itemkey: "sim_operator", value: nil, timestamp: "2026-09-02T13:22:34Z", message: nil, status_log_id: 106551, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:22:37], updated_at: ~N[2026-09-02 13:22:37]}} [2026-09-02 13:22:37.507] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-09-02T13:22:34Z", "value" => "UNKNOWN"} [2026-09-02 13:22:37.591] [DEBUG] QUERY OK db=83.8ms idle=81.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:22:34Z", "UNKNOWN", "sim_number", 106551, ~N[2026-09-02 13:22:37], ~N[2026-09-02 13:22:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:22:37.591] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093120, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-09-02T13:22:34Z", message: nil, status_log_id: 106551, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:22:37], updated_at: ~N[2026-09-02 13:22:37]}} [2026-09-02 13:22:37.591] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-09-02T13:22:34Z", "value" => "UNKNOWN"} [2026-09-02 13:22:37.677] [DEBUG] QUERY OK db=79.2ms idle=90.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:22:34Z", "UNKNOWN", "sim_iccid", 106551, ~N[2026-09-02 13:22:37], ~N[2026-09-02 13:22:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:22:37.678] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093126, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-09-02T13:22:34Z", message: nil, status_log_id: 106551, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:22:37], updated_at: ~N[2026-09-02 13:22:37]}} [2026-09-02 13:22:37.678] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-09-02T13:22:34Z", "value" => "UNKNOWN"} [2026-09-02 13:22:37.768] [DEBUG] QUERY OK db=88.9ms idle=86.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:22:34Z", "UNKNOWN", "sim_imsi", 106551, ~N[2026-09-02 13:22:37], ~N[2026-09-02 13:22:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:22:37.777] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093128, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-09-02T13:22:34Z", message: nil, status_log_id: 106551, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:22:37], updated_at: ~N[2026-09-02 13:22:37]}} [2026-09-02 13:22:37.777] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-09-02T13:22:34Z", "value" => "UNKNOWN"} [2026-09-02 13:22:37.866] [DEBUG] QUERY OK db=87.8ms idle=101.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:22:34Z", "UNKNOWN", "sim_iccid2", 106551, ~N[2026-09-02 13:22:37], ~N[2026-09-02 13:22:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:22:37.867] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093132, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-09-02T13:22:34Z", message: nil, status_log_id: 106551, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:22:37], updated_at: ~N[2026-09-02 13:22:37]}} [2026-09-02 13:22:37.867] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-09-02T13:22:34Z", "value" => "UNKNOWN"} [2026-09-02 13:22:38.001] [DEBUG] QUERY OK db=133.9ms idle=1.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:22:34Z", "UNKNOWN", "sim_imsi2", 106551, ~N[2026-09-02 13:22:37], ~N[2026-09-02 13:22:37]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:22:38.002] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093137, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-09-02T13:22:34Z", message: nil, status_log_id: 106551, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:22:37], updated_at: ~N[2026-09-02 13:22:37]}} [2026-09-02 13:22:38.002] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-09-02T13:22:34Z", "value" => "43"} [2026-09-02 13:22:38.107] [DEBUG] QUERY OK db=100.6ms queue=3.9ms idle=1.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:22:34Z", "43", "data_usage_mb", 106551, ~N[2026-09-02 13:22:38], ~N[2026-09-02 13:22:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:22:38.107] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093141, itemkey: "data_usage_mb", value: "43", timestamp: "2026-09-02T13:22:34Z", message: nil, status_log_id: 106551, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:22:38], updated_at: ~N[2026-09-02 13:22:38]}} [2026-09-02 13:22:38.107] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-09-02T13:22:34Z", "value" => "0"} [2026-09-02 13:22:38.211] [DEBUG] QUERY OK db=100.6ms idle=88.6ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:22:34Z", "0", "mobile_data_mb", 106551, ~N[2026-09-02 13:22:38], ~N[2026-09-02 13:22:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:22:38.211] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093146, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-09-02T13:22:34Z", message: nil, status_log_id: 106551, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:22:38], updated_at: ~N[2026-09-02 13:22:38]}} [2026-09-02 13:22:38.212] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-09-02T13:22:34Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-09-02 13:22:38.303] [DEBUG] QUERY OK db=90.0ms queue=0.6ms idle=104.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:22:34Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 106551, ~N[2026-09-02 13:22:38], ~N[2026-09-02 13:22:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:22:38.304] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093148, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-09-02T13:22:34Z", message: nil, status_log_id: 106551, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:22:38], updated_at: ~N[2026-09-02 13:22:38]}} [2026-09-02 13:22:39.499] [DEBUG] HANDLE EVENT "close_detail" in PlatformWeb.SettlementLive.MisApproval Parameters: %{"value" => ""} [2026-09-02 13:22:39.500] [DEBUG] Replied in 203µs [2026-09-02 13:22:42.734] [DEBUG] HANDLE EVENT "mis_row_clicked" in PlatformWeb.SettlementLive.MisApproval Parameters: %{"id" => 315} [2026-09-02 13:22:42.738] [DEBUG] QUERY OK source="settlement_mis" db=1.4ms idle=952.7ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 WHERE (s0.`id` = ?) [315] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:292 [2026-09-02 13:22:42.742] [DEBUG] QUERY OK source="settlement_mis_items" db=2.3ms queue=0.1ms idle=697.6ms SELECT s0.`merchant_mid`, s0.`merchant_id`, MAX(s0.`merchant_name`), sum(s0.`transaction_count`), sum(s0.`total_gross_amount`), sum(s0.`total_mdr_amount`), sum(s0.`total_vat_amount`), sum(s0.`total_interchange_fee`), sum(s0.`net_payable`), GROUP_CONCAT(DISTINCT s0.`scheme_name` SEPARATOR ', '), GROUP_CONCAT(DISTINCT s0.`card_type_code` SEPARATOR ', ') FROM `settlement_mis_items` AS s0 WHERE (s0.`settlement_mis_id` = ?) GROUP BY s0.`merchant_mid`, s0.`merchant_id` [315] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:293 [2026-09-02 13:22:42.765] [DEBUG] QUERY OK source="merchant_adjustments" db=2.0ms queue=3.3ms idle=3.9ms SELECT m0.`id`, m0.`merchant_mid`, m0.`merchant_name`, m0.`adjustment_date`, m0.`debit_credit`, m0.`amount`, m0.`currency`, m0.`adjustment_type`, m0.`description`, m0.`settlement_mis_id`, m0.`status`, m0.`applied_at`, m0.`cancelled_at`, m0.`cancel_reason`, m0.`approval_status`, m0.`level1_reviewed_by`, m0.`level1_reviewed_at`, m0.`level2_approved_by`, m0.`level2_approved_at`, m0.`rejected_by`, m0.`rejected_at`, m0.`rejection_reason`, m0.`created_by`, m0.`updated_by`, m0.`inserted_at`, m0.`updated_at` FROM `merchant_adjustments` AS m0 WHERE (m0.`adjustment_date` = ?) AND (m0.`approval_status` = 'approved') [~D[2026-08-06]] ↳ SettlementCore.Context.list_approved_adjustments_by_date/1, at: lib/settlement_core/context.ex:971 [2026-09-02 13:22:42.771] [DEBUG] QUERY OK source="tid_masters" db=1.1ms queue=2.2ms idle=26.7ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ PlatformWeb.SettlementLive.MisApproval.merchant_name_map/1, at: lib/platform_web/live/settlement_live/mis_approval.ex:777 [2026-09-02 13:22:42.791] [DEBUG] QUERY OK source="core_transactions" db=5.4ms decode=0.3ms queue=3.1ms idle=35.1ms SELECT DISTINCT c0.`merchant_mid`, coalesce(t1.`merchant_name_legal`, t1.`merchant_name_dba`) FROM `core_transactions` AS c0 INNER JOIN `tid_masters` AS t1 ON t1.`mid` = c0.`merchant_mid` WHERE (DATE(c0.`transaction_datetime`) = ?) AND ((c0.`risk_hold` = TRUE) OR (c0.`settlement_status` = 'exception_hold')) AND (NOT (c0.`merchant_mid` IN (SELECT DISTINCT ss0.`merchant_mid` FROM `settlement_mis_items` AS ss0 WHERE (ss0.`settlement_mis_id` = ?)))) [~D[2026-08-06], 315] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:331 [2026-09-02 13:22:42.819] [DEBUG] QUERY OK source="core_transactions" db=1.1ms queue=7.7ms idle=38.8ms SELECT c0.`id`, c0.`source_type`, c0.`source_ref_id`, c0.`settlement_batch_id`, c0.`rrn`, c0.`tid`, c0.`auth_number`, c0.`stan`, c0.`invoice_number`, c0.`batch_number`, c0.`merchant_mid`, c0.`merchant_id`, c0.`merchant_ref_number`, c0.`transaction_amount`, c0.`transaction_currency`, c0.`transaction_type`, c0.`transaction_datetime`, c0.`masked_pan`, c0.`scheme_name`, c0.`card_holder_name`, c0.`customer_mobile`, c0.`customer_country`, c0.`mcc_code`, c0.`card_type_id`, c0.`card_type_code`, c0.`mdr_template_id`, c0.`mdr_percentage_rate`, c0.`mdr_fixed_fee`, c0.`mdr_minimum_fee`, c0.`mdr_maximum_fee`, c0.`mdr_amount`, c0.`vat_rate`, c0.`vat_amount`, c0.`interchange_fee`, c0.`interchange_template_id`, c0.`gross_amount`, c0.`net_settlement_amount`, c0.`settlement_status`, c0.`switch_settled_date`, c0.`released_for_settlement_date`, c0.`risk_hold`, c0.`risk_rule_name`, c0.`chargeback_hold`, c0.`exception_type`, c0.`refund_status`, c0.`refund_date`, c0.`reversal_status`, c0.`reversal_date`, c0.`store_id`, c0.`dr_cr`, c0.`qr_tag`, c0.`bank_transfer_reference`, c0.`bank_transfer_date`, c0.`spare_fields`, c0.`inserted_at`, c0.`updated_at` FROM `core_transactions` AS c0 WHERE (DATE(c0.`transaction_datetime`) = ?) AND ((c0.`risk_hold` = TRUE) OR (c0.`settlement_status` = 'exception_hold')) ORDER BY c0.`merchant_mid`, c0.`transaction_datetime` [~D[2026-08-06]] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:380 [2026-09-02 13:22:42.820] [DEBUG] Replied in 85ms [2026-09-02 13:23:22.832] [DEBUG] HANDLE EVENT "expand_merchant" in PlatformWeb.SettlementLive.MisApproval Parameters: %{"mid" => "419926360000000"} [2026-09-02 13:23:22.835] [DEBUG] QUERY OK source="settlement_mis_items" db=1.7ms queue=0.9ms idle=1024.8ms SELECT s0.`id`, s0.`settlement_mis_id`, s0.`core_transaction_id`, s0.`merchant_mid`, s0.`merchant_id`, s0.`merchant_name`, s0.`merchant_ref_number`, s0.`bank_name`, s0.`iban`, s0.`account_number`, s0.`settlement_date`, s0.`rrn`, s0.`tid`, s0.`auth_number`, s0.`transaction_date`, s0.`transaction_type`, s0.`scheme_name`, s0.`card_type_code`, s0.`gross_amount`, s0.`mdr_percentage_rate`, s0.`mdr_amount`, s0.`vat_rate`, s0.`vat_amount`, s0.`interchange_fee`, s0.`adjustment_amount`, s0.`ar_recovery`, s0.`net_payable`, s0.`transaction_count`, s0.`total_gross_amount`, s0.`total_mdr_amount`, s0.`total_vat_amount`, s0.`total_interchange_fee`, s0.`total_net_settlement_amount`, s0.`risk_status`, s0.`exception_type`, s0.`mpr_sent`, s0.`margin_contribution`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis_items` AS s0 WHERE ((s0.`settlement_mis_id` = ?) AND (s0.`merchant_mid` = ?)) ORDER BY s0.`card_type_code` [315, "419926360000000"] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:398 [2026-09-02 13:23:22.839] [DEBUG] QUERY OK source="merchant_adjustments" db=2.8ms idle=567.7ms SELECT m0.`id`, m0.`merchant_mid`, m0.`merchant_name`, m0.`adjustment_date`, m0.`debit_credit`, m0.`amount`, m0.`currency`, m0.`adjustment_type`, m0.`description`, m0.`settlement_mis_id`, m0.`status`, m0.`applied_at`, m0.`cancelled_at`, m0.`cancel_reason`, m0.`approval_status`, m0.`level1_reviewed_by`, m0.`level1_reviewed_at`, m0.`level2_approved_by`, m0.`level2_approved_at`, m0.`rejected_by`, m0.`rejected_at`, m0.`rejection_reason`, m0.`created_by`, m0.`updated_by`, m0.`inserted_at`, m0.`updated_at` FROM `merchant_adjustments` AS m0 WHERE (m0.`adjustment_date` = ?) AND (m0.`approval_status` = 'approved') [~D[2026-08-06]] ↳ SettlementCore.Context.list_approved_adjustments_by_date/1, at: lib/settlement_core/context.ex:971 [2026-09-02 13:23:22.841] [DEBUG] QUERY OK source="tid_masters" db=0.9ms queue=0.6ms idle=4.1ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?)) ["419926360000000"] ↳ PlatformWeb.SettlementLive.MisApproval.merchant_name_map/1, at: lib/platform_web/live/settlement_live/mis_approval.ex:777 [2026-09-02 13:23:22.843] [DEBUG] QUERY OK source="core_transactions" db=0.9ms queue=0.6ms idle=3.1ms SELECT c0.`id`, c0.`source_type`, c0.`source_ref_id`, c0.`settlement_batch_id`, c0.`rrn`, c0.`tid`, c0.`auth_number`, c0.`stan`, c0.`invoice_number`, c0.`batch_number`, c0.`merchant_mid`, c0.`merchant_id`, c0.`merchant_ref_number`, c0.`transaction_amount`, c0.`transaction_currency`, c0.`transaction_type`, c0.`transaction_datetime`, c0.`masked_pan`, c0.`scheme_name`, c0.`card_holder_name`, c0.`customer_mobile`, c0.`customer_country`, c0.`mcc_code`, c0.`card_type_id`, c0.`card_type_code`, c0.`mdr_template_id`, c0.`mdr_percentage_rate`, c0.`mdr_fixed_fee`, c0.`mdr_minimum_fee`, c0.`mdr_maximum_fee`, c0.`mdr_amount`, c0.`vat_rate`, c0.`vat_amount`, c0.`interchange_fee`, c0.`interchange_template_id`, c0.`gross_amount`, c0.`net_settlement_amount`, c0.`settlement_status`, c0.`switch_settled_date`, c0.`released_for_settlement_date`, c0.`risk_hold`, c0.`risk_rule_name`, c0.`chargeback_hold`, c0.`exception_type`, c0.`refund_status`, c0.`refund_date`, c0.`reversal_status`, c0.`reversal_date`, c0.`store_id`, c0.`dr_cr`, c0.`qr_tag`, c0.`bank_transfer_reference`, c0.`bank_transfer_date`, c0.`spare_fields`, c0.`inserted_at`, c0.`updated_at` FROM `core_transactions` AS c0 WHERE (DATE(c0.`transaction_datetime`) = ?) AND ((c0.`risk_hold` = TRUE) OR (c0.`settlement_status` = 'exception_hold')) AND (c0.`merchant_mid` = ?) ORDER BY c0.`merchant_mid`, c0.`transaction_datetime` [~D[2026-08-06], "419926360000000"] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:420 [2026-09-02 13:23:22.844] [DEBUG] Replied in 11ms [2026-09-02 13:23:39.106] [INFO ] Received status update for terminal 98251226730001 [2026-09-02 13:23:39.106] [INFO ] Incoming JSON payload: {"oid":"381e612f-eb6f-4c6c-b2f9-fef727c5774d","sn":"98251226730001","uploadTime":"2026-09-02T13:23:37Z","vendor":"morefun","model":"kiosk_launcher","org.device":[{"itemkey":"vendor","value":"morefun","timestamp":"2026-09-02T13:23:37Z"},{"itemkey":"model","value":"kiosk_launcher","timestamp":"2026-09-02T13:23:37Z"},{"itemkey":"app_version","value":"1.0","timestamp":"2026-09-02T13:23:37Z"},{"itemkey":"android_version","value":"13","timestamp":"2026-09-02T13:23:37Z"},{"itemkey":"ram_free_mb","value":"827","timestamp":"2026-09-02T13:23:37Z"},{"itemkey":"network_type","value":"WIFI","timestamp":"2026-09-02T13:23:37Z"},{"itemkey":"kiosk_active","value":"true","timestamp":"2026-09-02T13:23:37Z"},{"itemkey":"sim_operator","value":"","timestamp":"2026-09-02T13:23:37Z"},{"itemkey":"sim_number","value":"UNKNOWN","timestamp":"2026-09-02T13:23:37Z"},{"itemkey":"sim_iccid","value":"UNKNOWN","timestamp":"2026-09-02T13:23:37Z"},{"itemkey":"sim_imsi","value":"UNKNOWN","timestamp":"2026-09-02T13:23:37Z"},{"itemkey":"sim_iccid2","value":"UNKNOWN","timestamp":"2026-09-02T13:23:37Z"},{"itemkey":"sim_imsi2","value":"UNKNOWN","timestamp":"2026-09-02T13:23:37Z"},{"itemkey":"data_usage_mb","value":"43","timestamp":"2026-09-02T13:23:37Z"},{"itemkey":"mobile_data_mb","value":"0","timestamp":"2026-09-02T13:23:37Z"},{"itemkey":"installed_apps","value":"3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup\/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif \/ Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanner (com.morefun.scanner), SecureElementApplication (com.android.se.go), Sensor Test (com.mediatek.sensorhub.ui), Settings (com.android.settings), Settings Storage (com.android.providers.settings), Settings Suggestions (com.android.settings.intelligence), Shell (com.android.shell), Shukria (com.newland.template), Shukria Agent (com.agent.unitey_agent), Sim App Dialog (com.android.simappdialog), SimProcessor (com.mediatek.simprocessor), Sounds (com.android.soundpicker), Storage Manager (com.android.storagemanager), System Connectivity Resources (com.android.connectivity.resources), System Tracing (com.android.traceur), System UI (com.android.systemui), System UWB Resources (com.android.uwb.resources), System Wi-Fi Resources (com.android.wifi.resources), TMS (com.shukria.kiosklauncher), TalkBack (com.google.android.marvin.talkback), Tall cutout (com.android.internal.display.cutout.emulation.tall), Telephony Assist (com.mediatek.telephony), Tethering (com.android.networkstack.tethering.inprocess), TetheringResOverlay (com.android.networkstack.tethering.inprocess.overlay), TetheringResOverlay (com.android.networkstack.tethering.overlay), TetheringResOverlay (com.google.android.networkstack.tethering.overlay), USB updater (com.morefun.usbupdater), User Dictionary (com.android.providers.userdictionary), VpnDialogs (com.android.vpndialogs), Waterfall cutout (com.android.internal.display.cutout.emulation.waterfall), WifiResGoogleOverlay (com.google.android.wifi.resources.overlay), Work Setup (com.android.managedprovisioning), YDemo (com.morefun.ysdk.sample), YSDK (com.morefun.ysdk), android.auto_generated_rro_product__ (android.auto_generated_rro_product__), com.android.backupconfirm (com.android.backupconfirm), com.android.carrierconfig (com.android.carrierconfig), com.android.cellbroadcastreceiver.CellBroadcastReceiverApp (com.android.cellbroadcastreceiver), com.android.localtransport (com.android.localtransport), com.android.ondevicepersonalization.services (com.android.ondevicepersonalization.services), com.android.onetimeinitializer (com.android.onetimeinitializer), com.android.providers.media (com.android.providers.media), com.android.provision (com.android.provision), com.android.sdksandbox (com.android.sdksandbox), com.android.sharedstoragebackup (com.android.sharedstoragebackup), com.android.wallpaperbackup (com.android.wallpaperbackup), com.android.wallpapercropper (com.android.wallpapercropper), com.android.wallpaperpicker (com.android.wallpaperpicker), com.android.wifi.dialog (com.android.wifi.dialog), com.android.wifi.mainline.resources.overlay (com.android.wifi.mainline.resource (truncated) [2026-09-02 13:23:39.107] [INFO ] Decoded JSON: %{"model" => "kiosk_launcher", "oid" => "381e612f-eb6f-4c6c-b2f9-fef727c5774d", "org.device" => [%{"itemkey" => "vendor", "timestamp" => "2026-09-02T13:23:37Z", "value" => "morefun"}, %{"itemkey" => "model", "timestamp" => "2026-09-02T13:23:37Z", "value" => "kiosk_launcher"}, %{"itemkey" => "app_version", "timestamp" => "2026-09-02T13:23:37Z", "value" => "1.0"}, %{"itemkey" => "android_version", "timestamp" => "2026-09-02T13:23:37Z", "value" => "13"}, %{"itemkey" => "ram_free_mb", "timestamp" => "2026-09-02T13:23:37Z", "value" => "827"}, %{"itemkey" => "network_type", "timestamp" => "2026-09-02T13:23:37Z", "value" => "WIFI"}, %{"itemkey" => "kiosk_active", "timestamp" => "2026-09-02T13:23:37Z", "value" => "true"}, %{"itemkey" => "sim_operator", "timestamp" => "2026-09-02T13:23:37Z", "value" => ""}, %{"itemkey" => "sim_number", "timestamp" => "2026-09-02T13:23:37Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid", "timestamp" => "2026-09-02T13:23:37Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi", "timestamp" => "2026-09-02T13:23:37Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_iccid2", "timestamp" => "2026-09-02T13:23:37Z", "value" => "UNKNOWN"}, %{"itemkey" => "sim_imsi2", "timestamp" => "2026-09-02T13:23:37Z", "value" => "UNKNOWN"}, %{"itemkey" => "data_usage_mb", "timestamp" => "2026-09-02T13:23:37Z", "value" => "43"}, %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-09-02T13:23:37Z", "value" => "0"}, %{"itemkey" => "installed_apps", "timestamp" => "2026-09-02T13:23:37Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...}], "sn" => "98251226730001", "uploadTime" => "2026-09-02T13:23:37Z", "vendor" => "morefun"} [2026-09-02 13:23:39.108] [INFO ] Extracted versions for 98251226730001: %{application: nil, emv_config: nil, keys_config: nil, parameter_config: nil} [2026-09-02 13:23:39.108] [INFO ] Detected missing versions for 98251226730001, triggering auto-push [2026-09-02 13:23:39.108] [INFO ] AutoPushService: Triggering auto-push for 98251226730001 (morefun kiosk_launcher) - missing version [2026-09-02 13:23:39.110] [DEBUG] QUERY OK source="parameter_templates" db=2.5ms idle=793.7ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-09-02 13:23:39.114] [DEBUG] QUERY OK source="parameter_templates" db=3.2ms idle=302.0ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE ((((p0.`is_active` = TRUE) AND (p0.`is_default` = TRUE)) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["morefun", "kiosk_launcher"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:36 [2026-09-02 13:23:39.114] [WARN ] AutoPushService: No template found for morefun kiosk_launcher [2026-09-02 13:23:39.115] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=3.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:140 [2026-09-02 13:23:39.116] [INFO ] Terminal updated: 98251226730001 [2026-09-02 13:23:39.169] [DEBUG] QUERY OK source="tms_terminals" db=52.0ms queue=0.4ms idle=2.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-09-02 13:23:39], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:164 [2026-09-02 13:23:39.169] [DEBUG] VersionComplianceChecker: 98251226730001 — all versions compliant [2026-09-02 13:23:39.172] [DEBUG] QUERY OK source="tms_terminals" db=2.7ms queue=0.1ms idle=54.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["98251226730001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:1184 [2026-09-02 13:23:39.242] [DEBUG] QUERY OK source="tms_terminals" db=67.3ms queue=0.1ms idle=6.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 13:23:39], 33] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:174 [2026-09-02 13:23:39.245] [DEBUG] QUERY OK source="app_upgrade_device_statuses" db=2.0ms idle=70.6ms SELECT a0.`id`, a0.`config_id`, a0.`device_id`, a0.`device_sn`, a0.`vendor`, a0.`model`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`update_result`, a0.`status`, a0.`remark`, a0.`finish_time`, a0.`pushed_time`, a0.`retry_count`, a0.`inserted_at`, a0.`updated_at` FROM `app_upgrade_device_statuses` AS a0 WHERE ((a0.`device_sn` = ?) AND a0.`status` IN ('pending','pushed')) ["98251226730001"] ↳ TmsCore.TerminalManagement.AppUpgradeService.maybe_repush_for_device/1, at: lib/tms_core/terminal_management/app_upgrade_service.ex:148 [2026-09-02 13:23:39.306] [DEBUG] QUERY OK db=61.2ms idle=2.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [33, "381e612f-eb6f-4c6c-b2f9-fef727c5774d", "2026-09-02T13:23:37Z", ~N[2026-09-02 13:23:39], ~N[2026-09-02 13:23:39]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:179 [2026-09-02 13:23:39.307] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 106556, oid: "381e612f-eb6f-4c6c-b2f9-fef727c5774d", upload_time: "2026-09-02T13:23:37Z", terminal_id: 33, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:23:39], updated_at: ~N[2026-09-02 13:23:39]} [2026-09-02 13:23:39.307] [INFO ] Saving status item: %{"itemkey" => "vendor", "timestamp" => "2026-09-02T13:23:37Z", "value" => "morefun"} [2026-09-02 13:23:39.379] [DEBUG] QUERY OK db=71.6ms idle=62.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:23:37Z", "morefun", "vendor", 106556, ~N[2026-09-02 13:23:39], ~N[2026-09-02 13:23:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:23:39.379] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093150, itemkey: "vendor", value: "morefun", timestamp: "2026-09-02T13:23:37Z", message: nil, status_log_id: 106556, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:23:39], updated_at: ~N[2026-09-02 13:23:39]}} [2026-09-02 13:23:39.379] [INFO ] Saving status item: %{"itemkey" => "model", "timestamp" => "2026-09-02T13:23:37Z", "value" => "kiosk_launcher"} [2026-09-02 13:23:39.461] [DEBUG] QUERY OK db=81.4ms idle=61.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:23:37Z", "kiosk_launcher", "model", 106556, ~N[2026-09-02 13:23:39], ~N[2026-09-02 13:23:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:23:39.462] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093154, itemkey: "model", value: "kiosk_launcher", timestamp: "2026-09-02T13:23:37Z", message: nil, status_log_id: 106556, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:23:39], updated_at: ~N[2026-09-02 13:23:39]}} [2026-09-02 13:23:39.462] [INFO ] Saving status item: %{"itemkey" => "app_version", "timestamp" => "2026-09-02T13:23:37Z", "value" => "1.0"} [2026-09-02 13:23:39.559] [DEBUG] QUERY OK db=97.2ms idle=83.4ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:23:37Z", "1.0", "app_version", 106556, ~N[2026-09-02 13:23:39], ~N[2026-09-02 13:23:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:23:39.560] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093158, itemkey: "app_version", value: "1.0", timestamp: "2026-09-02T13:23:37Z", message: nil, status_log_id: 106556, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:23:39], updated_at: ~N[2026-09-02 13:23:39]}} [2026-09-02 13:23:39.560] [INFO ] Saving status item: %{"itemkey" => "android_version", "timestamp" => "2026-09-02T13:23:37Z", "value" => "13"} [2026-09-02 13:23:39.653] [DEBUG] QUERY OK db=92.4ms idle=98.7ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:23:37Z", "13", "android_version", 106556, ~N[2026-09-02 13:23:39], ~N[2026-09-02 13:23:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:23:39.653] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093162, itemkey: "android_version", value: "13", timestamp: "2026-09-02T13:23:37Z", message: nil, status_log_id: 106556, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:23:39], updated_at: ~N[2026-09-02 13:23:39]}} [2026-09-02 13:23:39.653] [INFO ] Saving status item: %{"itemkey" => "ram_free_mb", "timestamp" => "2026-09-02T13:23:37Z", "value" => "827"} [2026-09-02 13:23:39.752] [DEBUG] QUERY OK db=98.2ms idle=94.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:23:37Z", "827", "ram_free_mb", 106556, ~N[2026-09-02 13:23:39], ~N[2026-09-02 13:23:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:23:39.753] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093165, itemkey: "ram_free_mb", value: "827", timestamp: "2026-09-02T13:23:37Z", message: nil, status_log_id: 106556, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:23:39], updated_at: ~N[2026-09-02 13:23:39]}} [2026-09-02 13:23:39.754] [INFO ] Saving status item: %{"itemkey" => "network_type", "timestamp" => "2026-09-02T13:23:37Z", "value" => "WIFI"} [2026-09-02 13:23:39.801] [DEBUG] QUERY OK db=43.0ms idle=105.2ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:23:37Z", "WIFI", "network_type", 106556, ~N[2026-09-02 13:23:39], ~N[2026-09-02 13:23:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:23:39.801] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093170, itemkey: "network_type", value: "WIFI", timestamp: "2026-09-02T13:23:37Z", message: nil, status_log_id: 106556, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:23:39], updated_at: ~N[2026-09-02 13:23:39]}} [2026-09-02 13:23:39.801] [INFO ] Saving status item: %{"itemkey" => "kiosk_active", "timestamp" => "2026-09-02T13:23:37Z", "value" => "true"} [2026-09-02 13:23:39.897] [DEBUG] QUERY OK db=95.4ms idle=49.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:23:37Z", "true", "kiosk_active", 106556, ~N[2026-09-02 13:23:39], ~N[2026-09-02 13:23:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:23:39.897] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093174, itemkey: "kiosk_active", value: "true", timestamp: "2026-09-02T13:23:37Z", message: nil, status_log_id: 106556, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:23:39], updated_at: ~N[2026-09-02 13:23:39]}} [2026-09-02 13:23:39.898] [INFO ] Saving status item: %{"itemkey" => "sim_operator", "timestamp" => "2026-09-02T13:23:37Z", "value" => ""} [2026-09-02 13:23:39.991] [DEBUG] QUERY OK db=93.4ms idle=96.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["2026-09-02T13:23:37Z", "sim_operator", 106556, ~N[2026-09-02 13:23:39], ~N[2026-09-02 13:23:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:23:39.995] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093176, itemkey: "sim_operator", value: nil, timestamp: "2026-09-02T13:23:37Z", message: nil, status_log_id: 106556, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:23:39], updated_at: ~N[2026-09-02 13:23:39]}} [2026-09-02 13:23:39.995] [INFO ] Saving status item: %{"itemkey" => "sim_number", "timestamp" => "2026-09-02T13:23:37Z", "value" => "UNKNOWN"} [2026-09-02 13:23:40.129] [DEBUG] QUERY OK db=133.9ms idle=97.9ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:23:37Z", "UNKNOWN", "sim_number", 106556, ~N[2026-09-02 13:23:39], ~N[2026-09-02 13:23:39]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:23:40.129] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093182, itemkey: "sim_number", value: "UNKNOWN", timestamp: "2026-09-02T13:23:37Z", message: nil, status_log_id: 106556, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:23:39], updated_at: ~N[2026-09-02 13:23:39]}} [2026-09-02 13:23:40.130] [INFO ] Saving status item: %{"itemkey" => "sim_iccid", "timestamp" => "2026-09-02T13:23:37Z", "value" => "UNKNOWN"} [2026-09-02 13:23:40.606] [DEBUG] QUERY OK db=476.4ms idle=138.5ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:23:37Z", "UNKNOWN", "sim_iccid", 106556, ~N[2026-09-02 13:23:40], ~N[2026-09-02 13:23:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:23:40.607] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093186, itemkey: "sim_iccid", value: "UNKNOWN", timestamp: "2026-09-02T13:23:37Z", message: nil, status_log_id: 106556, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:23:40], updated_at: ~N[2026-09-02 13:23:40]}} [2026-09-02 13:23:40.607] [INFO ] Saving status item: %{"itemkey" => "sim_imsi", "timestamp" => "2026-09-02T13:23:37Z", "value" => "UNKNOWN"} [2026-09-02 13:23:41.209] [DEBUG] QUERY OK db=601.2ms idle=285.1ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:23:37Z", "UNKNOWN", "sim_imsi", 106556, ~N[2026-09-02 13:23:40], ~N[2026-09-02 13:23:40]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:23:41.209] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093190, itemkey: "sim_imsi", value: "UNKNOWN", timestamp: "2026-09-02T13:23:37Z", message: nil, status_log_id: 106556, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:23:40], updated_at: ~N[2026-09-02 13:23:40]}} [2026-09-02 13:23:41.209] [INFO ] Saving status item: %{"itemkey" => "sim_iccid2", "timestamp" => "2026-09-02T13:23:37Z", "value" => "UNKNOWN"} [2026-09-02 13:23:41.875] [DEBUG] QUERY OK db=664.9ms idle=603.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:23:37Z", "UNKNOWN", "sim_iccid2", 106556, ~N[2026-09-02 13:23:41], ~N[2026-09-02 13:23:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:23:41.875] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093193, itemkey: "sim_iccid2", value: "UNKNOWN", timestamp: "2026-09-02T13:23:37Z", message: nil, status_log_id: 106556, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:23:41], updated_at: ~N[2026-09-02 13:23:41]}} [2026-09-02 13:23:41.875] [INFO ] Saving status item: %{"itemkey" => "sim_imsi2", "timestamp" => "2026-09-02T13:23:37Z", "value" => "UNKNOWN"} [2026-09-02 13:23:42.418] [DEBUG] QUERY OK db=542.2ms idle=549.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:23:37Z", "UNKNOWN", "sim_imsi2", 106556, ~N[2026-09-02 13:23:41], ~N[2026-09-02 13:23:41]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:23:42.418] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093196, itemkey: "sim_imsi2", value: "UNKNOWN", timestamp: "2026-09-02T13:23:37Z", message: nil, status_log_id: 106556, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:23:41], updated_at: ~N[2026-09-02 13:23:41]}} [2026-09-02 13:23:42.418] [INFO ] Saving status item: %{"itemkey" => "data_usage_mb", "timestamp" => "2026-09-02T13:23:37Z", "value" => "43"} [2026-09-02 13:23:42.538] [DEBUG] QUERY OK db=118.9ms idle=90.8ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:23:37Z", "43", "data_usage_mb", 106556, ~N[2026-09-02 13:23:42], ~N[2026-09-02 13:23:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:23:42.538] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093200, itemkey: "data_usage_mb", value: "43", timestamp: "2026-09-02T13:23:37Z", message: nil, status_log_id: 106556, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:23:42], updated_at: ~N[2026-09-02 13:23:42]}} [2026-09-02 13:23:42.538] [INFO ] Saving status item: %{"itemkey" => "mobile_data_mb", "timestamp" => "2026-09-02T13:23:37Z", "value" => "0"} [2026-09-02 13:23:42.620] [DEBUG] QUERY OK db=80.9ms idle=121.0ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:23:37Z", "0", "mobile_data_mb", 106556, ~N[2026-09-02 13:23:42], ~N[2026-09-02 13:23:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:23:42.620] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093204, itemkey: "mobile_data_mb", value: "0", timestamp: "2026-09-02T13:23:37Z", message: nil, status_log_id: 106556, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:23:42], updated_at: ~N[2026-09-02 13:23:42]}} [2026-09-02 13:23:42.621] [INFO ] Saving status item: %{"itemkey" => "installed_apps", "timestamp" => "2026-09-02T13:23:37Z", "value" => "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ...} [2026-09-02 13:23:42.697] [DEBUG] QUERY OK db=75.7ms idle=83.3ms INSERT INTO `tms_terminal_status_items` (`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["2026-09-02T13:23:37Z", "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., "installed_apps", 106556, ~N[2026-09-02 13:23:42], ~N[2026-09-02 13:23:42]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:23:42.698] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093208, itemkey: "installed_apps", value: "3 Button Navigation Bar (com.android.internal.systemui.navbar.threebutton), Android AdServices (com.android.adservices.api), Android Keyboard (AOSP) (com.android.inputmethod.latin), Android Services Library (android.ext.services), Android Shared Library (android.ext.shared), Android System (android), Android System WebView (com.android.webview), Appstore (com.morefun.appstore), Basic Daydreams (com.android.dreams.basic), Blocked Numbers Storage (com.android.providers.blockednumber), Bluetooth (com.android.bluetooth), Bluetooth MIDI Service (com.android.bluetoothmidiservice), Bookmark Provider (com.android.bookmarkprovider), Call Log Backup/Restore (com.android.calllogbackup), Call Recorder (com.mediatek.callrecorder), Camera (com.mediatek.camera), CameraExtensionsProxy (com.android.cameraextensions), CaptivePortalLogin (com.android.captiveportallogin), CarrierDefaultApp (com.android.carrierdefaultapp), Cell Broadcast Service (com.android.cellbroadcastservice), Certificate Installer (com.android.certinstaller), Companion Device Manager (com.android.companiondevicemanager), Contacts Storage (com.android.providers.contacts), Corner cutout (com.android.internal.display.cutout.emulation.corner), Default Print Service (com.android.bips), Double cutout (com.android.internal.display.cutout.emulation.double), Download Manager (com.android.providers.downloads), Downloads (com.android.providers.downloads.ui), DuraSpeed (com.mediatek.duraspeed), Dynamic System Updates (com.android.dynsystem), Emergency information (com.android.emergency), EscPrinter (com.morefun.escprinter), External Storage (com.android.externalstorage), Files (com.android.documentsui), Fused Location (com.android.location.fused), Gallery (com.android.gallery3d), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_extra_wide_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_narrow_back), Gestural Navigation Bar (com.android.internal.systemui.navbar.gestural_wide_back), Google Pinyin Input (com.google.android.inputmethod.pinyin), Google Text-to-speech Engine (com.google.android.tts), GoogleNetworkStackResOverlay (com.google.android.networkstack.overlay), HTML Viewer (com.android.htmlviewer), HardwareManager (com.morefun.pos.hardwaremanager), Input Devices (com.android.inputdevices), Intent Filter Verification Service (com.android.statementservice), Key Chain (com.android.keychain), LocationEM2 (com.mediatek.lbs.em2.ui), MFLauncher (com.morefun.launcher), MF_TMS (com.morefun.tms), MTP Host (com.android.mtp), Media Storage (com.android.providers.media.module), Mercury POS Java (com.mercury.posjava), Mobile Data (com.android.phone), Mobile Network Configuration (com.android.providers.telephony), Module Metadata (com.android.modulemetadata), MusicFX (com.android.musicfx), My Application (com.example.myapplication), Network manager (com.android.networkstack.inprocess), NetworkStackInProcessResOverlay (com.android.networkstack.inprocess.overlay), NetworkStackResOverlay (com.android.networkstack.overlay), Nfc Service (com.android.nfc), Noto Serif / Source Sans Pro (com.android.theme.font.notoserifsource), OsuLogin (com.android.hotspot2.osulogin), POS Capture (com.pos.capture), PacProcessor (com.android.pacprocessor), Package installer (com.android.packageinstaller), Param setting (com.morefun.m66.param), Pay Sample (com.morefun.pay), Permission controller (com.android.permissioncontroller), Phone Calls (com.android.server.telecom), Print Service Recommendation Service (com.android.printservice.recommendation), Print Spooler (com.android.printspooler), ProductTest (com.morefun.producttest), ProxyHandler (com.android.proxyhandler), Punch Hole cutout (com.android.internal.display.cutout.emulation.hole), Quickstep (com.android.launcher3), RemoteProvisioner (com.android.remoteprovisioner), RilCap (com.mediatek.capctrl.service), RiskInspection (com.morefun.switchcheck), SDLgui (com.zebra.sdl), Safety Center Resources (com.android.safetycenter.resources), Scanne" <> ..., timestamp: "2026-09-02T13:23:37Z", message: nil, status_log_id: 106556, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:23:42], updated_at: ~N[2026-09-02 13:23:42]}} [2026-09-02 13:25:08.188] [INFO ] Received status update for terminal 28260702280001 [2026-09-02 13:25:08.188] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-09-02T21:24:49Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-09-02T21:24:49Z","value":"100"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-09-02T21:24:49Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-09-02T21:24:49Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-09-02T21:24:49Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-09-02T21:24:49Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-09-02T21:24:49Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-09-02T21:24:49Z","value":"3.8.7.1-SNAPSHOT-SR800"}],"model":"SR800 A20","oid":"organization_id","sn":"28260702280001","uploadTime":"2026-09-02T21:24:49Z","vendor":"MoreFun"} [2026-09-02 13:25:08.191] [INFO ] Decoded JSON: %{"model" => "SR800 A20", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-09-02T21:24:49Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-09-02T21:24:49Z", "value" => "100"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-09-02T21:24:49Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-09-02T21:24:49Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-09-02T21:24:49Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-09-02T21:24:49Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-09-02T21:24:49Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-09-02T21:24:49Z", "value" => "3.8.7.1-SNAPSHOT-SR800"}], "sn" => "28260702280001", "uploadTime" => "2026-09-02T21:24:49Z", "vendor" => "MoreFun"} [2026-09-02 13:25:08.192] [INFO ] Extracted versions for 28260702280001: %{application: "3.8.7.1-SNAPSHOT-SR800", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-09-02 13:25:08.192] [INFO ] Detected missing versions for 28260702280001, triggering auto-push [2026-09-02 13:25:08.192] [INFO ] AutoPushService: Triggering auto-push for 28260702280001 (MoreFun SR800 A20) - missing version [2026-09-02 13:25:08.193] [DEBUG] QUERY OK source="parameter_templates" db=0.8ms idle=1358.8ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["MoreFun", "SR800 A20"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-09-02 13:25:08.197] [DEBUG] QUERY OK source="tms_terminals" db=2.4ms idle=481.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["28260702280001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-09-02 13:25:08.203] [DEBUG] QUERY OK source="parameter_template_values" db=3.5ms queue=2.4ms idle=3.8ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [15] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-09-02 13:25:08.211] [DEBUG] QUERY OK source="parameter_definitions" db=0.7ms queue=1.3ms idle=10.5ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-09-02 13:25:08.313] [DEBUG] QUERY OK db=100.1ms idle=9.4ms INSERT INTO `parameter_push_logs` (`status`,`request_id`,`terminal_id`,`template_id`,`push_type`,`config_type`,`device_vendor`,`device_model`,`parameters_sent`,`log_time`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", 24195, 64, 15, "full", "parameter", "MoreFun", "SR800 A20", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", "PINPAD_MASTER_KEY_INDEX" => "0", "COMM_PORT" => "80", ...}, ~U[2026-09-02 13:25:08Z], "missing_version", "1.0.0", ~N[2026-09-02 13:25:08], ~N[2026-09-02 13:25:08]] ↳ TmsCore.TerminalManagement.AutoPushService.push_generic_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:235 [2026-09-02 13:25:08.313] [INFO ] AutoPushService: Created push log 61159 for parameters (template: 15) [2026-09-02 13:25:08.314] [INFO ] SR600 MQTT Command: %{"command" => "file_download", "merchant_config" => "true", "request_id" => 24195, "retry_count" => "3", "version" => "1.0.0"} [2026-09-02 13:25:08.315] [INFO ] AutoPushService: Sending parameter push to 28260702280001 on topic: /ota/pFppbioOCKlo5c8E/28260702280001/update [2026-09-02 13:25:08.316] [INFO ] AutoPushService: Parameter push sent successfully to 28260702280001 [2026-09-02 13:25:08.418] [DEBUG] QUERY OK db=101.7ms idle=107.4ms INSERT INTO `parameter_push_logs` (`status`,`request_id`,`terminal_id`,`push_type`,`config_type`,`device_vendor`,`device_model`,`log_time`,`trigger_reason`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?) ["pending", 44772, 64, "full", "emv_config", "MoreFun", "SR800 A20", ~U[2026-09-02 13:25:08Z], "missing_version", ~N[2026-09-02 13:25:08], ~N[2026-09-02 13:25:08]] ↳ TmsCore.TerminalManagement.AutoPushService.push_regular_config/5, at: lib/tms_core/terminal_management/auto_push_service.ex:427 [2026-09-02 13:25:08.418] [INFO ] AutoPushService: Created push log for emv_config [2026-09-02 13:25:08.419] [INFO ] SR600 MQTT Command: %{"command" => "file_download", "merchant_config" => "true", "request_id" => 44772, "retry_count" => "3"} [2026-09-02 13:25:08.424] [INFO ] AutoPushService: Sending emv_config push to 28260702280001 on topic: /ota/pFppbioOCKlo5c8E/28260702280001/update [2026-09-02 13:25:08.424] [INFO ] AutoPushService: emv_config push sent successfully to 28260702280001 [2026-09-02 13:25:08.443] [DEBUG] QUERY OK source="config_file_versions" db=5.9ms idle=123.7ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "SR800 A20"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-09-02 13:25:08.449] [INFO ] KeysConfigService: Generating keys.json for 28260702280001 (SR800 A20) [2026-09-02 13:25:08.451] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms queue=0.1ms idle=31.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["28260702280001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-09-02 13:25:08.451] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 28260702280001 with params: %{"kekKcv" => "112233", "model" => "SR800 A20", "serialNumber" => "28260702280001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-09-02 13:25:08.455] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-09-02 13:25:08.456] [ERROR] KeysConfigService: Failed to generate keys for 28260702280001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 13:25:08.456] [ERROR] AutoPushService: Failed to generate keys.json for 28260702280001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 13:25:08.552] [DEBUG] QUERY OK db=87.9ms queue=4.7ms idle=15.8ms INSERT INTO `parameter_push_logs` (`status`,`request_id`,`terminal_id`,`push_type`,`config_type`,`device_vendor`,`device_model`,`log_time`,`trigger_reason`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?) ["pending", 44868, 64, "full", "application", "MoreFun", "SR800 A20", ~U[2026-09-02 13:25:08Z], "missing_version", ~N[2026-09-02 13:25:08], ~N[2026-09-02 13:25:08]] ↳ TmsCore.TerminalManagement.AutoPushService.push_regular_config/5, at: lib/tms_core/terminal_management/auto_push_service.ex:427 [2026-09-02 13:25:08.552] [INFO ] AutoPushService: Created push log for application [2026-09-02 13:25:08.552] [INFO ] SR600 MQTT Command: %{"command" => "file_download", "merchant_config" => "true", "request_id" => 44868, "retry_count" => "3"} [2026-09-02 13:25:08.560] [INFO ] AutoPushService: Sending application push to 28260702280001 on topic: /ota/pFppbioOCKlo5c8E/28260702280001/update [2026-09-02 13:25:08.564] [INFO ] AutoPushService: application push sent successfully to 28260702280001 [2026-09-02 13:25:08.564] [INFO ] AutoPushService: Auto-push completed for 28260702280001 [2026-09-02 13:25:08.567] [DEBUG] QUERY OK source="tms_terminals" db=2.5ms idle=113.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["28260702280001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:140 [2026-09-02 13:25:08.567] [INFO ] Terminal updated: 28260702280001 [2026-09-02 13:25:08.598] [DEBUG] QUERY OK source="tms_terminals" db=29.5ms idle=16.3ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-09-02 13:25:08], 64] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:164 [2026-09-02 13:25:08.606] [DEBUG] QUERY OK source="parameter_templates" db=7.0ms queue=0.3ms idle=31.6ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) ORDER BY p0.`updated_at` DESC LIMIT 1 ["MoreFun", "SR800 A20"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_parameter_version/2, at: lib/tms_core/terminal_management/version_compliance_checker.ex:105 [2026-09-02 13:25:08.618] [DEBUG] QUERY OK source="config_file_versions" db=0.5ms queue=1.7ms idle=18.0ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "SR800 A20"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-09-02 13:25:08.622] [DEBUG] QUERY OK source="config_file_versions" db=1.0ms idle=14.6ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "SR800 A20"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-09-02 13:25:08.628] [INFO ] VersionComplianceChecker: 28260702280001 — outdated configs: [{:application, "3.8.7.1-SNAPSHOT-SR800", "3.8.5"}] [2026-09-02 13:25:08.708] [DEBUG] QUERY OK source="parameter_push_logs" db=78.7ms idle=11.1ms SELECT TRUE FROM `parameter_push_logs` AS p0 WHERE ((((p0.`terminal_id` = ?) AND (p0.`config_type` = ?)) AND (p0.`inserted_at` >= ?)) AND p0.`status` IN ('pending','sent')) LIMIT 1 [64, "application", ~N[2026-09-02 12:55:08]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-09-02 13:25:08.708] [INFO ] VersionComplianceChecker: Skipping application re-push for 28260702280001 (push already in-flight or within cooldown) [2026-09-02 13:25:08.713] [DEBUG] QUERY OK source="tms_terminals" db=3.8ms queue=0.1ms idle=87.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["28260702280001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:1184 [2026-09-02 13:25:08.784] [DEBUG] QUERY OK source="tms_terminals" db=70.4ms idle=6.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 13:25:08], 64] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:174 [2026-09-02 13:25:08.801] [DEBUG] QUERY OK source="app_upgrade_device_statuses" db=14.9ms idle=60.9ms SELECT a0.`id`, a0.`config_id`, a0.`device_id`, a0.`device_sn`, a0.`vendor`, a0.`model`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`update_result`, a0.`status`, a0.`remark`, a0.`finish_time`, a0.`pushed_time`, a0.`retry_count`, a0.`inserted_at`, a0.`updated_at` FROM `app_upgrade_device_statuses` AS a0 WHERE ((a0.`device_sn` = ?) AND a0.`status` IN ('pending','pushed')) ["28260702280001"] ↳ TmsCore.TerminalManagement.AppUpgradeService.maybe_repush_for_device/1, at: lib/tms_core/terminal_management/app_upgrade_service.ex:148 [2026-09-02 13:25:08.906] [DEBUG] QUERY OK db=94.5ms queue=7.9ms idle=20.5ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [64, "organization_id", "2026-09-02T21:24:49Z", ~N[2026-09-02 13:25:08], ~N[2026-09-02 13:25:08]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:179 [2026-09-02 13:25:08.906] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 106559, oid: "organization_id", upload_time: "2026-09-02T21:24:49Z", terminal_id: 64, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:25:08], updated_at: ~N[2026-09-02 13:25:08]} [2026-09-02 13:25:08.906] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-09-02T21:24:49Z", "value" => "online"} [2026-09-02 13:25:08.983] [DEBUG] QUERY OK db=73.5ms queue=1.4ms idle=106.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-09-02T21:24:49Z", "online", "status", 106559, ~N[2026-09-02 13:25:08], ~N[2026-09-02 13:25:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:25:08.983] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093216, itemkey: "status", value: "online", timestamp: "2026-09-02T21:24:49Z", message: "Terminal status update", status_log_id: 106559, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:25:08], updated_at: ~N[2026-09-02 13:25:08]}} [2026-09-02 13:25:08.985] [INFO ] Setting terminal 28260702280001 status to 'online' from status itemkey [2026-09-02 13:25:08.985] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-09-02T21:24:49Z", "value" => "100"} [2026-09-02 13:25:09.073] [DEBUG] QUERY OK db=88.2ms idle=79.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-09-02T21:24:49Z", "100", "battery", 106559, ~N[2026-09-02 13:25:08], ~N[2026-09-02 13:25:08]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:25:09.077] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093219, itemkey: "battery", value: "100", timestamp: "2026-09-02T21:24:49Z", message: "Battery level", status_log_id: 106559, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:25:08], updated_at: ~N[2026-09-02 13:25:08]}} [2026-09-02 13:25:09.077] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-09-02T21:24:49Z", "value" => "online"} [2026-09-02 13:25:09.173] [DEBUG] QUERY OK db=93.7ms queue=2.1ms idle=94.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-09-02T21:24:49Z", "online", "network", 106559, ~N[2026-09-02 13:25:09], ~N[2026-09-02 13:25:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:25:09.174] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093223, itemkey: "network", value: "online", timestamp: "2026-09-02T21:24:49Z", message: "Network connectivity", status_log_id: 106559, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:25:09], updated_at: ~N[2026-09-02 13:25:09]}} [2026-09-02 13:25:09.174] [INFO ] Setting terminal 28260702280001 status to 'online' from network itemkey [2026-09-02 13:25:09.174] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-09-02T21:24:49Z", "value" => "0"} [2026-09-02 13:25:09.275] [DEBUG] QUERY OK db=94.4ms queue=1.4ms idle=106.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-09-02T21:24:49Z", "0", "cpu", 106559, ~N[2026-09-02 13:25:09], ~N[2026-09-02 13:25:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:25:09.280] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093226, itemkey: "cpu", value: "0", timestamp: "2026-09-02T21:24:49Z", message: "CPU usage percentage", status_log_id: 106559, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:25:09], updated_at: ~N[2026-09-02 13:25:09]}} [2026-09-02 13:25:09.280] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-09-02T21:24:49Z", "value" => "1.0.0"} [2026-09-02 13:25:09.358] [DEBUG] QUERY OK db=77.2ms idle=107.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-09-02T21:24:49Z", "1.0.0", "parameter_config", 106559, ~N[2026-09-02 13:25:09], ~N[2026-09-02 13:25:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:25:09.358] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093232, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-09-02T21:24:49Z", message: "Current parameters version", status_log_id: 106559, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:25:09], updated_at: ~N[2026-09-02 13:25:09]}} [2026-09-02 13:25:09.360] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-09-02T21:24:49Z", "value" => "1.0.1"} [2026-09-02 13:25:09.433] [DEBUG] QUERY OK db=71.9ms idle=86.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-09-02T21:24:49Z", "1.0.1", "emv_config", 106559, ~N[2026-09-02 13:25:09], ~N[2026-09-02 13:25:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:25:09.435] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093236, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-09-02T21:24:49Z", message: "Current EMV config version", status_log_id: 106559, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:25:09], updated_at: ~N[2026-09-02 13:25:09]}} [2026-09-02 13:25:09.435] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-09-02T21:24:49Z", "value" => ""} [2026-09-02 13:25:09.513] [DEBUG] QUERY OK db=75.2ms queue=2.5ms idle=77.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-09-02T21:24:49Z", "keys_config", 106559, ~N[2026-09-02 13:25:09], ~N[2026-09-02 13:25:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:25:09.526] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093239, itemkey: "keys_config", value: nil, timestamp: "2026-09-02T21:24:49Z", message: "Current keys config version", status_log_id: 106559, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:25:09], updated_at: ~N[2026-09-02 13:25:09]}} [2026-09-02 13:25:09.529] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-09-02T21:24:49Z", "value" => "3.8.7.1-SNAPSHOT-SR800"} [2026-09-02 13:25:09.609] [DEBUG] QUERY OK db=68.5ms queue=10.6ms idle=96.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-09-02T21:24:49Z", "3.8.7.1-SNAPSHOT-SR800", "application", 106559, ~N[2026-09-02 13:25:09], ~N[2026-09-02 13:25:09]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:25:09.609] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093243, itemkey: "application", value: "3.8.7.1-SNAPSHOT-SR800", timestamp: "2026-09-02T21:24:49Z", message: "Current application version", status_log_id: 106559, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:25:09], updated_at: ~N[2026-09-02 13:25:09]}} [2026-09-02 13:25:09.610] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"169573","status":"failed","timestamp":1788384290393,"type":"tms_response"} [2026-09-02 13:25:09.616] [INFO ] Processing file download response for device 28260702280001, request_id: 169573 [2026-09-02 13:25:09.622] [DEBUG] QUERY OK source="file_download_logs" db=5.0ms queue=0.8ms idle=104.5ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["169573"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:25:09.622] [INFO ] No file download log for request_id 169573; response not attached to a push [2026-09-02 13:25:09.623] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:25:09.623136Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "169573", "status" => "failed", "timestamp" => 1788384290393, "type" => "tms_response"}, request_id: "169573", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:25:09.623] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"3172","status":"failed","timestamp":1788384290506,"type":"tms_response"} [2026-09-02 13:25:09.625] [INFO ] Processing file download response for device 28260702280001, request_id: 3172 [2026-09-02 13:25:09.633] [DEBUG] QUERY OK source="file_download_logs" db=8.2ms idle=16.7ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["3172"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:25:09.635] [INFO ] No file download log for request_id 3172; response not attached to a push [2026-09-02 13:25:09.644] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:25:09.643891Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "3172", "status" => "failed", "timestamp" => 1788384290506, "type" => "tms_response"}, request_id: "3172", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:25:09.644] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"24195","status":"failed","timestamp":1788384290619,"type":"tms_response"} [2026-09-02 13:25:09.644] [INFO ] Processing file download response for device 28260702280001, request_id: 24195 [2026-09-02 13:25:09.655] [DEBUG] QUERY OK source="file_download_logs" db=3.9ms queue=0.2ms idle=31.2ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["24195"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:25:09.656] [INFO ] No file download log for request_id 24195; response not attached to a push [2026-09-02 13:25:09.657] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:25:09.656917Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "24195", "status" => "failed", "timestamp" => 1788384290619, "type" => "tms_response"}, request_id: "24195", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:25:09.657] [WARN ] Unexpected async result [2026-09-02 13:25:09.657] [WARN ] Unexpected async result [2026-09-02 13:25:09.657] [WARN ] Unexpected async result [2026-09-02 13:25:09.657] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"213314","status":"failed","timestamp":1788384290730,"type":"tms_response"} [2026-09-02 13:25:09.657] [INFO ] Processing file download response for device 28260702280001, request_id: 213314 [2026-09-02 13:25:09.679] [DEBUG] QUERY OK source="file_download_logs" db=2.7ms queue=2.7ms idle=40.6ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["213314"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:25:09.679] [INFO ] No file download log for request_id 213314; response not attached to a push [2026-09-02 13:25:09.683] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:25:09.681557Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "213314", "status" => "failed", "timestamp" => 1788384290730, "type" => "tms_response"}, request_id: "213314", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:25:09.683] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"14018","status":"failed","timestamp":1788384290843,"type":"tms_response"} [2026-09-02 13:25:09.683] [INFO ] Processing file download response for device 28260702280001, request_id: 14018 [2026-09-02 13:25:09.693] [DEBUG] QUERY OK source="file_download_logs" db=9.1ms idle=28.5ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["14018"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:25:09.693] [INFO ] No file download log for request_id 14018; response not attached to a push [2026-09-02 13:25:09.693] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:25:09.693381Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "14018", "status" => "failed", "timestamp" => 1788384290843, "type" => "tms_response"}, request_id: "14018", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:25:09.698] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"44772","status":"failed","timestamp":1788384290956,"type":"tms_response"} [2026-09-02 13:25:09.703] [INFO ] Processing file download response for device 28260702280001, request_id: 44772 [2026-09-02 13:25:09.719] [DEBUG] QUERY OK source="file_download_logs" db=2.8ms queue=3.8ms idle=33.2ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["44772"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:25:09.720] [INFO ] No file download log for request_id 44772; response not attached to a push [2026-09-02 13:25:09.720] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:25:09.720162Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "44772", "status" => "failed", "timestamp" => 1788384290956, "type" => "tms_response"}, request_id: "44772", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:25:09.723] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"3236","status":"failed","timestamp":1788384291068,"type":"tms_response"} [2026-09-02 13:25:09.723] [INFO ] Processing file download response for device 28260702280001, request_id: 3236 [2026-09-02 13:25:09.725] [DEBUG] QUERY OK source="file_download_logs" db=2.2ms idle=30.4ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["3236"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:25:09.730] [INFO ] No file download log for request_id 3236; response not attached to a push [2026-09-02 13:25:09.737] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:25:09.730747Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "3236", "status" => "failed", "timestamp" => 1788384291068, "type" => "tms_response"}, request_id: "3236", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:25:10.023] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"5124","status":"failed","timestamp":1788384291180,"type":"tms_response"} [2026-09-02 13:25:10.024] [INFO ] Processing file download response for device 28260702280001, request_id: 5124 [2026-09-02 13:25:10.025] [DEBUG] QUERY OK source="file_download_logs" db=0.6ms idle=298.5ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["5124"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:25:10.025] [INFO ] No file download log for request_id 5124; response not attached to a push [2026-09-02 13:25:10.025] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:25:10.025411Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "5124", "status" => "failed", "timestamp" => 1788384291180, "type" => "tms_response"}, request_id: "5124", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:25:10.043] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"169669","status":"failed","timestamp":1788384291292,"type":"tms_response"} [2026-09-02 13:25:10.043] [INFO ] Processing file download response for device 28260702280001, request_id: 169669 [2026-09-02 13:25:10.057] [DEBUG] QUERY OK source="file_download_logs" db=5.9ms queue=1.5ms idle=292.8ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["169669"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:25:10.057] [INFO ] No file download log for request_id 169669; response not attached to a push [2026-09-02 13:25:10.057] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:25:10.057495Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "169669", "status" => "failed", "timestamp" => 1788384291292, "type" => "tms_response"}, request_id: "169669", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:25:10.057] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"44868","status":"failed","timestamp":1788384291405,"type":"tms_response"} [2026-09-02 13:25:10.057] [INFO ] Processing file download response for device 28260702280001, request_id: 44868 [2026-09-02 13:25:10.068] [DEBUG] QUERY OK source="file_download_logs" db=10.4ms idle=32.9ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["44868"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:25:10.072] [INFO ] No file download log for request_id 44868; response not attached to a push [2026-09-02 13:25:10.079] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:25:10.079155Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "44868", "status" => "failed", "timestamp" => 1788384291405, "type" => "tms_response"}, request_id: "44868", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:25:10.431] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"6499","status":"failed","timestamp":1788384291526,"type":"tms_response"} [2026-09-02 13:25:10.431] [INFO ] Processing file download response for device 28260702280001, request_id: 6499 [2026-09-02 13:25:10.440] [DEBUG] QUERY OK source="file_download_logs" db=3.8ms idle=378.8ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["6499"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:25:10.440] [INFO ] No file download log for request_id 6499; response not attached to a push [2026-09-02 13:25:10.440] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:25:10.440282Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "6499", "status" => "failed", "timestamp" => 1788384291526, "type" => "tms_response"}, request_id: "6499", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:25:10.483] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"8931","status":"failed","timestamp":1788384291637,"type":"tms_response"} [2026-09-02 13:25:10.483] [INFO ] Processing file download response for device 28260702280001, request_id: 8931 [2026-09-02 13:25:10.486] [DEBUG] QUERY OK source="file_download_logs" db=2.2ms idle=415.6ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["8931"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:25:10.486] [INFO ] No file download log for request_id 8931; response not attached to a push [2026-09-02 13:25:10.486] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:25:10.486698Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "8931", "status" => "failed", "timestamp" => 1788384291637, "type" => "tms_response"}, request_id: "8931", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:25:46.175] [INFO ] Running offline device check... [2026-09-02 13:25:46.176] [INFO ] Starting offline device check... [2026-09-02 13:25:46.179] [DEBUG] QUERY OK source="tms_terminals" db=1.6ms queue=1.1ms idle=337.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1234 [2026-09-02 13:25:46.182] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=0.4ms idle=104.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [1] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:25:46.188] [INFO ] Starting scheduled rule validation [2026-09-02 13:25:46.188] [DEBUG] Validating missing assignments [2026-09-02 13:25:46.215] [DEBUG] QUERY OK source="terminal_group_rules" db=0.5ms queue=1.2ms idle=30.6ms SELECT t0.`id`, t0.`rule_name`, t0.`rule_type`, t0.`field_name`, t0.`operator`, t0.`value`, t0.`priority`, t0.`is_active`, t0.`conditions`, t0.`group_id`, t0.`inserted_at`, t0.`updated_at` FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) ORDER BY t0.`priority`, t0.`inserted_at` DESC [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_all_rules/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:194 [2026-09-02 13:25:46.219] [DEBUG] QUERY OK source="tms_terminals" db=3.2ms idle=0.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.apply_all_rules/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:196 [2026-09-02 13:25:46.220] [DEBUG] Re-applied 0 rules during validation [2026-09-02 13:25:46.220] [DEBUG] Validating invalid assignments [2026-09-02 13:25:46.220] [DEBUG] Validating rule consistency [2026-09-02 13:25:46.221] [DEBUG] Updating group terminal counts [2026-09-02 13:25:46.231] [DEBUG] QUERY OK source="terminal_groups" db=1.7ms queue=0.6ms idle=9.3ms SELECT count(t0.`id`) FROM `terminal_groups` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:248 [2026-09-02 13:25:46.234] [DEBUG] QUERY OK source="terminal_groups" db=0.6ms queue=1.7ms idle=0.3ms SELECT count(t0.`id`) FROM `terminal_groups` AS t0 WHERE (t0.`is_active` = TRUE) [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:249 [2026-09-02 13:25:46.240] [DEBUG] QUERY OK source="terminal_groups" db=1.7ms queue=4.2ms idle=0.2ms SELECT t0.`group_type`, count(t0.`id`) FROM `terminal_groups` AS t0 GROUP BY t0.`group_type` [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:255 [2026-09-02 13:25:46.241] [DEBUG] QUERY OK source="terminal_group_rules" db=0.3ms queue=0.5ms idle=0.3ms SELECT count(t0.`id`) FROM `terminal_group_rules` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:258 [2026-09-02 13:25:46.245] [DEBUG] QUERY OK source="terminal_group_rules" db=1.3ms queue=2.0ms idle=0.2ms SELECT count(t0.`id`) FROM `terminal_group_rules` AS t0 WHERE (t0.`is_active` = TRUE) [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:259 [2026-09-02 13:25:46.250] [DEBUG] QUERY OK source="tms_terminals" db=66.8ms idle=4.1ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 13:25:46], 1] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1283 [2026-09-02 13:25:46.251] [INFO ] Terminal 61250415798001 back online [2026-09-02 13:25:46.252] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=6.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:25:46.254] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:25:46.255] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:25:46.257] [DEBUG] QUERY OK source="terminal_group_memberships" db=0.5ms queue=0.8ms idle=0.6ms SELECT count(t0.`id`) FROM `terminal_group_memberships` AS t0 [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:261 [2026-09-02 13:25:46.259] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.2ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:25:46.259] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:25:46.260] [DEBUG] QUERY OK source="terminal_group_memberships" db=1.1ms queue=0.5ms idle=0.4ms SELECT count(t0.`id`) FROM `terminal_group_memberships` AS t0 WHERE (t0.`is_active` = TRUE) [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:262 [2026-09-02 13:25:46.261] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=0.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:25:46.262] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:25:46.263] [DEBUG] QUERY OK source="terminal_group_memberships" db=1.2ms queue=1.5ms idle=0.6ms SELECT t0.`assignment_type`, count(t0.`id`) FROM `terminal_group_memberships` AS t0 WHERE (t0.`is_active` = TRUE) GROUP BY t0.`assignment_type` [] ↳ TmsCore.TerminalManagement.TerminalGroupService.get_group_statistics/0, at: lib/tms_core/terminal_management/terminal_group_service.ex:269 [2026-09-02 13:25:46.264] [DEBUG] Current group statistics: %{rules: %{active: 0, total: 0}, groups: %{active: 4, total: 4, by_type: %{"custom" => 4}}, assignments: %{active: 2, total: 2, by_type: %{"manual" => 2}}} [2026-09-02 13:25:46.264] [INFO ] Rule validation completed - applied 0 fixes [2026-09-02 13:25:46.265] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:25:46.268] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms queue=0.1ms idle=4.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:25:46.270] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=0.1ms idle=6.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:25:46.272] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=3.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:25:46.274] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=2.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:25:46.275] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:25:46.277] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:25:46.279] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms queue=0.3ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:25:46.282] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.0ms idle=2.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:25:46.286] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.4ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:25:46.287] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=4.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:25:46.288] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:25:46.289] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:25:46.290] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:25:46.291] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.2ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:25:46.292] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:25:46.293] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:25:46.295] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:25:46.296] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:25:46.297] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:25:46.298] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=0.4ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:25:46.299] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:25:46.300] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:25:46.301] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:25:46.302] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:25:46.306] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.6ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:25:46.309] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=5.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:25:46.312] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms idle=3.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:25:46.313] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=2.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:25:46.315] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms queue=0.1ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:25:46.318] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.5ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:25:46.321] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=3.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:25:46.324] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms idle=4.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:25:46.327] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=6.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:25:46.329] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms queue=0.3ms idle=4.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:25:46.333] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.5ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:25:46.336] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.8ms idle=4.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:25:46.337] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=3.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:25:46.340] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.4ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:25:46.343] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms idle=3.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:25:46.345] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=3.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:25:46.346] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=3.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:25:46.347] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:25:46.348] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:25:46.350] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [82] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:25:46.351] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [83] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:25:46.351] [INFO ] Offline device check completed. Found 51 offline devices, updated 1 statuses. [2026-09-02 13:25:46.352] [INFO ] Offline device check completed successfully [2026-09-02 13:27:36.977] [DEBUG] HANDLE EVENT "expand_merchant" in PlatformWeb.SettlementLive.MisApproval Parameters: %{"mid" => "425590250000000"} [2026-09-02 13:27:36.979] [DEBUG] QUERY OK source="settlement_mis_items" db=1.8ms idle=1125.7ms SELECT s0.`id`, s0.`settlement_mis_id`, s0.`core_transaction_id`, s0.`merchant_mid`, s0.`merchant_id`, s0.`merchant_name`, s0.`merchant_ref_number`, s0.`bank_name`, s0.`iban`, s0.`account_number`, s0.`settlement_date`, s0.`rrn`, s0.`tid`, s0.`auth_number`, s0.`transaction_date`, s0.`transaction_type`, s0.`scheme_name`, s0.`card_type_code`, s0.`gross_amount`, s0.`mdr_percentage_rate`, s0.`mdr_amount`, s0.`vat_rate`, s0.`vat_amount`, s0.`interchange_fee`, s0.`adjustment_amount`, s0.`ar_recovery`, s0.`net_payable`, s0.`transaction_count`, s0.`total_gross_amount`, s0.`total_mdr_amount`, s0.`total_vat_amount`, s0.`total_interchange_fee`, s0.`total_net_settlement_amount`, s0.`risk_status`, s0.`exception_type`, s0.`mpr_sent`, s0.`margin_contribution`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis_items` AS s0 WHERE ((s0.`settlement_mis_id` = ?) AND (s0.`merchant_mid` = ?)) ORDER BY s0.`card_type_code` [315, "425590250000000"] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:398 [2026-09-02 13:27:36.980] [DEBUG] QUERY OK source="merchant_adjustments" db=0.9ms idle=373.0ms SELECT m0.`id`, m0.`merchant_mid`, m0.`merchant_name`, m0.`adjustment_date`, m0.`debit_credit`, m0.`amount`, m0.`currency`, m0.`adjustment_type`, m0.`description`, m0.`settlement_mis_id`, m0.`status`, m0.`applied_at`, m0.`cancelled_at`, m0.`cancel_reason`, m0.`approval_status`, m0.`level1_reviewed_by`, m0.`level1_reviewed_at`, m0.`level2_approved_by`, m0.`level2_approved_at`, m0.`rejected_by`, m0.`rejected_at`, m0.`rejection_reason`, m0.`created_by`, m0.`updated_by`, m0.`inserted_at`, m0.`updated_at` FROM `merchant_adjustments` AS m0 WHERE (m0.`adjustment_date` = ?) AND (m0.`approval_status` = 'approved') [~D[2026-08-06]] ↳ SettlementCore.Context.list_approved_adjustments_by_date/1, at: lib/settlement_core/context.ex:971 [2026-09-02 13:27:36.983] [DEBUG] QUERY OK source="tid_masters" db=0.9ms queue=1.0ms idle=1.4ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?)) ["425590250000000"] ↳ PlatformWeb.SettlementLive.MisApproval.merchant_name_map/1, at: lib/platform_web/live/settlement_live/mis_approval.ex:777 [2026-09-02 13:27:36.985] [DEBUG] QUERY OK source="core_transactions" db=2.1ms idle=3.0ms SELECT c0.`id`, c0.`source_type`, c0.`source_ref_id`, c0.`settlement_batch_id`, c0.`rrn`, c0.`tid`, c0.`auth_number`, c0.`stan`, c0.`invoice_number`, c0.`batch_number`, c0.`merchant_mid`, c0.`merchant_id`, c0.`merchant_ref_number`, c0.`transaction_amount`, c0.`transaction_currency`, c0.`transaction_type`, c0.`transaction_datetime`, c0.`masked_pan`, c0.`scheme_name`, c0.`card_holder_name`, c0.`customer_mobile`, c0.`customer_country`, c0.`mcc_code`, c0.`card_type_id`, c0.`card_type_code`, c0.`mdr_template_id`, c0.`mdr_percentage_rate`, c0.`mdr_fixed_fee`, c0.`mdr_minimum_fee`, c0.`mdr_maximum_fee`, c0.`mdr_amount`, c0.`vat_rate`, c0.`vat_amount`, c0.`interchange_fee`, c0.`interchange_template_id`, c0.`gross_amount`, c0.`net_settlement_amount`, c0.`settlement_status`, c0.`switch_settled_date`, c0.`released_for_settlement_date`, c0.`risk_hold`, c0.`risk_rule_name`, c0.`chargeback_hold`, c0.`exception_type`, c0.`refund_status`, c0.`refund_date`, c0.`reversal_status`, c0.`reversal_date`, c0.`store_id`, c0.`dr_cr`, c0.`qr_tag`, c0.`bank_transfer_reference`, c0.`bank_transfer_date`, c0.`spare_fields`, c0.`inserted_at`, c0.`updated_at` FROM `core_transactions` AS c0 WHERE (DATE(c0.`transaction_datetime`) = ?) AND ((c0.`risk_hold` = TRUE) OR (c0.`settlement_status` = 'exception_hold')) AND (c0.`merchant_mid` = ?) ORDER BY c0.`merchant_mid`, c0.`transaction_datetime` [~D[2026-08-06], "425590250000000"] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:420 [2026-09-02 13:27:36.986] [DEBUG] Replied in 8ms [2026-09-02 13:27:37.700] [INFO ] Received status update for terminal 28260702280001 [2026-09-02 13:27:37.700] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-09-02T21:27:19Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-09-02T21:27:19Z","value":"100"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-09-02T21:27:19Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-09-02T21:27:19Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-09-02T21:27:19Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-09-02T21:27:19Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-09-02T21:27:19Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-09-02T21:27:19Z","value":"3.8.7.1-SNAPSHOT-SR800"}],"model":"SR800 A20","oid":"organization_id","sn":"28260702280001","uploadTime":"2026-09-02T21:27:19Z","vendor":"MoreFun"} [2026-09-02 13:27:37.700] [INFO ] Decoded JSON: %{"model" => "SR800 A20", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-09-02T21:27:19Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-09-02T21:27:19Z", "value" => "100"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-09-02T21:27:19Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-09-02T21:27:19Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-09-02T21:27:19Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-09-02T21:27:19Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-09-02T21:27:19Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-09-02T21:27:19Z", "value" => "3.8.7.1-SNAPSHOT-SR800"}], "sn" => "28260702280001", "uploadTime" => "2026-09-02T21:27:19Z", "vendor" => "MoreFun"} [2026-09-02 13:27:37.701] [INFO ] Extracted versions for 28260702280001: %{application: "3.8.7.1-SNAPSHOT-SR800", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-09-02 13:27:37.701] [INFO ] Detected missing versions for 28260702280001, triggering auto-push [2026-09-02 13:27:37.701] [INFO ] AutoPushService: Triggering auto-push for 28260702280001 (MoreFun SR800 A20) - missing version [2026-09-02 13:27:37.702] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms queue=0.1ms idle=715.8ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["MoreFun", "SR800 A20"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-09-02 13:27:37.703] [DEBUG] QUERY OK source="tms_terminals" db=0.4ms idle=93.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["28260702280001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-09-02 13:27:37.704] [DEBUG] QUERY OK source="parameter_template_values" db=0.5ms idle=1.5ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [15] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-09-02 13:27:37.710] [DEBUG] QUERY OK source="parameter_definitions" db=5.2ms queue=0.6ms idle=1.4ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-09-02 13:27:37.792] [DEBUG] QUERY OK db=76.9ms queue=3.7ms idle=7.1ms INSERT INTO `parameter_push_logs` (`status`,`request_id`,`terminal_id`,`template_id`,`push_type`,`config_type`,`device_vendor`,`device_model`,`parameters_sent`,`log_time`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", 24675, 64, 15, "full", "parameter", "MoreFun", "SR800 A20", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", "PINPAD_MASTER_KEY_INDEX" => "0", "COMM_PORT" => "80", ...}, ~U[2026-09-02 13:27:37Z], "missing_version", "1.0.0", ~N[2026-09-02 13:27:37], ~N[2026-09-02 13:27:37]] ↳ TmsCore.TerminalManagement.AutoPushService.push_generic_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:235 [2026-09-02 13:27:37.793] [INFO ] AutoPushService: Created push log 61170 for parameters (template: 15) [2026-09-02 13:27:37.793] [INFO ] SR600 MQTT Command: %{"command" => "file_download", "merchant_config" => "true", "request_id" => 24675, "retry_count" => "3", "version" => "1.0.0"} [2026-09-02 13:27:37.793] [INFO ] AutoPushService: Sending parameter push to 28260702280001 on topic: /ota/pFppbioOCKlo5c8E/28260702280001/update [2026-09-02 13:27:37.794] [INFO ] AutoPushService: Parameter push sent successfully to 28260702280001 [2026-09-02 13:27:37.846] [DEBUG] QUERY OK db=51.7ms idle=83.6ms INSERT INTO `parameter_push_logs` (`status`,`request_id`,`terminal_id`,`push_type`,`config_type`,`device_vendor`,`device_model`,`log_time`,`trigger_reason`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?) ["pending", 13826, 64, "full", "emv_config", "MoreFun", "SR800 A20", ~U[2026-09-02 13:27:37Z], "missing_version", ~N[2026-09-02 13:27:37], ~N[2026-09-02 13:27:37]] ↳ TmsCore.TerminalManagement.AutoPushService.push_regular_config/5, at: lib/tms_core/terminal_management/auto_push_service.ex:427 [2026-09-02 13:27:37.846] [INFO ] AutoPushService: Created push log for emv_config [2026-09-02 13:27:37.846] [INFO ] SR600 MQTT Command: %{"command" => "file_download", "merchant_config" => "true", "request_id" => 13826, "retry_count" => "3"} [2026-09-02 13:27:37.846] [INFO ] AutoPushService: Sending emv_config push to 28260702280001 on topic: /ota/pFppbioOCKlo5c8E/28260702280001/update [2026-09-02 13:27:37.847] [INFO ] AutoPushService: emv_config push sent successfully to 28260702280001 [2026-09-02 13:27:37.848] [DEBUG] QUERY OK source="config_file_versions" db=1.0ms idle=55.0ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "SR800 A20"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-09-02 13:27:37.848] [INFO ] KeysConfigService: Generating keys.json for 28260702280001 (SR800 A20) [2026-09-02 13:27:37.849] [DEBUG] QUERY OK source="tms_terminals" db=0.7ms idle=2.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["28260702280001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-09-02 13:27:37.849] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 28260702280001 with params: %{"kekKcv" => "112233", "model" => "SR800 A20", "serialNumber" => "28260702280001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-09-02 13:27:37.855] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-09-02 13:27:37.855] [ERROR] KeysConfigService: Failed to generate keys for 28260702280001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 13:27:37.857] [ERROR] AutoPushService: Failed to generate keys.json for 28260702280001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 13:27:37.914] [DEBUG] QUERY OK db=56.1ms idle=9.6ms INSERT INTO `parameter_push_logs` (`status`,`request_id`,`terminal_id`,`push_type`,`config_type`,`device_vendor`,`device_model`,`log_time`,`trigger_reason`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?) ["pending", 24771, 64, "full", "application", "MoreFun", "SR800 A20", ~U[2026-09-02 13:27:37Z], "missing_version", ~N[2026-09-02 13:27:37], ~N[2026-09-02 13:27:37]] ↳ TmsCore.TerminalManagement.AutoPushService.push_regular_config/5, at: lib/tms_core/terminal_management/auto_push_service.ex:427 [2026-09-02 13:27:37.914] [INFO ] AutoPushService: Created push log for application [2026-09-02 13:27:37.914] [INFO ] SR600 MQTT Command: %{"command" => "file_download", "merchant_config" => "true", "request_id" => 24771, "retry_count" => "3"} [2026-09-02 13:27:37.915] [INFO ] AutoPushService: Sending application push to 28260702280001 on topic: /ota/pFppbioOCKlo5c8E/28260702280001/update [2026-09-02 13:27:37.915] [INFO ] AutoPushService: application push sent successfully to 28260702280001 [2026-09-02 13:27:37.915] [INFO ] AutoPushService: Auto-push completed for 28260702280001 [2026-09-02 13:27:37.916] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms idle=66.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["28260702280001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:140 [2026-09-02 13:27:37.920] [INFO ] Terminal updated: 28260702280001 [2026-09-02 13:27:37.921] [DEBUG] QUERY OK source="tms_terminals" db=0.5ms queue=0.1ms idle=6.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-09-02 13:27:37], 64] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:164 [2026-09-02 13:27:37.922] [DEBUG] QUERY OK source="parameter_templates" db=0.3ms idle=5.1ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) ORDER BY p0.`updated_at` DESC LIMIT 1 ["MoreFun", "SR800 A20"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_parameter_version/2, at: lib/tms_core/terminal_management/version_compliance_checker.ex:105 [2026-09-02 13:27:37.926] [DEBUG] QUERY OK source="config_file_versions" db=3.7ms idle=0.8ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "SR800 A20"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-09-02 13:27:37.927] [DEBUG] QUERY OK source="config_file_versions" db=1.4ms idle=4.3ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "SR800 A20"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-09-02 13:27:37.928] [INFO ] VersionComplianceChecker: 28260702280001 — outdated configs: [{:application, "3.8.7.1-SNAPSHOT-SR800", "3.8.5"}] [2026-09-02 13:27:37.959] [DEBUG] QUERY OK source="parameter_push_logs" db=30.7ms idle=2.2ms SELECT TRUE FROM `parameter_push_logs` AS p0 WHERE ((((p0.`terminal_id` = ?) AND (p0.`config_type` = ?)) AND (p0.`inserted_at` >= ?)) AND p0.`status` IN ('pending','sent')) LIMIT 1 [64, "application", ~N[2026-09-02 12:57:37]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-09-02 13:27:37.959] [INFO ] VersionComplianceChecker: Skipping application re-push for 28260702280001 (push already in-flight or within cooldown) [2026-09-02 13:27:37.965] [DEBUG] QUERY OK source="tms_terminals" db=5.7ms idle=32.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["28260702280001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:1184 [2026-09-02 13:27:38.030] [DEBUG] QUERY OK source="tms_terminals" db=64.3ms idle=6.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 13:27:37], 64] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:174 [2026-09-02 13:27:38.032] [DEBUG] QUERY OK source="app_upgrade_device_statuses" db=1.7ms queue=0.2ms idle=65.4ms SELECT a0.`id`, a0.`config_id`, a0.`device_id`, a0.`device_sn`, a0.`vendor`, a0.`model`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`update_result`, a0.`status`, a0.`remark`, a0.`finish_time`, a0.`pushed_time`, a0.`retry_count`, a0.`inserted_at`, a0.`updated_at` FROM `app_upgrade_device_statuses` AS a0 WHERE ((a0.`device_sn` = ?) AND a0.`status` IN ('pending','pushed')) ["28260702280001"] ↳ TmsCore.TerminalManagement.AppUpgradeService.maybe_repush_for_device/1, at: lib/tms_core/terminal_management/app_upgrade_service.ex:148 [2026-09-02 13:27:38.104] [DEBUG] QUERY OK db=69.5ms idle=4.7ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [64, "organization_id", "2026-09-02T21:27:19Z", ~N[2026-09-02 13:27:38], ~N[2026-09-02 13:27:38]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:179 [2026-09-02 13:27:38.105] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 106561, oid: "organization_id", upload_time: "2026-09-02T21:27:19Z", terminal_id: 64, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:27:38], updated_at: ~N[2026-09-02 13:27:38]} [2026-09-02 13:27:38.105] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-09-02T21:27:19Z", "value" => "online"} [2026-09-02 13:27:38.182] [DEBUG] QUERY OK db=75.6ms idle=73.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-09-02T21:27:19Z", "online", "status", 106561, ~N[2026-09-02 13:27:38], ~N[2026-09-02 13:27:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:27:38.182] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093247, itemkey: "status", value: "online", timestamp: "2026-09-02T21:27:19Z", message: "Terminal status update", status_log_id: 106561, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:27:38], updated_at: ~N[2026-09-02 13:27:38]}} [2026-09-02 13:27:38.182] [INFO ] Setting terminal 28260702280001 status to 'online' from status itemkey [2026-09-02 13:27:38.183] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-09-02T21:27:19Z", "value" => "100"} [2026-09-02 13:27:38.251] [DEBUG] QUERY OK db=67.5ms idle=79.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-09-02T21:27:19Z", "100", "battery", 106561, ~N[2026-09-02 13:27:38], ~N[2026-09-02 13:27:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:27:38.251] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093251, itemkey: "battery", value: "100", timestamp: "2026-09-02T21:27:19Z", message: "Battery level", status_log_id: 106561, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:27:38], updated_at: ~N[2026-09-02 13:27:38]}} [2026-09-02 13:27:38.251] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-09-02T21:27:19Z", "value" => "online"} [2026-09-02 13:27:38.323] [DEBUG] QUERY OK db=71.0ms idle=70.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-09-02T21:27:19Z", "online", "network", 106561, ~N[2026-09-02 13:27:38], ~N[2026-09-02 13:27:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:27:38.323] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093253, itemkey: "network", value: "online", timestamp: "2026-09-02T21:27:19Z", message: "Network connectivity", status_log_id: 106561, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:27:38], updated_at: ~N[2026-09-02 13:27:38]}} [2026-09-02 13:27:38.323] [INFO ] Setting terminal 28260702280001 status to 'online' from network itemkey [2026-09-02 13:27:38.323] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-09-02T21:27:19Z", "value" => "0"} [2026-09-02 13:27:38.390] [DEBUG] QUERY OK db=65.1ms idle=72.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-09-02T21:27:19Z", "0", "cpu", 106561, ~N[2026-09-02 13:27:38], ~N[2026-09-02 13:27:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:27:38.390] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093257, itemkey: "cpu", value: "0", timestamp: "2026-09-02T21:27:19Z", message: "CPU usage percentage", status_log_id: 106561, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:27:38], updated_at: ~N[2026-09-02 13:27:38]}} [2026-09-02 13:27:38.390] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-09-02T21:27:19Z", "value" => "1.0.0"} [2026-09-02 13:27:38.453] [DEBUG] QUERY OK db=58.8ms queue=0.1ms idle=70.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-09-02T21:27:19Z", "1.0.0", "parameter_config", 106561, ~N[2026-09-02 13:27:38], ~N[2026-09-02 13:27:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:27:38.453] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093262, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-09-02T21:27:19Z", message: "Current parameters version", status_log_id: 106561, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:27:38], updated_at: ~N[2026-09-02 13:27:38]}} [2026-09-02 13:27:38.453] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-09-02T21:27:19Z", "value" => "1.0.1"} [2026-09-02 13:27:38.538] [DEBUG] QUERY OK db=84.6ms idle=64.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-09-02T21:27:19Z", "1.0.1", "emv_config", 106561, ~N[2026-09-02 13:27:38], ~N[2026-09-02 13:27:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:27:38.539] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093266, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-09-02T21:27:19Z", message: "Current EMV config version", status_log_id: 106561, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:27:38], updated_at: ~N[2026-09-02 13:27:38]}} [2026-09-02 13:27:38.539] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-09-02T21:27:19Z", "value" => ""} [2026-09-02 13:27:38.621] [DEBUG] QUERY OK db=81.9ms idle=0.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-09-02T21:27:19Z", "keys_config", 106561, ~N[2026-09-02 13:27:38], ~N[2026-09-02 13:27:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:27:38.621] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093269, itemkey: "keys_config", value: nil, timestamp: "2026-09-02T21:27:19Z", message: "Current keys config version", status_log_id: 106561, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:27:38], updated_at: ~N[2026-09-02 13:27:38]}} [2026-09-02 13:27:38.622] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-09-02T21:27:19Z", "value" => "3.8.7.1-SNAPSHOT-SR800"} [2026-09-02 13:27:38.756] [DEBUG] QUERY OK db=133.1ms idle=0.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-09-02T21:27:19Z", "3.8.7.1-SNAPSHOT-SR800", "application", 106561, ~N[2026-09-02 13:27:38], ~N[2026-09-02 13:27:38]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:27:38.756] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093273, itemkey: "application", value: "3.8.7.1-SNAPSHOT-SR800", timestamp: "2026-09-02T21:27:19Z", message: "Current application version", status_log_id: 106561, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:27:38], updated_at: ~N[2026-09-02 13:27:38]}} [2026-09-02 13:27:38.756] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"164420","status":"failed","timestamp":1788384440149,"type":"tms_response"} [2026-09-02 13:27:38.757] [INFO ] Processing file download response for device 28260702280001, request_id: 164420 [2026-09-02 13:27:38.760] [DEBUG] QUERY OK source="file_download_logs" db=1.3ms idle=88.6ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["164420"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:27:38.761] [INFO ] No file download log for request_id 164420; response not attached to a push [2026-09-02 13:27:38.761] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:27:38.761115Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "164420", "status" => "failed", "timestamp" => 1788384440149, "type" => "tms_response"}, request_id: "164420", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:27:38.761] [WARN ] Unexpected async result [2026-09-02 13:27:38.761] [WARN ] Unexpected async result [2026-09-02 13:27:38.761] [WARN ] Unexpected async result [2026-09-02 13:27:39.098] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"3684","status":"failed","timestamp":1788384440263,"type":"tms_response"} [2026-09-02 13:27:39.099] [INFO ] Processing file download response for device 28260702280001, request_id: 3684 [2026-09-02 13:27:39.099] [DEBUG] QUERY OK source="file_download_logs" db=0.5ms idle=343.8ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["3684"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:27:39.100] [INFO ] No file download log for request_id 3684; response not attached to a push [2026-09-02 13:27:39.100] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:27:39.100138Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "3684", "status" => "failed", "timestamp" => 1788384440263, "type" => "tms_response"}, request_id: "3684", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:27:39.111] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"24675","status":"failed","timestamp":1788384440374,"type":"tms_response"} [2026-09-02 13:27:39.111] [INFO ] Processing file download response for device 28260702280001, request_id: 24675 [2026-09-02 13:27:39.117] [DEBUG] QUERY OK source="file_download_logs" db=0.3ms queue=0.1ms idle=355.9ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["24675"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:27:39.117] [INFO ] No file download log for request_id 24675; response not attached to a push [2026-09-02 13:27:39.117] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:27:39.117623Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "24675", "status" => "failed", "timestamp" => 1788384440374, "type" => "tms_response"}, request_id: "24675", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:27:39.117] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"9251","status":"failed","timestamp":1788384440486,"type":"tms_response"} [2026-09-02 13:27:39.118] [INFO ] Processing file download response for device 28260702280001, request_id: 9251 [2026-09-02 13:27:39.122] [DEBUG] QUERY OK source="file_download_logs" db=2.9ms queue=0.2ms idle=18.8ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["9251"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:27:39.122] [INFO ] No file download log for request_id 9251; response not attached to a push [2026-09-02 13:27:39.122] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:27:39.122244Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "9251", "status" => "failed", "timestamp" => 1788384440486, "type" => "tms_response"}, request_id: "9251", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:27:39.506] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"205379","status":"failed","timestamp":1788384440598,"type":"tms_response"} [2026-09-02 13:27:39.506] [INFO ] Processing file download response for device 28260702280001, request_id: 205379 [2026-09-02 13:27:39.507] [DEBUG] QUERY OK source="file_download_logs" db=0.7ms idle=389.5ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["205379"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:27:39.507] [INFO ] No file download log for request_id 205379; response not attached to a push [2026-09-02 13:27:39.507] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:27:39.507813Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "205379", "status" => "failed", "timestamp" => 1788384440598, "type" => "tms_response"}, request_id: "205379", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:27:39.514] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"13826","status":"failed","timestamp":1788384440710,"type":"tms_response"} [2026-09-02 13:27:39.514] [INFO ] Processing file download response for device 28260702280001, request_id: 13826 [2026-09-02 13:27:39.517] [DEBUG] QUERY OK source="file_download_logs" db=2.2ms queue=0.1ms idle=392.9ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["13826"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:27:39.517] [INFO ] No file download log for request_id 13826; response not attached to a push [2026-09-02 13:27:39.518] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:27:39.518174Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "13826", "status" => "failed", "timestamp" => 1788384440710, "type" => "tms_response"}, request_id: "13826", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:27:39.519] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"14850","status":"failed","timestamp":1788384440823,"type":"tms_response"} [2026-09-02 13:27:39.519] [INFO ] Processing file download response for device 28260702280001, request_id: 14850 [2026-09-02 13:27:39.520] [DEBUG] QUERY OK source="file_download_logs" db=0.7ms idle=12.6ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["14850"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:27:39.521] [INFO ] No file download log for request_id 14850; response not attached to a push [2026-09-02 13:27:39.521] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:27:39.521198Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "14850", "status" => "failed", "timestamp" => 1788384440823, "type" => "tms_response"}, request_id: "14850", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:27:39.528] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"7011","status":"failed","timestamp":1788384440937,"type":"tms_response"} [2026-09-02 13:27:39.528] [INFO ] Processing file download response for device 28260702280001, request_id: 7011 [2026-09-02 13:27:39.531] [DEBUG] QUERY OK source="file_download_logs" db=2.4ms idle=11.5ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["7011"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:27:39.531] [INFO ] No file download log for request_id 7011; response not attached to a push [2026-09-02 13:27:39.531] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:27:39.531679Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "7011", "status" => "failed", "timestamp" => 1788384440937, "type" => "tms_response"}, request_id: "7011", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:27:39.919] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"169765","status":"failed","timestamp":1788384441050,"type":"tms_response"} [2026-09-02 13:27:39.919] [INFO ] Processing file download response for device 28260702280001, request_id: 169765 [2026-09-02 13:27:39.921] [DEBUG] QUERY OK source="file_download_logs" db=0.5ms idle=390.0ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["169765"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:27:39.921] [INFO ] No file download log for request_id 169765; response not attached to a push [2026-09-02 13:27:39.921] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:27:39.921438Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "169765", "status" => "failed", "timestamp" => 1788384441050, "type" => "tms_response"}, request_id: "169765", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:27:39.924] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"24771","status":"failed","timestamp":1788384441170,"type":"tms_response"} [2026-09-02 13:27:39.924] [INFO ] Processing file download response for device 28260702280001, request_id: 24771 [2026-09-02 13:27:39.928] [DEBUG] QUERY OK source="file_download_logs" db=2.6ms idle=251.9ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["24771"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:27:39.928] [INFO ] No file download log for request_id 24771; response not attached to a push [2026-09-02 13:27:39.933] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:27:39.928347Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "24771", "status" => "failed", "timestamp" => 1788384441170, "type" => "tms_response"}, request_id: "24771", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:27:39.941] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"9762","status":"failed","timestamp":1788384441282,"type":"tms_response"} [2026-09-02 13:27:39.941] [INFO ] Processing file download response for device 28260702280001, request_id: 9762 [2026-09-02 13:27:39.943] [DEBUG] QUERY OK source="file_download_logs" db=2.0ms idle=20.5ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["9762"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:27:39.943] [INFO ] No file download log for request_id 9762; response not attached to a push [2026-09-02 13:27:39.944] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:27:39.944128Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "9762", "status" => "failed", "timestamp" => 1788384441282, "type" => "tms_response"}, request_id: "9762", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:27:39.950] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"14882","status":"failed","timestamp":1788384441394,"type":"tms_response"} [2026-09-02 13:27:39.950] [INFO ] Processing file download response for device 28260702280001, request_id: 14882 [2026-09-02 13:27:39.952] [DEBUG] QUERY OK source="file_download_logs" db=1.2ms idle=23.0ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["14882"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:27:39.952] [INFO ] No file download log for request_id 14882; response not attached to a push [2026-09-02 13:27:39.952] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:27:39.952567Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "14882", "status" => "failed", "timestamp" => 1788384441394, "type" => "tms_response"}, request_id: "14882", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:28:43.426] [INFO ] GET /admin/settlements/mis [2026-09-02 13:28:43.440] [DEBUG] Processing with PlatformWeb.SettlementLive.MisApproval.index/2 Parameters: %{} Pipelines: [:browser, :require_authenticated_user] [2026-09-02 13:28:43.446] [DEBUG] QUERY OK source="users_tokens" db=0.8ms idle=1196.6ms SELECT u1.`id`, u1.`email`, u1.`hashed_password`, u1.`confirmed_at`, u1.`role`, u1.`name`, u1.`first_name`, u1.`last_name`, u1.`data`, u1.`inserted_at`, u1.`updated_at` FROM `users_tokens` AS u0 INNER JOIN `users` AS u1 ON u1.`id` = u0.`user_id` WHERE ((u0.`token` = ?) AND (u0.`context` = ?)) AND (u0.`inserted_at` > date_add(?, INTERVAL -(60) day)) [<<213, 32, 140, 146, 229, 21, 137, 113, 114, 76, 126, 65, 60, 16, 236, 111, 126, 32, 254, 167, 187, 35, 180, 237, 118, 110, 98, 232, 176, 39, 166, 51>>, "session", ~U[2026-09-02 13:28:43.445368Z]] ↳ PlatformWeb.UserAuth.fetch_current_user/2, at: lib/platform_web/user_auth.ex:97 [2026-09-02 13:28:43.462] [DEBUG] QUERY OK source="settlement_mis" db=1.7ms idle=1428.5ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 ORDER BY s0.`mis_date` DESC LIMIT 100 [] ↳ PlatformWeb.SettlementLive.MisApproval.load_mis_rows/1, at: lib/platform_web/live/settlement_live/mis_approval.ex:603 [2026-09-02 13:28:43.492] [INFO ] Sent 200 in 65ms [2026-09-02 13:28:45.242] [INFO ] CONNECTED TO Phoenix.LiveView.Socket in 23µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "DxxqIHEJUhMMEhU-I0IvHwEeMQM8DFkSVy3GEc3LXjEoWpBmL_uSH9oT", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "http://localhost:5329/assets/app.css", "1" => "http://localhost:5329/assets/app.js"}, "vsn" => "2.0.0"} [2026-09-02 13:28:45.395] [DEBUG] MOUNT PlatformWeb.SettlementLive.MisApproval Parameters: %{} Session: %{"_csrf_token" => "YeYg4ja_TxPQt2mrMADPt56F", "live_socket_id" => "users_sessions:1SCMkuUViXFyTH5BPBDsb34g_qe7I7Ttdm5i6LAnpjM=", "user_token" => <<213, 32, 140, 146, 229, 21, 137, 113, 114, 76, 126, 65, 60, 16, 236, 111, 126, 32, 254, 167, 187, 35, 180, 237, 118, 110, 98, 232, 176, 39, 166, 51>>} [2026-09-02 13:28:45.396] [DEBUG] QUERY OK source="users_tokens" db=1.1ms idle=1143.4ms SELECT u1.`id`, u1.`email`, u1.`hashed_password`, u1.`confirmed_at`, u1.`role`, u1.`name`, u1.`first_name`, u1.`last_name`, u1.`data`, u1.`inserted_at`, u1.`updated_at` FROM `users_tokens` AS u0 INNER JOIN `users` AS u1 ON u1.`id` = u0.`user_id` WHERE ((u0.`token` = ?) AND (u0.`context` = ?)) AND (u0.`inserted_at` > date_add(?, INTERVAL -(60) day)) [<<213, 32, 140, 146, 229, 21, 137, 113, 114, 76, 126, 65, 60, 16, 236, 111, 126, 32, 254, 167, 187, 35, 180, 237, 118, 110, 98, 232, 176, 39, 166, 51>>, "session", ~U[2026-09-02 13:28:45.395413Z]] ↳ Phoenix.LiveView.Utils.assign_new/3, at: lib/phoenix_live_view/utils.ex:79 [2026-09-02 13:28:45.399] [DEBUG] QUERY OK source="settlement_mis" db=1.2ms idle=535.0ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 ORDER BY s0.`mis_date` DESC LIMIT 100 [] ↳ PlatformWeb.SettlementLive.MisApproval.load_mis_rows/1, at: lib/platform_web/live/settlement_live/mis_approval.ex:603 [2026-09-02 13:28:45.400] [DEBUG] Replied in 8ms [2026-09-02 13:28:47.262] [DEBUG] HANDLE EVENT "mis_row_clicked" in PlatformWeb.SettlementLive.MisApproval Parameters: %{"id" => 328} [2026-09-02 13:28:47.264] [DEBUG] QUERY OK source="settlement_mis" db=1.6ms idle=396.5ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 WHERE (s0.`id` = ?) [328] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:296 [2026-09-02 13:28:47.265] [DEBUG] QUERY OK source="settlement_mis_items" db=0.6ms idle=209.9ms SELECT s0.`merchant_mid`, s0.`merchant_id`, MAX(s0.`merchant_name`), sum(s0.`transaction_count`), sum(s0.`total_gross_amount`), sum(s0.`total_mdr_amount`), sum(s0.`total_vat_amount`), sum(s0.`total_interchange_fee`), sum(s0.`net_payable`), GROUP_CONCAT(DISTINCT s0.`scheme_name` SEPARATOR ', '), GROUP_CONCAT(DISTINCT s0.`card_type_code` SEPARATOR ', ') FROM `settlement_mis_items` AS s0 WHERE (s0.`settlement_mis_id` = ?) GROUP BY s0.`merchant_mid`, s0.`merchant_id` [328] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:297 [2026-09-02 13:28:47.266] [DEBUG] QUERY OK source="merchant_adjustments" db=0.6ms idle=1.2ms SELECT m0.`id`, m0.`merchant_mid`, m0.`merchant_name`, m0.`adjustment_date`, m0.`debit_credit`, m0.`amount`, m0.`currency`, m0.`adjustment_type`, m0.`description`, m0.`settlement_mis_id`, m0.`status`, m0.`applied_at`, m0.`cancelled_at`, m0.`cancel_reason`, m0.`approval_status`, m0.`level1_reviewed_by`, m0.`level1_reviewed_at`, m0.`level2_approved_by`, m0.`level2_approved_at`, m0.`rejected_by`, m0.`rejected_at`, m0.`rejection_reason`, m0.`created_by`, m0.`updated_by`, m0.`inserted_at`, m0.`updated_at` FROM `merchant_adjustments` AS m0 WHERE (m0.`settlement_mis_id` = ?) [328] ↳ SettlementCore.Context.list_adjustments_by_settlement_mis/1, at: lib/settlement_core/context.ex:1013 [2026-09-02 13:28:47.266] [DEBUG] QUERY OK source="settlement_mis_hold_snapshots" db=0.5ms idle=1.1ms SELECT DISTINCT s0.`merchant_mid`, s0.`merchant_name` FROM `settlement_mis_hold_snapshots` AS s0 WHERE (s0.`settlement_mis_id` = ?) AND (NOT (s0.`merchant_mid` IN (SELECT DISTINCT ss0.`merchant_mid` FROM `settlement_mis_items` AS ss0 WHERE (ss0.`settlement_mis_id` = ?)))) [328, 328] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:333 [2026-09-02 13:28:47.267] [DEBUG] QUERY OK source="settlement_mis_hold_snapshots" db=0.3ms idle=1.0ms SELECT s0.`id`, s0.`settlement_mis_id`, s0.`core_transaction_id`, s0.`merchant_mid`, s0.`merchant_name`, s0.`rrn`, s0.`tid`, s0.`scheme_name`, s0.`card_type_code`, s0.`gross_amount`, s0.`hold_type`, s0.`transaction_datetime`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis_hold_snapshots` AS s0 WHERE (s0.`settlement_mis_id` = ?) [328] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:382 [2026-09-02 13:28:47.267] [DEBUG] Replied in 5ms [2026-09-02 13:29:00.854] [DEBUG] HANDLE EVENT "close_detail" in PlatformWeb.SettlementLive.MisApproval Parameters: %{"value" => ""} [2026-09-02 13:29:00.855] [DEBUG] Replied in 260µs [2026-09-02 13:29:04.989] [DEBUG] HANDLE EVENT "mis_row_clicked" in PlatformWeb.SettlementLive.MisApproval Parameters: %{"id" => 315} [2026-09-02 13:29:04.995] [DEBUG] QUERY OK source="settlement_mis" db=5.0ms queue=0.1ms idle=856.0ms SELECT s0.`id`, s0.`mis_date`, s0.`source_dump_ref`, s0.`total_merchants`, s0.`total_transactions`, s0.`gross_total_amount`, s0.`total_mdr_charges`, s0.`total_vat`, s0.`total_ar_recovery`, s0.`total_adjustments`, s0.`total_net_payable`, s0.`currency`, s0.`approval_status`, s0.`level1_reviewed_by`, s0.`level1_reviewed_at`, s0.`level2_approved_by`, s0.`level2_approved_at`, s0.`discarded_by`, s0.`discarded_at`, s0.`discard_reason`, s0.`generated_at`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis` AS s0 WHERE (s0.`id` = ?) [315] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:296 [2026-09-02 13:29:05.001] [DEBUG] QUERY OK source="settlement_mis_items" db=2.4ms idle=564.9ms SELECT s0.`merchant_mid`, s0.`merchant_id`, MAX(s0.`merchant_name`), sum(s0.`transaction_count`), sum(s0.`total_gross_amount`), sum(s0.`total_mdr_amount`), sum(s0.`total_vat_amount`), sum(s0.`total_interchange_fee`), sum(s0.`net_payable`), GROUP_CONCAT(DISTINCT s0.`scheme_name` SEPARATOR ', '), GROUP_CONCAT(DISTINCT s0.`card_type_code` SEPARATOR ', ') FROM `settlement_mis_items` AS s0 WHERE (s0.`settlement_mis_id` = ?) GROUP BY s0.`merchant_mid`, s0.`merchant_id` [315] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:297 [2026-09-02 13:29:05.013] [DEBUG] QUERY OK source="merchant_adjustments" db=11.8ms idle=6.2ms SELECT m0.`id`, m0.`merchant_mid`, m0.`merchant_name`, m0.`adjustment_date`, m0.`debit_credit`, m0.`amount`, m0.`currency`, m0.`adjustment_type`, m0.`description`, m0.`settlement_mis_id`, m0.`status`, m0.`applied_at`, m0.`cancelled_at`, m0.`cancel_reason`, m0.`approval_status`, m0.`level1_reviewed_by`, m0.`level1_reviewed_at`, m0.`level2_approved_by`, m0.`level2_approved_at`, m0.`rejected_by`, m0.`rejected_at`, m0.`rejection_reason`, m0.`created_by`, m0.`updated_by`, m0.`inserted_at`, m0.`updated_at` FROM `merchant_adjustments` AS m0 WHERE (m0.`adjustment_date` = ?) AND (m0.`approval_status` = 'approved') [~D[2026-08-06]] ↳ SettlementCore.Context.list_approved_adjustments_by_date/1, at: lib/settlement_core/context.ex:971 [2026-09-02 13:29:05.023] [DEBUG] QUERY OK source="tid_masters" db=4.0ms queue=4.7ms idle=13.6ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?,?)) ["419926360000000", "425590250000000"] ↳ PlatformWeb.SettlementLive.MisApproval.merchant_name_map/1, at: lib/platform_web/live/settlement_live/mis_approval.ex:792 [2026-09-02 13:29:05.031] [DEBUG] QUERY OK source="core_transactions" db=6.7ms idle=10.8ms SELECT DISTINCT c0.`merchant_mid`, coalesce(t1.`merchant_name_legal`, t1.`merchant_name_dba`) FROM `core_transactions` AS c0 INNER JOIN `tid_masters` AS t1 ON t1.`mid` = c0.`merchant_mid` WHERE (DATE(c0.`transaction_datetime`) = ?) AND ((c0.`risk_hold` = TRUE) OR (c0.`settlement_status` = 'exception_hold')) AND (NOT (c0.`merchant_mid` IN (SELECT DISTINCT ss0.`merchant_mid` FROM `settlement_mis_items` AS ss0 WHERE (ss0.`settlement_mis_id` = ?)))) [~D[2026-08-06], 315] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:335 [2026-09-02 13:29:05.069] [DEBUG] QUERY OK source="core_transactions" db=37.6ms idle=7.6ms SELECT c0.`id`, c0.`source_type`, c0.`source_ref_id`, c0.`settlement_batch_id`, c0.`rrn`, c0.`tid`, c0.`auth_number`, c0.`stan`, c0.`invoice_number`, c0.`batch_number`, c0.`merchant_mid`, c0.`merchant_id`, c0.`merchant_ref_number`, c0.`transaction_amount`, c0.`transaction_currency`, c0.`transaction_type`, c0.`transaction_datetime`, c0.`masked_pan`, c0.`scheme_name`, c0.`card_holder_name`, c0.`customer_mobile`, c0.`customer_country`, c0.`mcc_code`, c0.`card_type_id`, c0.`card_type_code`, c0.`mdr_template_id`, c0.`mdr_percentage_rate`, c0.`mdr_fixed_fee`, c0.`mdr_minimum_fee`, c0.`mdr_maximum_fee`, c0.`mdr_amount`, c0.`vat_rate`, c0.`vat_amount`, c0.`interchange_fee`, c0.`interchange_template_id`, c0.`gross_amount`, c0.`net_settlement_amount`, c0.`settlement_status`, c0.`switch_settled_date`, c0.`released_for_settlement_date`, c0.`risk_hold`, c0.`risk_rule_name`, c0.`chargeback_hold`, c0.`exception_type`, c0.`refund_status`, c0.`refund_date`, c0.`reversal_status`, c0.`reversal_date`, c0.`store_id`, c0.`dr_cr`, c0.`qr_tag`, c0.`bank_transfer_reference`, c0.`bank_transfer_date`, c0.`spare_fields`, c0.`inserted_at`, c0.`updated_at` FROM `core_transactions` AS c0 WHERE (DATE(c0.`transaction_datetime`) = ?) AND ((c0.`risk_hold` = TRUE) OR (c0.`settlement_status` = 'exception_hold')) ORDER BY c0.`merchant_mid`, c0.`transaction_datetime` [~D[2026-08-06]] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:384 [2026-09-02 13:29:05.072] [DEBUG] Replied in 82ms [2026-09-02 13:29:32.284] [DEBUG] HANDLE EVENT "expand_merchant" in PlatformWeb.SettlementLive.MisApproval Parameters: %{"mid" => "419926360000000"} [2026-09-02 13:29:32.287] [DEBUG] QUERY OK source="settlement_mis_items" db=2.6ms idle=147.5ms SELECT s0.`id`, s0.`settlement_mis_id`, s0.`core_transaction_id`, s0.`merchant_mid`, s0.`merchant_id`, s0.`merchant_name`, s0.`merchant_ref_number`, s0.`bank_name`, s0.`iban`, s0.`account_number`, s0.`settlement_date`, s0.`rrn`, s0.`tid`, s0.`auth_number`, s0.`transaction_date`, s0.`transaction_type`, s0.`scheme_name`, s0.`card_type_code`, s0.`gross_amount`, s0.`mdr_percentage_rate`, s0.`mdr_amount`, s0.`vat_rate`, s0.`vat_amount`, s0.`interchange_fee`, s0.`adjustment_amount`, s0.`ar_recovery`, s0.`net_payable`, s0.`transaction_count`, s0.`total_gross_amount`, s0.`total_mdr_amount`, s0.`total_vat_amount`, s0.`total_interchange_fee`, s0.`total_net_settlement_amount`, s0.`risk_status`, s0.`exception_type`, s0.`mpr_sent`, s0.`margin_contribution`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis_items` AS s0 WHERE ((s0.`settlement_mis_id` = ?) AND (s0.`merchant_mid` = ?)) ORDER BY s0.`card_type_code` [315, "419926360000000"] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:402 [2026-09-02 13:29:32.288] [DEBUG] QUERY OK source="merchant_adjustments" db=0.6ms idle=17.6ms SELECT m0.`id`, m0.`merchant_mid`, m0.`merchant_name`, m0.`adjustment_date`, m0.`debit_credit`, m0.`amount`, m0.`currency`, m0.`adjustment_type`, m0.`description`, m0.`settlement_mis_id`, m0.`status`, m0.`applied_at`, m0.`cancelled_at`, m0.`cancel_reason`, m0.`approval_status`, m0.`level1_reviewed_by`, m0.`level1_reviewed_at`, m0.`level2_approved_by`, m0.`level2_approved_at`, m0.`rejected_by`, m0.`rejected_at`, m0.`rejection_reason`, m0.`created_by`, m0.`updated_by`, m0.`inserted_at`, m0.`updated_at` FROM `merchant_adjustments` AS m0 WHERE (m0.`adjustment_date` = ?) AND (m0.`approval_status` = 'approved') [~D[2026-08-06]] ↳ SettlementCore.Context.list_approved_adjustments_by_date/1, at: lib/settlement_core/context.ex:971 [2026-09-02 13:29:32.291] [DEBUG] QUERY OK source="tid_masters" db=1.2ms queue=1.4ms idle=1.9ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?)) ["419926360000000"] ↳ PlatformWeb.SettlementLive.MisApproval.merchant_name_map/1, at: lib/platform_web/live/settlement_live/mis_approval.ex:792 [2026-09-02 13:29:32.294] [DEBUG] QUERY OK source="core_transactions" db=2.0ms queue=0.2ms idle=3.2ms SELECT c0.`id`, c0.`source_type`, c0.`source_ref_id`, c0.`settlement_batch_id`, c0.`rrn`, c0.`tid`, c0.`auth_number`, c0.`stan`, c0.`invoice_number`, c0.`batch_number`, c0.`merchant_mid`, c0.`merchant_id`, c0.`merchant_ref_number`, c0.`transaction_amount`, c0.`transaction_currency`, c0.`transaction_type`, c0.`transaction_datetime`, c0.`masked_pan`, c0.`scheme_name`, c0.`card_holder_name`, c0.`customer_mobile`, c0.`customer_country`, c0.`mcc_code`, c0.`card_type_id`, c0.`card_type_code`, c0.`mdr_template_id`, c0.`mdr_percentage_rate`, c0.`mdr_fixed_fee`, c0.`mdr_minimum_fee`, c0.`mdr_maximum_fee`, c0.`mdr_amount`, c0.`vat_rate`, c0.`vat_amount`, c0.`interchange_fee`, c0.`interchange_template_id`, c0.`gross_amount`, c0.`net_settlement_amount`, c0.`settlement_status`, c0.`switch_settled_date`, c0.`released_for_settlement_date`, c0.`risk_hold`, c0.`risk_rule_name`, c0.`chargeback_hold`, c0.`exception_type`, c0.`refund_status`, c0.`refund_date`, c0.`reversal_status`, c0.`reversal_date`, c0.`store_id`, c0.`dr_cr`, c0.`qr_tag`, c0.`bank_transfer_reference`, c0.`bank_transfer_date`, c0.`spare_fields`, c0.`inserted_at`, c0.`updated_at` FROM `core_transactions` AS c0 WHERE (DATE(c0.`transaction_datetime`) = ?) AND ((c0.`risk_hold` = TRUE) OR (c0.`settlement_status` = 'exception_hold')) AND (c0.`merchant_mid` = ?) ORDER BY c0.`merchant_mid`, c0.`transaction_datetime` [~D[2026-08-06], "419926360000000"] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:424 [2026-09-02 13:29:32.294] [DEBUG] Replied in 10ms [2026-09-02 13:29:41.413] [DEBUG] HANDLE EVENT "expand_merchant" in PlatformWeb.SettlementLive.MisApproval Parameters: %{"mid" => "425590250000000"} [2026-09-02 13:29:41.414] [DEBUG] QUERY OK source="settlement_mis_items" db=1.1ms queue=0.1ms idle=1107.2ms SELECT s0.`id`, s0.`settlement_mis_id`, s0.`core_transaction_id`, s0.`merchant_mid`, s0.`merchant_id`, s0.`merchant_name`, s0.`merchant_ref_number`, s0.`bank_name`, s0.`iban`, s0.`account_number`, s0.`settlement_date`, s0.`rrn`, s0.`tid`, s0.`auth_number`, s0.`transaction_date`, s0.`transaction_type`, s0.`scheme_name`, s0.`card_type_code`, s0.`gross_amount`, s0.`mdr_percentage_rate`, s0.`mdr_amount`, s0.`vat_rate`, s0.`vat_amount`, s0.`interchange_fee`, s0.`adjustment_amount`, s0.`ar_recovery`, s0.`net_payable`, s0.`transaction_count`, s0.`total_gross_amount`, s0.`total_mdr_amount`, s0.`total_vat_amount`, s0.`total_interchange_fee`, s0.`total_net_settlement_amount`, s0.`risk_status`, s0.`exception_type`, s0.`mpr_sent`, s0.`margin_contribution`, s0.`inserted_at`, s0.`updated_at` FROM `settlement_mis_items` AS s0 WHERE ((s0.`settlement_mis_id` = ?) AND (s0.`merchant_mid` = ?)) ORDER BY s0.`card_type_code` [315, "425590250000000"] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:402 [2026-09-02 13:29:41.415] [DEBUG] QUERY OK source="merchant_adjustments" db=0.6ms idle=106.5ms SELECT m0.`id`, m0.`merchant_mid`, m0.`merchant_name`, m0.`adjustment_date`, m0.`debit_credit`, m0.`amount`, m0.`currency`, m0.`adjustment_type`, m0.`description`, m0.`settlement_mis_id`, m0.`status`, m0.`applied_at`, m0.`cancelled_at`, m0.`cancel_reason`, m0.`approval_status`, m0.`level1_reviewed_by`, m0.`level1_reviewed_at`, m0.`level2_approved_by`, m0.`level2_approved_at`, m0.`rejected_by`, m0.`rejected_at`, m0.`rejection_reason`, m0.`created_by`, m0.`updated_by`, m0.`inserted_at`, m0.`updated_at` FROM `merchant_adjustments` AS m0 WHERE (m0.`adjustment_date` = ?) AND (m0.`approval_status` = 'approved') [~D[2026-08-06]] ↳ SettlementCore.Context.list_approved_adjustments_by_date/1, at: lib/settlement_core/context.ex:971 [2026-09-02 13:29:41.418] [DEBUG] QUERY OK source="tid_masters" db=0.9ms queue=1.3ms idle=1.6ms SELECT t0.`id`, t0.`mms_user_id`, t0.`mid`, t0.`store_id`, t0.`merchant_ref_number`, t0.`tid`, t0.`qr_id`, t0.`merchant_name_legal`, t0.`merchant_name_dba`, t0.`registered_mobile`, t0.`registered_email`, t0.`mcc_code`, t0.`mcc_description`, t0.`bank_code`, t0.`bank_name`, t0.`bank_account_number`, t0.`iban`, t0.`virtual_iban`, t0.`enabled_schemes`, t0.`mdr_rates`, t0.`onboarding_date`, t0.`contract_approved_at`, t0.`onboarding_source`, t0.`onboarding_id`, t0.`last_transaction_date`, t0.`last_transaction_amount`, t0.`mms_synced_at`, t0.`status`, t0.`spare_fields`, t0.`inserted_at`, t0.`updated_at` FROM `tid_masters` AS t0 WHERE (t0.`mid` IN (?)) ["425590250000000"] ↳ PlatformWeb.SettlementLive.MisApproval.merchant_name_map/1, at: lib/platform_web/live/settlement_live/mis_approval.ex:792 [2026-09-02 13:29:41.420] [DEBUG] QUERY OK source="core_transactions" db=1.6ms idle=2.7ms SELECT c0.`id`, c0.`source_type`, c0.`source_ref_id`, c0.`settlement_batch_id`, c0.`rrn`, c0.`tid`, c0.`auth_number`, c0.`stan`, c0.`invoice_number`, c0.`batch_number`, c0.`merchant_mid`, c0.`merchant_id`, c0.`merchant_ref_number`, c0.`transaction_amount`, c0.`transaction_currency`, c0.`transaction_type`, c0.`transaction_datetime`, c0.`masked_pan`, c0.`scheme_name`, c0.`card_holder_name`, c0.`customer_mobile`, c0.`customer_country`, c0.`mcc_code`, c0.`card_type_id`, c0.`card_type_code`, c0.`mdr_template_id`, c0.`mdr_percentage_rate`, c0.`mdr_fixed_fee`, c0.`mdr_minimum_fee`, c0.`mdr_maximum_fee`, c0.`mdr_amount`, c0.`vat_rate`, c0.`vat_amount`, c0.`interchange_fee`, c0.`interchange_template_id`, c0.`gross_amount`, c0.`net_settlement_amount`, c0.`settlement_status`, c0.`switch_settled_date`, c0.`released_for_settlement_date`, c0.`risk_hold`, c0.`risk_rule_name`, c0.`chargeback_hold`, c0.`exception_type`, c0.`refund_status`, c0.`refund_date`, c0.`reversal_status`, c0.`reversal_date`, c0.`store_id`, c0.`dr_cr`, c0.`qr_tag`, c0.`bank_transfer_reference`, c0.`bank_transfer_date`, c0.`spare_fields`, c0.`inserted_at`, c0.`updated_at` FROM `core_transactions` AS c0 WHERE (DATE(c0.`transaction_datetime`) = ?) AND ((c0.`risk_hold` = TRUE) OR (c0.`settlement_status` = 'exception_hold')) AND (c0.`merchant_mid` = ?) ORDER BY c0.`merchant_mid`, c0.`transaction_datetime` [~D[2026-08-06], "425590250000000"] ↳ PlatformWeb.SettlementLive.MisApproval.handle_event/3, at: lib/platform_web/live/settlement_live/mis_approval.ex:424 [2026-09-02 13:29:41.420] [DEBUG] Replied in 7ms [2026-09-02 13:29:53.700] [DEBUG] HANDLE EVENT "close_detail" in PlatformWeb.SettlementLive.MisApproval Parameters: %{"value" => ""} [2026-09-02 13:29:53.700] [DEBUG] Replied in 244µs [2026-09-02 13:29:55.733] [INFO ] Received status update for terminal 28260702280001 [2026-09-02 13:29:55.733] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-09-02T21:29:37Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-09-02T21:29:37Z","value":"100"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-09-02T21:29:37Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-09-02T21:29:37Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-09-02T21:29:37Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-09-02T21:29:37Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-09-02T21:29:37Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-09-02T21:29:37Z","value":"3.8.7.1-SNAPSHOT-SR800"}],"model":"SR800 A20","oid":"organization_id","sn":"28260702280001","uploadTime":"2026-09-02T21:29:37Z","vendor":"MoreFun"} [2026-09-02 13:29:55.733] [INFO ] Decoded JSON: %{"model" => "SR800 A20", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-09-02T21:29:37Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-09-02T21:29:37Z", "value" => "100"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-09-02T21:29:37Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-09-02T21:29:37Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-09-02T21:29:37Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-09-02T21:29:37Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-09-02T21:29:37Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-09-02T21:29:37Z", "value" => "3.8.7.1-SNAPSHOT-SR800"}], "sn" => "28260702280001", "uploadTime" => "2026-09-02T21:29:37Z", "vendor" => "MoreFun"} [2026-09-02 13:29:55.734] [INFO ] Extracted versions for 28260702280001: %{application: "3.8.7.1-SNAPSHOT-SR800", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-09-02 13:29:55.734] [INFO ] Detected missing versions for 28260702280001, triggering auto-push [2026-09-02 13:29:55.734] [INFO ] AutoPushService: Triggering auto-push for 28260702280001 (MoreFun SR800 A20) - missing version [2026-09-02 13:29:55.751] [DEBUG] QUERY OK source="parameter_templates" db=17.5ms idle=848.5ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["MoreFun", "SR800 A20"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-09-02 13:29:55.763] [DEBUG] QUERY OK source="tms_terminals" db=5.4ms queue=5.6ms idle=383.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["28260702280001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-09-02 13:29:55.767] [DEBUG] QUERY OK source="parameter_template_values" db=1.1ms queue=2.3ms idle=11.7ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [15] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-09-02 13:29:55.789] [DEBUG] QUERY OK source="parameter_definitions" db=7.6ms queue=9.4ms idle=8.6ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-09-02 13:29:55.869] [DEBUG] QUERY OK db=76.7ms idle=24.9ms INSERT INTO `parameter_push_logs` (`status`,`request_id`,`terminal_id`,`template_id`,`push_type`,`config_type`,`device_vendor`,`device_model`,`parameters_sent`,`log_time`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", 25091, 64, 15, "full", "parameter", "MoreFun", "SR800 A20", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", "PINPAD_MASTER_KEY_INDEX" => "0", "COMM_PORT" => "80", ...}, ~U[2026-09-02 13:29:55Z], "missing_version", "1.0.0", ~N[2026-09-02 13:29:55], ~N[2026-09-02 13:29:55]] ↳ TmsCore.TerminalManagement.AutoPushService.push_generic_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:235 [2026-09-02 13:29:55.869] [INFO ] AutoPushService: Created push log 61183 for parameters (template: 15) [2026-09-02 13:29:55.870] [INFO ] SR600 MQTT Command: %{"command" => "file_download", "merchant_config" => "true", "request_id" => 25091, "retry_count" => "3", "version" => "1.0.0"} [2026-09-02 13:29:55.870] [INFO ] AutoPushService: Sending parameter push to 28260702280001 on topic: /ota/pFppbioOCKlo5c8E/28260702280001/update [2026-09-02 13:29:55.870] [INFO ] AutoPushService: Parameter push sent successfully to 28260702280001 [2026-09-02 13:29:56.013] [DEBUG] QUERY OK db=140.8ms queue=0.2ms idle=83.7ms INSERT INTO `parameter_push_logs` (`status`,`request_id`,`terminal_id`,`push_type`,`config_type`,`device_vendor`,`device_model`,`log_time`,`trigger_reason`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?) ["pending", 13986, 64, "full", "emv_config", "MoreFun", "SR800 A20", ~U[2026-09-02 13:29:55Z], "missing_version", ~N[2026-09-02 13:29:55], ~N[2026-09-02 13:29:55]] ↳ TmsCore.TerminalManagement.AutoPushService.push_regular_config/5, at: lib/tms_core/terminal_management/auto_push_service.ex:427 [2026-09-02 13:29:56.014] [INFO ] AutoPushService: Created push log for emv_config [2026-09-02 13:29:56.014] [INFO ] SR600 MQTT Command: %{"command" => "file_download", "merchant_config" => "true", "request_id" => 13986, "retry_count" => "3"} [2026-09-02 13:29:56.014] [INFO ] AutoPushService: Sending emv_config push to 28260702280001 on topic: /ota/pFppbioOCKlo5c8E/28260702280001/update [2026-09-02 13:29:56.016] [INFO ] AutoPushService: emv_config push sent successfully to 28260702280001 [2026-09-02 13:29:56.018] [DEBUG] QUERY OK source="config_file_versions" db=1.9ms queue=0.3ms idle=147.4ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "SR800 A20"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-09-02 13:29:56.018] [INFO ] KeysConfigService: Generating keys.json for 28260702280001 (SR800 A20) [2026-09-02 13:29:56.020] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms idle=5.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["28260702280001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-09-02 13:29:56.021] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 28260702280001 with params: %{"kekKcv" => "112233", "model" => "SR800 A20", "serialNumber" => "28260702280001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-09-02 13:29:56.029] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-09-02 13:29:56.032] [ERROR] KeysConfigService: Failed to generate keys for 28260702280001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 13:29:56.032] [ERROR] AutoPushService: Failed to generate keys.json for 28260702280001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 13:29:56.291] [DEBUG] QUERY OK db=259.1ms idle=13.8ms INSERT INTO `parameter_push_logs` (`status`,`request_id`,`terminal_id`,`push_type`,`config_type`,`device_vendor`,`device_model`,`log_time`,`trigger_reason`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?) ["pending", 14018, 64, "full", "application", "MoreFun", "SR800 A20", ~U[2026-09-02 13:29:56Z], "missing_version", ~N[2026-09-02 13:29:56], ~N[2026-09-02 13:29:56]] ↳ TmsCore.TerminalManagement.AutoPushService.push_regular_config/5, at: lib/tms_core/terminal_management/auto_push_service.ex:427 [2026-09-02 13:29:56.292] [INFO ] AutoPushService: Created push log for application [2026-09-02 13:29:56.292] [INFO ] SR600 MQTT Command: %{"command" => "file_download", "merchant_config" => "true", "request_id" => 14018, "retry_count" => "3"} [2026-09-02 13:29:56.292] [INFO ] AutoPushService: Sending application push to 28260702280001 on topic: /ota/pFppbioOCKlo5c8E/28260702280001/update [2026-09-02 13:29:56.292] [INFO ] AutoPushService: application push sent successfully to 28260702280001 [2026-09-02 13:29:56.292] [INFO ] AutoPushService: Auto-push completed for 28260702280001 [2026-09-02 13:29:56.294] [DEBUG] QUERY OK source="tms_terminals" db=2.2ms idle=271.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["28260702280001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:140 [2026-09-02 13:29:56.295] [INFO ] Terminal updated: 28260702280001 [2026-09-02 13:29:56.344] [DEBUG] QUERY OK source="tms_terminals" db=49.0ms idle=3.6ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-09-02 13:29:56], 64] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:164 [2026-09-02 13:29:56.347] [DEBUG] QUERY OK source="parameter_templates" db=0.6ms queue=1.2ms idle=50.5ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) ORDER BY p0.`updated_at` DESC LIMIT 1 ["MoreFun", "SR800 A20"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_parameter_version/2, at: lib/tms_core/terminal_management/version_compliance_checker.ex:105 [2026-09-02 13:29:56.354] [DEBUG] QUERY OK source="config_file_versions" db=7.2ms idle=3.1ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "SR800 A20"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-09-02 13:29:56.355] [DEBUG] QUERY OK source="config_file_versions" db=0.3ms idle=7.9ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "SR800 A20"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-09-02 13:29:56.355] [INFO ] VersionComplianceChecker: 28260702280001 — outdated configs: [{:application, "3.8.7.1-SNAPSHOT-SR800", "3.8.5"}] [2026-09-02 13:29:56.389] [DEBUG] QUERY OK source="parameter_push_logs" db=32.8ms idle=1.1ms SELECT TRUE FROM `parameter_push_logs` AS p0 WHERE ((((p0.`terminal_id` = ?) AND (p0.`config_type` = ?)) AND (p0.`inserted_at` >= ?)) AND p0.`status` IN ('pending','sent')) LIMIT 1 [64, "application", ~N[2026-09-02 12:59:56]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-09-02 13:29:56.389] [INFO ] VersionComplianceChecker: Skipping application re-push for 28260702280001 (push already in-flight or within cooldown) [2026-09-02 13:29:56.392] [DEBUG] QUERY OK source="tms_terminals" db=0.9ms queue=0.2ms idle=8.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["28260702280001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:1184 [2026-09-02 13:29:56.497] [DEBUG] QUERY OK source="tms_terminals" db=102.9ms queue=0.3ms idle=4.9ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 13:29:56], 64] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:174 [2026-09-02 13:29:56.500] [DEBUG] QUERY OK source="app_upgrade_device_statuses" db=3.1ms idle=104.6ms SELECT a0.`id`, a0.`config_id`, a0.`device_id`, a0.`device_sn`, a0.`vendor`, a0.`model`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`update_result`, a0.`status`, a0.`remark`, a0.`finish_time`, a0.`pushed_time`, a0.`retry_count`, a0.`inserted_at`, a0.`updated_at` FROM `app_upgrade_device_statuses` AS a0 WHERE ((a0.`device_sn` = ?) AND a0.`status` IN ('pending','pushed')) ["28260702280001"] ↳ TmsCore.TerminalManagement.AppUpgradeService.maybe_repush_for_device/1, at: lib/tms_core/terminal_management/app_upgrade_service.ex:148 [2026-09-02 13:29:56.597] [DEBUG] QUERY OK db=95.7ms idle=4.9ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [64, "organization_id", "2026-09-02T21:29:37Z", ~N[2026-09-02 13:29:56], ~N[2026-09-02 13:29:56]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:179 [2026-09-02 13:29:56.598] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 106567, oid: "organization_id", upload_time: "2026-09-02T21:29:37Z", terminal_id: 64, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:29:56], updated_at: ~N[2026-09-02 13:29:56]} [2026-09-02 13:29:56.598] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-09-02T21:29:37Z", "value" => "online"} [2026-09-02 13:29:56.699] [DEBUG] QUERY OK db=96.8ms idle=97.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-09-02T21:29:37Z", "online", "status", 106567, ~N[2026-09-02 13:29:56], ~N[2026-09-02 13:29:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:29:56.699] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093279, itemkey: "status", value: "online", timestamp: "2026-09-02T21:29:37Z", message: "Terminal status update", status_log_id: 106567, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:29:56], updated_at: ~N[2026-09-02 13:29:56]}} [2026-09-02 13:29:56.700] [INFO ] Setting terminal 28260702280001 status to 'online' from status itemkey [2026-09-02 13:29:56.706] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-09-02T21:29:37Z", "value" => "100"} [2026-09-02 13:29:56.824] [DEBUG] QUERY OK db=117.9ms idle=108.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-09-02T21:29:37Z", "100", "battery", 106567, ~N[2026-09-02 13:29:56], ~N[2026-09-02 13:29:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:29:56.825] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093285, itemkey: "battery", value: "100", timestamp: "2026-09-02T21:29:37Z", message: "Battery level", status_log_id: 106567, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:29:56], updated_at: ~N[2026-09-02 13:29:56]}} [2026-09-02 13:29:56.825] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-09-02T21:29:37Z", "value" => "online"} [2026-09-02 13:29:56.998] [DEBUG] QUERY OK db=170.5ms idle=131.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-09-02T21:29:37Z", "online", "network", 106567, ~N[2026-09-02 13:29:56], ~N[2026-09-02 13:29:56]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:29:56.998] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093288, itemkey: "network", value: "online", timestamp: "2026-09-02T21:29:37Z", message: "Network connectivity", status_log_id: 106567, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:29:56], updated_at: ~N[2026-09-02 13:29:56]}} [2026-09-02 13:29:56.998] [INFO ] Setting terminal 28260702280001 status to 'online' from network itemkey [2026-09-02 13:29:57.000] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-09-02T21:29:37Z", "value" => "0"} [2026-09-02 13:29:57.089] [DEBUG] QUERY OK db=86.6ms idle=180.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-09-02T21:29:37Z", "0", "cpu", 106567, ~N[2026-09-02 13:29:57], ~N[2026-09-02 13:29:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:29:57.089] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093292, itemkey: "cpu", value: "0", timestamp: "2026-09-02T21:29:37Z", message: "CPU usage percentage", status_log_id: 106567, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:29:57], updated_at: ~N[2026-09-02 13:29:57]}} [2026-09-02 13:29:57.089] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-09-02T21:29:37Z", "value" => "1.0.0"} [2026-09-02 13:29:57.153] [DEBUG] QUERY OK db=63.1ms idle=91.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-09-02T21:29:37Z", "1.0.0", "parameter_config", 106567, ~N[2026-09-02 13:29:57], ~N[2026-09-02 13:29:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:29:57.153] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093296, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-09-02T21:29:37Z", message: "Current parameters version", status_log_id: 106567, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:29:57], updated_at: ~N[2026-09-02 13:29:57]}} [2026-09-02 13:29:57.153] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-09-02T21:29:37Z", "value" => "1.0.1"} [2026-09-02 13:29:57.263] [DEBUG] QUERY OK db=109.2ms idle=65.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-09-02T21:29:37Z", "1.0.1", "emv_config", 106567, ~N[2026-09-02 13:29:57], ~N[2026-09-02 13:29:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:29:57.264] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093300, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-09-02T21:29:37Z", message: "Current EMV config version", status_log_id: 106567, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:29:57], updated_at: ~N[2026-09-02 13:29:57]}} [2026-09-02 13:29:57.264] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-09-02T21:29:37Z", "value" => ""} [2026-09-02 13:29:57.318] [DEBUG] QUERY OK db=53.1ms idle=112.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-09-02T21:29:37Z", "keys_config", 106567, ~N[2026-09-02 13:29:57], ~N[2026-09-02 13:29:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:29:57.320] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093304, itemkey: "keys_config", value: nil, timestamp: "2026-09-02T21:29:37Z", message: "Current keys config version", status_log_id: 106567, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:29:57], updated_at: ~N[2026-09-02 13:29:57]}} [2026-09-02 13:29:57.320] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-09-02T21:29:37Z", "value" => "3.8.7.1-SNAPSHOT-SR800"} [2026-09-02 13:29:57.402] [DEBUG] QUERY OK db=81.9ms queue=0.3ms idle=56.8ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-09-02T21:29:37Z", "3.8.7.1-SNAPSHOT-SR800", "application", 106567, ~N[2026-09-02 13:29:57], ~N[2026-09-02 13:29:57]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:29:57.402] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093308, itemkey: "application", value: "3.8.7.1-SNAPSHOT-SR800", timestamp: "2026-09-02T21:29:37Z", message: "Current application version", status_log_id: 106567, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:29:57], updated_at: ~N[2026-09-02 13:29:57]}} [2026-09-02 13:29:57.403] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"213538","status":"failed","timestamp":1788384577931,"type":"tms_response"} [2026-09-02 13:29:57.403] [INFO ] Processing file download response for device 28260702280001, request_id: 213538 [2026-09-02 13:29:57.405] [DEBUG] QUERY OK source="file_download_logs" db=1.6ms idle=16.4ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["213538"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:29:57.405] [INFO ] No file download log for request_id 213538; response not attached to a push [2026-09-02 13:29:57.405] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:29:57.405610Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "213538", "status" => "failed", "timestamp" => 1788384577931, "type" => "tms_response"}, request_id: "213538", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:29:57.405] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"25091","status":"failed","timestamp":1788384578043,"type":"tms_response"} [2026-09-02 13:29:57.405] [INFO ] Processing file download response for device 28260702280001, request_id: 25091 [2026-09-02 13:29:57.410] [DEBUG] QUERY OK source="file_download_logs" db=1.6ms idle=6.1ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["25091"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:29:57.410] [INFO ] No file download log for request_id 25091; response not attached to a push [2026-09-02 13:29:57.410] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:29:57.410745Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "25091", "status" => "failed", "timestamp" => 1788384578043, "type" => "tms_response"}, request_id: "25091", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:29:57.410] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"9858","status":"failed","timestamp":1788384578157,"type":"tms_response"} [2026-09-02 13:29:57.411] [INFO ] Processing file download response for device 28260702280001, request_id: 9858 [2026-09-02 13:29:57.413] [DEBUG] QUERY OK source="file_download_logs" db=2.2ms idle=5.9ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["9858"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:29:57.413] [INFO ] No file download log for request_id 9858; response not attached to a push [2026-09-02 13:29:57.413] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:29:57.413771Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "9858", "status" => "failed", "timestamp" => 1788384578157, "type" => "tms_response"}, request_id: "9858", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:29:57.413] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"5412","status":"failed","timestamp":1788384578277,"type":"tms_response"} [2026-09-02 13:29:57.414] [INFO ] Processing file download response for device 28260702280001, request_id: 5412 [2026-09-02 13:29:57.415] [DEBUG] QUERY OK source="file_download_logs" db=1.3ms idle=3.8ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["5412"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:29:57.415] [INFO ] No file download log for request_id 5412; response not attached to a push [2026-09-02 13:29:57.415] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:29:57.415894Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "5412", "status" => "failed", "timestamp" => 1788384578277, "type" => "tms_response"}, request_id: "5412", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:29:57.416] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"205603","status":"failed","timestamp":1788384578390,"type":"tms_response"} [2026-09-02 13:29:57.417] [INFO ] Processing file download response for device 28260702280001, request_id: 205603 [2026-09-02 13:29:57.418] [DEBUG] QUERY OK source="file_download_logs" db=0.8ms idle=4.4ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["205603"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:29:57.418] [INFO ] No file download log for request_id 205603; response not attached to a push [2026-09-02 13:29:57.419] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:29:57.419106Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "205603", "status" => "failed", "timestamp" => 1788384578390, "type" => "tms_response"}, request_id: "205603", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:29:57.421] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"7235","status":"failed","timestamp":1788384578501,"type":"tms_response"} [2026-09-02 13:29:57.421] [INFO ] Processing file download response for device 28260702280001, request_id: 7235 [2026-09-02 13:29:57.422] [DEBUG] QUERY OK source="file_download_logs" db=0.4ms idle=6.0ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["7235"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:29:57.422] [INFO ] No file download log for request_id 7235; response not attached to a push [2026-09-02 13:29:57.422] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:29:57.422507Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "7235", "status" => "failed", "timestamp" => 1788384578501, "type" => "tms_response"}, request_id: "7235", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:29:57.422] [WARN ] Unexpected async result [2026-09-02 13:29:57.422] [WARN ] Unexpected async result [2026-09-02 13:29:57.422] [WARN ] Unexpected async result [2026-09-02 13:29:57.991] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"13986","status":"failed","timestamp":1788384579077,"type":"tms_response"} [2026-09-02 13:29:57.991] [INFO ] Processing file download response for device 28260702280001, request_id: 13986 [2026-09-02 13:29:58.000] [DEBUG] QUERY OK source="file_download_logs" db=5.4ms idle=576.2ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["13986"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:29:58.000] [INFO ] No file download log for request_id 13986; response not attached to a push [2026-09-02 13:29:58.002] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:29:58.002570Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "13986", "status" => "failed", "timestamp" => 1788384579077, "type" => "tms_response"}, request_id: "13986", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:29:58.019] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"15394","status":"failed","timestamp":1788384579187,"type":"tms_response"} [2026-09-02 13:29:58.019] [INFO ] Processing file download response for device 28260702280001, request_id: 15394 [2026-09-02 13:29:58.020] [DEBUG] QUERY OK source="file_download_logs" db=0.8ms idle=597.8ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["15394"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:29:58.021] [INFO ] No file download log for request_id 15394; response not attached to a push [2026-09-02 13:29:58.021] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:29:58.021179Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "15394", "status" => "failed", "timestamp" => 1788384579187, "type" => "tms_response"}, request_id: "15394", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:29:58.026] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"169893","status":"failed","timestamp":1788384579299,"type":"tms_response"} [2026-09-02 13:29:58.027] [INFO ] Processing file download response for device 28260702280001, request_id: 169893 [2026-09-02 13:29:58.030] [DEBUG] QUERY OK source="file_download_logs" db=2.2ms idle=27.0ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["169893"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:29:58.031] [INFO ] No file download log for request_id 169893; response not attached to a push [2026-09-02 13:29:58.031] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:29:58.031692Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "169893", "status" => "failed", "timestamp" => 1788384579299, "type" => "tms_response"}, request_id: "169893", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:29:58.031] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"14018","status":"failed","timestamp":1788384579410,"type":"tms_response"} [2026-09-02 13:29:58.034] [INFO ] Processing file download response for device 28260702280001, request_id: 14018 [2026-09-02 13:29:58.037] [DEBUG] QUERY OK source="file_download_logs" db=2.1ms queue=0.2ms idle=14.5ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["14018"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:29:58.037] [INFO ] No file download log for request_id 14018; response not attached to a push [2026-09-02 13:29:58.038] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:29:58.038081Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "14018", "status" => "failed", "timestamp" => 1788384579410, "type" => "tms_response"}, request_id: "14018", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:29:58.360] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"3716","status":"failed","timestamp":1788384579524,"type":"tms_response"} [2026-09-02 13:29:58.360] [INFO ] Processing file download response for device 28260702280001, request_id: 3716 [2026-09-02 13:29:58.362] [DEBUG] QUERY OK source="file_download_logs" db=1.1ms queue=0.3ms idle=331.4ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["3716"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:29:58.362] [INFO ] No file download log for request_id 3716; response not attached to a push [2026-09-02 13:29:58.363] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:29:58.362739Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "3716", "status" => "failed", "timestamp" => 1788384579524, "type" => "tms_response"}, request_id: "3716", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:29:58.366] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"5508","status":"failed","timestamp":1788384579637,"type":"tms_response"} [2026-09-02 13:29:58.366] [INFO ] Processing file download response for device 28260702280001, request_id: 5508 [2026-09-02 13:29:58.367] [DEBUG] QUERY OK source="file_download_logs" db=0.8ms idle=329.1ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["5508"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:29:58.367] [INFO ] No file download log for request_id 5508; response not attached to a push [2026-09-02 13:29:58.370] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:29:58.369854Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "5508", "status" => "failed", "timestamp" => 1788384579637, "type" => "tms_response"}, request_id: "5508", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:30:46.352] [INFO ] Running offline device check... [2026-09-02 13:30:46.353] [INFO ] Starting offline device check... [2026-09-02 13:30:46.354] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=1295.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1234 [2026-09-02 13:30:46.356] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=662.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [1] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:30:46.412] [DEBUG] QUERY OK source="tms_terminals" db=55.2ms idle=2.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 13:30:46], 1] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1283 [2026-09-02 13:30:46.412] [INFO ] Terminal 61250415798001 back online [2026-09-02 13:30:46.413] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=56.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:30:46.414] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:30:46.417] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:30:46.417] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=2.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:30:46.419] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:30:46.420] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.4ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:30:46.421] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=2.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:30:46.423] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.2ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:30:46.424] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.1ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:30:46.425] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:30:46.427] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=0.5ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:30:46.427] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:30:46.429] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:30:46.429] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:30:46.431] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:30:46.432] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:30:46.433] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:30:46.434] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:30:46.435] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:30:46.437] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:30:46.438] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms queue=0.1ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:30:46.439] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:30:46.440] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:30:46.441] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.3ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:30:46.442] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:30:46.442] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:30:46.443] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:30:46.444] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:30:46.445] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:30:46.446] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.1ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:30:46.447] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:30:46.448] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.3ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:30:46.449] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:30:46.450] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:30:46.451] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:30:46.452] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:30:46.453] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:30:46.455] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:30:46.456] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:30:46.456] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:30:46.458] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.8ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:30:46.458] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:30:46.460] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms queue=0.3ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:30:46.461] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:30:46.462] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms queue=0.1ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:30:46.463] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:30:46.464] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:30:46.465] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms queue=0.1ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:30:46.466] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.1ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:30:46.466] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:30:46.467] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:30:46.468] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.2ms idle=0.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [82] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:30:46.468] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=0.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [83] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:30:46.468] [INFO ] Offline device check completed. Found 51 offline devices, updated 1 statuses. [2026-09-02 13:30:46.468] [INFO ] Offline device check completed successfully [2026-09-02 13:32:20.330] [INFO ] Received status update for terminal 28260702280001 [2026-09-02 13:32:20.330] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-09-02T21:32:01Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-09-02T21:32:01Z","value":"100"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-09-02T21:32:01Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-09-02T21:32:01Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-09-02T21:32:01Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-09-02T21:32:01Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-09-02T21:32:01Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-09-02T21:32:01Z","value":"3.8.7.1-SNAPSHOT-SR800"}],"model":"SR800 A20","oid":"organization_id","sn":"28260702280001","uploadTime":"2026-09-02T21:32:01Z","vendor":"MoreFun"} [2026-09-02 13:32:20.330] [INFO ] Decoded JSON: %{"model" => "SR800 A20", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-09-02T21:32:01Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-09-02T21:32:01Z", "value" => "100"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-09-02T21:32:01Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-09-02T21:32:01Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-09-02T21:32:01Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-09-02T21:32:01Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-09-02T21:32:01Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-09-02T21:32:01Z", "value" => "3.8.7.1-SNAPSHOT-SR800"}], "sn" => "28260702280001", "uploadTime" => "2026-09-02T21:32:01Z", "vendor" => "MoreFun"} [2026-09-02 13:32:20.330] [INFO ] Extracted versions for 28260702280001: %{application: "3.8.7.1-SNAPSHOT-SR800", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-09-02 13:32:20.330] [INFO ] Detected missing versions for 28260702280001, triggering auto-push [2026-09-02 13:32:20.330] [INFO ] AutoPushService: Triggering auto-push for 28260702280001 (MoreFun SR800 A20) - missing version [2026-09-02 13:32:20.336] [DEBUG] QUERY OK source="parameter_templates" db=5.0ms idle=1070.4ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["MoreFun", "SR800 A20"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-09-02 13:32:20.339] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms idle=72.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["28260702280001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-09-02 13:32:20.346] [DEBUG] QUERY OK source="parameter_template_values" db=5.6ms idle=4.0ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [15] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-09-02 13:32:20.348] [DEBUG] QUERY OK source="parameter_definitions" db=1.1ms queue=1.0ms idle=8.1ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-09-02 13:32:20.472] [DEBUG] QUERY OK db=122.8ms idle=3.2ms INSERT INTO `parameter_push_logs` (`status`,`request_id`,`terminal_id`,`template_id`,`push_type`,`config_type`,`device_vendor`,`device_model`,`parameters_sent`,`log_time`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", 45188, 64, 15, "full", "parameter", "MoreFun", "SR800 A20", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", "PINPAD_MASTER_KEY_INDEX" => "0", "COMM_PORT" => "80", ...}, ~U[2026-09-02 13:32:20Z], "missing_version", "1.0.0", ~N[2026-09-02 13:32:20], ~N[2026-09-02 13:32:20]] ↳ TmsCore.TerminalManagement.AutoPushService.push_generic_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:235 [2026-09-02 13:32:20.472] [INFO ] AutoPushService: Created push log 61196 for parameters (template: 15) [2026-09-02 13:32:20.472] [INFO ] SR600 MQTT Command: %{"command" => "file_download", "merchant_config" => "true", "request_id" => 45188, "retry_count" => "3", "version" => "1.0.0"} [2026-09-02 13:32:20.472] [INFO ] AutoPushService: Sending parameter push to 28260702280001 on topic: /ota/pFppbioOCKlo5c8E/28260702280001/update [2026-09-02 13:32:20.473] [INFO ] AutoPushService: Parameter push sent successfully to 28260702280001 [2026-09-02 13:32:20.548] [DEBUG] QUERY OK db=74.8ms idle=124.9ms INSERT INTO `parameter_push_logs` (`status`,`request_id`,`terminal_id`,`push_type`,`config_type`,`device_vendor`,`device_model`,`log_time`,`trigger_reason`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?) ["pending", 45252, 64, "full", "emv_config", "MoreFun", "SR800 A20", ~U[2026-09-02 13:32:20Z], "missing_version", ~N[2026-09-02 13:32:20], ~N[2026-09-02 13:32:20]] ↳ TmsCore.TerminalManagement.AutoPushService.push_regular_config/5, at: lib/tms_core/terminal_management/auto_push_service.ex:427 [2026-09-02 13:32:20.548] [INFO ] AutoPushService: Created push log for emv_config [2026-09-02 13:32:20.548] [INFO ] SR600 MQTT Command: %{"command" => "file_download", "merchant_config" => "true", "request_id" => 45252, "retry_count" => "3"} [2026-09-02 13:32:20.549] [INFO ] AutoPushService: Sending emv_config push to 28260702280001 on topic: /ota/pFppbioOCKlo5c8E/28260702280001/update [2026-09-02 13:32:20.549] [INFO ] AutoPushService: emv_config push sent successfully to 28260702280001 [2026-09-02 13:32:20.550] [DEBUG] QUERY OK source="config_file_versions" db=1.3ms idle=77.4ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "SR800 A20"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-09-02 13:32:20.551] [INFO ] KeysConfigService: Generating keys.json for 28260702280001 (SR800 A20) [2026-09-02 13:32:20.552] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=2.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["28260702280001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-09-02 13:32:20.552] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 28260702280001 with params: %{"kekKcv" => "112233", "model" => "SR800 A20", "serialNumber" => "28260702280001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-09-02 13:32:20.554] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-09-02 13:32:20.556] [ERROR] KeysConfigService: Failed to generate keys for 28260702280001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 13:32:20.557] [ERROR] AutoPushService: Failed to generate keys.json for 28260702280001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 13:32:20.627] [DEBUG] QUERY OK db=69.7ms idle=6.3ms INSERT INTO `parameter_push_logs` (`status`,`request_id`,`terminal_id`,`push_type`,`config_type`,`device_vendor`,`device_model`,`log_time`,`trigger_reason`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?) ["pending", 25219, 64, "full", "application", "MoreFun", "SR800 A20", ~U[2026-09-02 13:32:20Z], "missing_version", ~N[2026-09-02 13:32:20], ~N[2026-09-02 13:32:20]] ↳ TmsCore.TerminalManagement.AutoPushService.push_regular_config/5, at: lib/tms_core/terminal_management/auto_push_service.ex:427 [2026-09-02 13:32:20.627] [INFO ] AutoPushService: Created push log for application [2026-09-02 13:32:20.627] [INFO ] SR600 MQTT Command: %{"command" => "file_download", "merchant_config" => "true", "request_id" => 25219, "retry_count" => "3"} [2026-09-02 13:32:20.627] [INFO ] AutoPushService: Sending application push to 28260702280001 on topic: /ota/pFppbioOCKlo5c8E/28260702280001/update [2026-09-02 13:32:20.627] [INFO ] AutoPushService: application push sent successfully to 28260702280001 [2026-09-02 13:32:20.627] [INFO ] AutoPushService: Auto-push completed for 28260702280001 [2026-09-02 13:32:20.628] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=76.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["28260702280001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:140 [2026-09-02 13:32:20.629] [INFO ] Terminal updated: 28260702280001 [2026-09-02 13:32:20.638] [DEBUG] QUERY OK source="tms_terminals" db=9.0ms queue=0.3ms idle=2.5ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-09-02 13:32:20], 64] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:164 [2026-09-02 13:32:20.647] [DEBUG] QUERY OK source="parameter_templates" db=6.4ms idle=10.4ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) ORDER BY p0.`updated_at` DESC LIMIT 1 ["MoreFun", "SR800 A20"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_parameter_version/2, at: lib/tms_core/terminal_management/version_compliance_checker.ex:105 [2026-09-02 13:32:20.650] [DEBUG] QUERY OK source="config_file_versions" db=2.4ms idle=8.9ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "SR800 A20"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-09-02 13:32:20.653] [DEBUG] QUERY OK source="config_file_versions" db=2.4ms idle=5.1ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "SR800 A20"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-09-02 13:32:20.653] [INFO ] VersionComplianceChecker: 28260702280001 — outdated configs: [{:application, "3.8.7.1-SNAPSHOT-SR800", "3.8.5"}] [2026-09-02 13:32:20.727] [DEBUG] QUERY OK source="parameter_push_logs" db=72.5ms idle=4.4ms SELECT TRUE FROM `parameter_push_logs` AS p0 WHERE ((((p0.`terminal_id` = ?) AND (p0.`config_type` = ?)) AND (p0.`inserted_at` >= ?)) AND p0.`status` IN ('pending','sent')) LIMIT 1 [64, "application", ~N[2026-09-02 13:02:20]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-09-02 13:32:20.727] [INFO ] VersionComplianceChecker: Skipping application re-push for 28260702280001 (push already in-flight or within cooldown) [2026-09-02 13:32:20.732] [DEBUG] QUERY OK source="tms_terminals" db=4.2ms idle=74.6ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["28260702280001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:1184 [2026-09-02 13:32:20.773] [DEBUG] QUERY OK source="tms_terminals" db=40.3ms idle=5.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 13:32:20], 64] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:174 [2026-09-02 13:32:20.775] [DEBUG] QUERY OK source="app_upgrade_device_statuses" db=0.4ms queue=0.1ms idle=43.5ms SELECT a0.`id`, a0.`config_id`, a0.`device_id`, a0.`device_sn`, a0.`vendor`, a0.`model`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`update_result`, a0.`status`, a0.`remark`, a0.`finish_time`, a0.`pushed_time`, a0.`retry_count`, a0.`inserted_at`, a0.`updated_at` FROM `app_upgrade_device_statuses` AS a0 WHERE ((a0.`device_sn` = ?) AND a0.`status` IN ('pending','pushed')) ["28260702280001"] ↳ TmsCore.TerminalManagement.AppUpgradeService.maybe_repush_for_device/1, at: lib/tms_core/terminal_management/app_upgrade_service.ex:148 [2026-09-02 13:32:20.868] [DEBUG] QUERY OK db=90.6ms idle=2.8ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [64, "organization_id", "2026-09-02T21:32:01Z", ~N[2026-09-02 13:32:20], ~N[2026-09-02 13:32:20]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:179 [2026-09-02 13:32:20.868] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 106572, oid: "organization_id", upload_time: "2026-09-02T21:32:01Z", terminal_id: 64, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:32:20], updated_at: ~N[2026-09-02 13:32:20]} [2026-09-02 13:32:20.870] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-09-02T21:32:01Z", "value" => "online"} [2026-09-02 13:32:20.952] [DEBUG] QUERY OK db=81.9ms idle=95.0ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-09-02T21:32:01Z", "online", "status", 106572, ~N[2026-09-02 13:32:20], ~N[2026-09-02 13:32:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:32:20.952] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093312, itemkey: "status", value: "online", timestamp: "2026-09-02T21:32:01Z", message: "Terminal status update", status_log_id: 106572, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:32:20], updated_at: ~N[2026-09-02 13:32:20]}} [2026-09-02 13:32:20.953] [INFO ] Setting terminal 28260702280001 status to 'online' from status itemkey [2026-09-02 13:32:20.955] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-09-02T21:32:01Z", "value" => "100"} [2026-09-02 13:32:21.028] [DEBUG] QUERY OK db=73.2ms idle=89.1ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-09-02T21:32:01Z", "100", "battery", 106572, ~N[2026-09-02 13:32:20], ~N[2026-09-02 13:32:20]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:32:21.031] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093317, itemkey: "battery", value: "100", timestamp: "2026-09-02T21:32:01Z", message: "Battery level", status_log_id: 106572, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:32:20], updated_at: ~N[2026-09-02 13:32:20]}} [2026-09-02 13:32:21.031] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-09-02T21:32:01Z", "value" => "online"} [2026-09-02 13:32:21.123] [DEBUG] QUERY OK db=88.5ms idle=81.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-09-02T21:32:01Z", "online", "network", 106572, ~N[2026-09-02 13:32:21], ~N[2026-09-02 13:32:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:32:21.123] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093321, itemkey: "network", value: "online", timestamp: "2026-09-02T21:32:01Z", message: "Network connectivity", status_log_id: 106572, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:32:21], updated_at: ~N[2026-09-02 13:32:21]}} [2026-09-02 13:32:21.123] [INFO ] Setting terminal 28260702280001 status to 'online' from network itemkey [2026-09-02 13:32:21.125] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-09-02T21:32:01Z", "value" => "0"} [2026-09-02 13:32:21.200] [DEBUG] QUERY OK db=75.6ms idle=96.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-09-02T21:32:01Z", "0", "cpu", 106572, ~N[2026-09-02 13:32:21], ~N[2026-09-02 13:32:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:32:21.201] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093325, itemkey: "cpu", value: "0", timestamp: "2026-09-02T21:32:01Z", message: "CPU usage percentage", status_log_id: 106572, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:32:21], updated_at: ~N[2026-09-02 13:32:21]}} [2026-09-02 13:32:21.201] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-09-02T21:32:01Z", "value" => "1.0.0"} [2026-09-02 13:32:21.283] [DEBUG] QUERY OK db=81.5ms idle=78.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-09-02T21:32:01Z", "1.0.0", "parameter_config", 106572, ~N[2026-09-02 13:32:21], ~N[2026-09-02 13:32:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:32:21.283] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093327, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-09-02T21:32:01Z", message: "Current parameters version", status_log_id: 106572, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:32:21], updated_at: ~N[2026-09-02 13:32:21]}} [2026-09-02 13:32:21.283] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-09-02T21:32:01Z", "value" => "1.0.1"} [2026-09-02 13:32:21.339] [DEBUG] QUERY OK db=54.7ms idle=16.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-09-02T21:32:01Z", "1.0.1", "emv_config", 106572, ~N[2026-09-02 13:32:21], ~N[2026-09-02 13:32:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:32:21.339] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093332, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-09-02T21:32:01Z", message: "Current EMV config version", status_log_id: 106572, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:32:21], updated_at: ~N[2026-09-02 13:32:21]}} [2026-09-02 13:32:21.339] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-09-02T21:32:01Z", "value" => ""} [2026-09-02 13:32:21.419] [DEBUG] QUERY OK db=76.1ms queue=3.4ms idle=56.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-09-02T21:32:01Z", "keys_config", 106572, ~N[2026-09-02 13:32:21], ~N[2026-09-02 13:32:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:32:21.420] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093336, itemkey: "keys_config", value: nil, timestamp: "2026-09-02T21:32:01Z", message: "Current keys config version", status_log_id: 106572, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:32:21], updated_at: ~N[2026-09-02 13:32:21]}} [2026-09-02 13:32:21.420] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-09-02T21:32:01Z", "value" => "3.8.7.1-SNAPSHOT-SR800"} [2026-09-02 13:32:21.486] [DEBUG] QUERY OK db=65.3ms idle=81.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-09-02T21:32:01Z", "3.8.7.1-SNAPSHOT-SR800", "application", 106572, ~N[2026-09-02 13:32:21], ~N[2026-09-02 13:32:21]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:32:21.486] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093339, itemkey: "application", value: "3.8.7.1-SNAPSHOT-SR800", timestamp: "2026-09-02T21:32:01Z", message: "Current application version", status_log_id: 106572, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:32:21], updated_at: ~N[2026-09-02 13:32:21]}} [2026-09-02 13:32:21.486] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"16994","status":"failed","timestamp":1788384722889,"type":"tms_response"} [2026-09-02 13:32:21.487] [INFO ] Processing file download response for device 28260702280001, request_id: 16994 [2026-09-02 13:32:21.490] [DEBUG] QUERY OK source="file_download_logs" db=1.3ms idle=68.8ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["16994"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:32:21.490] [INFO ] No file download log for request_id 16994; response not attached to a push [2026-09-02 13:32:21.490] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:32:21.490363Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "16994", "status" => "failed", "timestamp" => 1788384722889, "type" => "tms_response"}, request_id: "16994", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:32:21.490] [WARN ] Unexpected async result [2026-09-02 13:32:21.490] [WARN ] Unexpected async result [2026-09-02 13:32:21.490] [WARN ] Unexpected async result [2026-09-02 13:32:21.721] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"45188","status":"failed","timestamp":1788384723001,"type":"tms_response"} [2026-09-02 13:32:21.722] [INFO ] Processing file download response for device 28260702280001, request_id: 45188 [2026-09-02 13:32:21.723] [DEBUG] QUERY OK source="file_download_logs" db=0.9ms queue=0.1ms idle=236.3ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["45188"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:32:21.723] [INFO ] No file download log for request_id 45188; response not attached to a push [2026-09-02 13:32:21.723] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:32:21.723725Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "45188", "status" => "failed", "timestamp" => 1788384723001, "type" => "tms_response"}, request_id: "45188", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:32:21.726] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"164804","status":"failed","timestamp":1788384723113,"type":"tms_response"} [2026-09-02 13:32:21.726] [INFO ] Processing file download response for device 28260702280001, request_id: 164804 [2026-09-02 13:32:21.728] [DEBUG] QUERY OK source="file_download_logs" db=1.0ms idle=237.2ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["164804"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:32:21.728] [INFO ] No file download log for request_id 164804; response not attached to a push [2026-09-02 13:32:21.728] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:32:21.728765Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "164804", "status" => "failed", "timestamp" => 1788384723113, "type" => "tms_response"}, request_id: "164804", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:32:21.729] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"4932","status":"failed","timestamp":1788384723225,"type":"tms_response"} [2026-09-02 13:32:21.729] [INFO ] Processing file download response for device 28260702280001, request_id: 4932 [2026-09-02 13:32:21.730] [DEBUG] QUERY OK source="file_download_logs" db=0.3ms idle=6.5ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["4932"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:32:21.730] [INFO ] No file download log for request_id 4932; response not attached to a push [2026-09-02 13:32:21.730] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:32:21.730558Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "4932", "status" => "failed", "timestamp" => 1788384723225, "type" => "tms_response"}, request_id: "4932", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:32:22.130] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"6052","status":"failed","timestamp":1788384723339,"type":"tms_response"} [2026-09-02 13:32:22.130] [INFO ] Processing file download response for device 28260702280001, request_id: 6052 [2026-09-02 13:32:22.132] [DEBUG] QUERY OK source="file_download_logs" db=1.0ms idle=402.7ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["6052"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:32:22.132] [INFO ] No file download log for request_id 6052; response not attached to a push [2026-09-02 13:32:22.132] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:32:22.132542Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "6052", "status" => "failed", "timestamp" => 1788384723339, "type" => "tms_response"}, request_id: "6052", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:32:22.135] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"45252","status":"failed","timestamp":1788384723453,"type":"tms_response"} [2026-09-02 13:32:22.135] [INFO ] Processing file download response for device 28260702280001, request_id: 45252 [2026-09-02 13:32:22.138] [DEBUG] QUERY OK source="file_download_logs" db=1.7ms idle=405.7ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["45252"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:32:22.138] [INFO ] No file download log for request_id 45252; response not attached to a push [2026-09-02 13:32:22.138] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:32:22.138317Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "45252", "status" => "failed", "timestamp" => 1788384723453, "type" => "tms_response"}, request_id: "45252", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:32:22.138] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"11491","status":"failed","timestamp":1788384723571,"type":"tms_response"} [2026-09-02 13:32:22.138] [INFO ] Processing file download response for device 28260702280001, request_id: 11491 [2026-09-02 13:32:22.141] [DEBUG] QUERY OK source="file_download_logs" db=0.5ms idle=8.2ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["11491"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:32:22.141] [INFO ] No file download log for request_id 11491; response not attached to a push [2026-09-02 13:32:22.141] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:32:22.141228Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "11491", "status" => "failed", "timestamp" => 1788384723571, "type" => "tms_response"}, request_id: "11491", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:32:22.540] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"4996","status":"failed","timestamp":1788384723683,"type":"tms_response"} [2026-09-02 13:32:22.540] [INFO ] Processing file download response for device 28260702280001, request_id: 4996 [2026-09-02 13:32:22.543] [DEBUG] QUERY OK source="file_download_logs" db=2.8ms idle=399.8ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["4996"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:32:22.543] [INFO ] No file download log for request_id 4996; response not attached to a push [2026-09-02 13:32:22.544] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:32:22.543970Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "4996", "status" => "failed", "timestamp" => 1788384723683, "type" => "tms_response"}, request_id: "4996", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:32:22.544] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"213634","status":"failed","timestamp":1788384723795,"type":"tms_response"} [2026-09-02 13:32:22.544] [INFO ] Processing file download response for device 28260702280001, request_id: 213634 [2026-09-02 13:32:22.546] [DEBUG] QUERY OK source="file_download_logs" db=2.3ms idle=272.8ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["213634"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:32:22.547] [INFO ] No file download log for request_id 213634; response not attached to a push [2026-09-02 13:32:22.547] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:32:22.547622Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "213634", "status" => "failed", "timestamp" => 1788384723795, "type" => "tms_response"}, request_id: "213634", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:32:22.550] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"25219","status":"failed","timestamp":1788384723906,"type":"tms_response"} [2026-09-02 13:32:22.551] [INFO ] Processing file download response for device 28260702280001, request_id: 25219 [2026-09-02 13:32:22.552] [DEBUG] QUERY OK source="file_download_logs" db=0.8ms idle=7.5ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["25219"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:32:22.552] [INFO ] No file download log for request_id 25219; response not attached to a push [2026-09-02 13:32:22.552] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:32:22.552490Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "25219", "status" => "failed", "timestamp" => 1788384723906, "type" => "tms_response"}, request_id: "25219", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:32:22.552] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"5092","status":"failed","timestamp":1788384724016,"type":"tms_response"} [2026-09-02 13:32:22.552] [INFO ] Processing file download response for device 28260702280001, request_id: 5092 [2026-09-02 13:32:22.554] [DEBUG] QUERY OK source="file_download_logs" db=1.4ms idle=5.9ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["5092"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:32:22.554] [INFO ] No file download log for request_id 5092; response not attached to a push [2026-09-02 13:32:22.554] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:32:22.554635Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "5092", "status" => "failed", "timestamp" => 1788384724016, "type" => "tms_response"}, request_id: "5092", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:32:22.950] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"164900","status":"failed","timestamp":1788384724128,"type":"tms_response"} [2026-09-02 13:32:22.950] [INFO ] Processing file download response for device 28260702280001, request_id: 164900 [2026-09-02 13:32:22.953] [DEBUG] QUERY OK source="file_download_logs" db=0.4ms queue=0.3ms idle=400.3ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["164900"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:32:22.953] [INFO ] No file download log for request_id 164900; response not attached to a push [2026-09-02 13:32:22.953] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:32:22.953689Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "164900", "status" => "failed", "timestamp" => 1788384724128, "type" => "tms_response"}, request_id: "164900", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:35:45.134] [INFO ] Received status update for terminal 28260702280001 [2026-09-02 13:35:45.134] [INFO ] Incoming JSON payload: {"org.device":[{"itemkey":"status","message":"Terminal status update","timestamp":"2026-09-02T21:35:26Z","value":"online"},{"itemkey":"battery","message":"Battery level","timestamp":"2026-09-02T21:35:26Z","value":"100"},{"itemkey":"network","message":"Network connectivity","timestamp":"2026-09-02T21:35:26Z","value":"online"},{"itemkey":"cpu","message":"CPU usage percentage","timestamp":"2026-09-02T21:35:26Z","value":"0"},{"itemkey":"parameter_config","message":"Current parameters version","timestamp":"2026-09-02T21:35:26Z","value":"1.0.0"},{"itemkey":"emv_config","message":"Current EMV config version","timestamp":"2026-09-02T21:35:26Z","value":"1.0.1"},{"itemkey":"keys_config","message":"Current keys config version","timestamp":"2026-09-02T21:35:26Z","value":""},{"itemkey":"application","message":"Current application version","timestamp":"2026-09-02T21:35:26Z","value":"3.8.7.1-SNAPSHOT-SR800"}],"model":"SR800 A20","oid":"organization_id","sn":"28260702280001","uploadTime":"2026-09-02T21:35:26Z","vendor":"MoreFun"} [2026-09-02 13:35:45.135] [INFO ] Decoded JSON: %{"model" => "SR800 A20", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-09-02T21:35:26Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-09-02T21:35:26Z", "value" => "100"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-09-02T21:35:26Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-09-02T21:35:26Z", "value" => "0"}, %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-09-02T21:35:26Z", "value" => "1.0.0"}, %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-09-02T21:35:26Z", "value" => "1.0.1"}, %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-09-02T21:35:26Z", "value" => ""}, %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-09-02T21:35:26Z", "value" => "3.8.7.1-SNAPSHOT-SR800"}], "sn" => "28260702280001", "uploadTime" => "2026-09-02T21:35:26Z", "vendor" => "MoreFun"} [2026-09-02 13:35:45.135] [INFO ] Extracted versions for 28260702280001: %{application: "3.8.7.1-SNAPSHOT-SR800", emv_config: "1.0.1", keys_config: "", parameter_config: "1.0.0"} [2026-09-02 13:35:45.135] [INFO ] Detected missing versions for 28260702280001, triggering auto-push [2026-09-02 13:35:45.135] [INFO ] AutoPushService: Triggering auto-push for 28260702280001 (MoreFun SR800 A20) - missing version [2026-09-02 13:35:45.137] [DEBUG] QUERY OK source="parameter_templates" db=1.6ms idle=819.5ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["MoreFun", "SR800 A20"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:132 [2026-09-02 13:35:45.139] [DEBUG] QUERY OK source="tms_terminals" db=1.8ms idle=210.0ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["28260702280001"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:37 [2026-09-02 13:35:45.143] [DEBUG] QUERY OK source="parameter_template_values" db=3.5ms idle=2.7ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [15] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-09-02 13:35:45.147] [DEBUG] QUERY OK source="parameter_definitions" db=2.0ms queue=1.2ms idle=4.6ms SELECT p0.`id`, p0.`key`, p0.`name`, p0.`description`, p0.`data_type`, p0.`default_value`, p0.`is_required`, p0.`is_system`, p0.`validation_rules`, p0.`display_order`, p0.`is_active`, p0.`category_id`, p0.`inserted_at`, p0.`updated_at`, p0.`id` FROM `parameter_definitions` AS p0 WHERE (p0.`id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [93, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:157 [2026-09-02 13:35:45.213] [DEBUG] QUERY OK db=61.2ms queue=0.1ms idle=7.7ms INSERT INTO `parameter_push_logs` (`status`,`request_id`,`terminal_id`,`template_id`,`push_type`,`config_type`,`device_vendor`,`device_model`,`parameters_sent`,`log_time`,`trigger_reason`,`version_sent`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?) ["pending", 14242, 64, 15, "full", "parameter", "MoreFun", "SR800 A20", %{"PASSWORD_SECURITY" => "888888", "TOMS_FLY_RECEIPT" => "0", "SCAN_EXTERN_USB_WAIT_TIME" => "300", "EXTERNAL_PINPAD_YSDK" => "1", "COMM_NII" => "782", "TRANS_VOID" => "1", "PASSWORD_SYSTEM_ADMIN" => "000000", "PINPAD_ALGORITHM_TYPE" => "0", "BASE_MAX_TRANS_COUNT" => "500", "BASE_CURRENCY_CODE" => "784", "TRANS_INSTALLMENT" => "0", "COMM_TIMEOUT" => "60", "SCAN_EXTERN_CONNECT_MODE" => "0", "NFC_RECEIPT" => "0", "COMM_SERVER_ADDRESS" => "40.120.104.51", "PRINT_EXTERNAL_CONNECT_MODE" => "1", "PASSWORD_ADMIN" => "123456", "ELECSIGN_IS_SUPPORT" => "0", "SCAN_PRIORITY_SCANNER" => "1", "OTHER_VOID_PIN" => "0", "TRANS_REFUND" => "0", "BASE_TRACE_NO" => "000001", "MQTT_HEARTBEAT_INTERVAL" => "60", "TRANS_MOBILE_PAY" => "0", "PRINT_EXTERNAL_SERIAL_BAUDRATE" => "115200", "OTHER_VOID_CARD" => "0", "TOMS_FLY_PARAMETERS" => "0", "TRANS_BALANCE" => "0", "BASE_MAX_REFUND_AMOUNT" => "1000000", "PINPAD_TIMEOUT" => "60", "SCAN_EXTERN_SERIAL_BAUDRATE" => "115200", "PRINT_REMARKS" => "Thank you, Visit Again", "PRINT_COUNT" => "2", "COMM_TPDU" => "6000782000", "PRINT_EXTERNAL" => "0", "EXTERNAL_PINPAD_CONNECT_MODE" => "0", "TRANS_PREAUTH" => "0", "OTHER_THRID_BILL_SHOW" => "0", "COMM_USE_SSL" => "0", "PINPAD_MASTER_KEY_INDEX" => "0", "COMM_PORT" => "80", ...}, ~U[2026-09-02 13:35:45Z], "missing_version", "1.0.0", ~N[2026-09-02 13:35:45], ~N[2026-09-02 13:35:45]] ↳ TmsCore.TerminalManagement.AutoPushService.push_generic_params/6, at: lib/tms_core/terminal_management/auto_push_service.ex:235 [2026-09-02 13:35:45.213] [INFO ] AutoPushService: Created push log 61205 for parameters (template: 15) [2026-09-02 13:35:45.213] [INFO ] SR600 MQTT Command: %{"command" => "file_download", "merchant_config" => "true", "request_id" => 14242, "retry_count" => "3", "version" => "1.0.0"} [2026-09-02 13:35:45.213] [INFO ] AutoPushService: Sending parameter push to 28260702280001 on topic: /ota/pFppbioOCKlo5c8E/28260702280001/update [2026-09-02 13:35:45.214] [INFO ] AutoPushService: Parameter push sent successfully to 28260702280001 [2026-09-02 13:35:45.266] [DEBUG] QUERY OK db=51.0ms idle=67.6ms INSERT INTO `parameter_push_logs` (`status`,`request_id`,`terminal_id`,`push_type`,`config_type`,`device_vendor`,`device_model`,`log_time`,`trigger_reason`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?) ["pending", 14306, 64, "full", "emv_config", "MoreFun", "SR800 A20", ~U[2026-09-02 13:35:45Z], "missing_version", ~N[2026-09-02 13:35:45], ~N[2026-09-02 13:35:45]] ↳ TmsCore.TerminalManagement.AutoPushService.push_regular_config/5, at: lib/tms_core/terminal_management/auto_push_service.ex:427 [2026-09-02 13:35:45.266] [INFO ] AutoPushService: Created push log for emv_config [2026-09-02 13:35:45.266] [INFO ] SR600 MQTT Command: %{"command" => "file_download", "merchant_config" => "true", "request_id" => 14306, "retry_count" => "3"} [2026-09-02 13:35:45.268] [INFO ] AutoPushService: Sending emv_config push to 28260702280001 on topic: /ota/pFppbioOCKlo5c8E/28260702280001/update [2026-09-02 13:35:45.268] [INFO ] AutoPushService: emv_config push sent successfully to 28260702280001 [2026-09-02 13:35:45.272] [DEBUG] QUERY OK source="config_file_versions" db=2.9ms idle=56.4ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["keys_config", "MoreFun", "SR800 A20"] ↳ TmsCore.TerminalManagement.AutoPushService.push_keys_config/4, at: lib/tms_core/terminal_management/auto_push_service.ex:322 [2026-09-02 13:35:45.272] [INFO ] KeysConfigService: Generating keys.json for 28260702280001 (SR800 A20) [2026-09-02 13:35:45.273] [DEBUG] QUERY OK source="tms_terminals" db=0.6ms idle=6.5ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["28260702280001"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [2026-09-02 13:35:45.273] [INFO ] KeysConfigService TMS Core: Calling getRki endpoint for 28260702280001 with params: %{"kekKcv" => "112233", "model" => "SR800 A20", "serialNumber" => "28260702280001", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [2026-09-02 13:35:45.274] [ERROR] KeysConfigService: Failed to fetch RKI key: "%Req.TransportError{reason: :econnrefused}" [2026-09-02 13:35:45.275] [ERROR] KeysConfigService: Failed to generate keys for 28260702280001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 13:35:45.275] [ERROR] AutoPushService: Failed to generate keys.json for 28260702280001: "Failed to fetch RKI key: \"%Req.TransportError{reason: :econnrefused}\"" [2026-09-02 13:35:45.327] [DEBUG] QUERY OK db=51.4ms idle=3.4ms INSERT INTO `parameter_push_logs` (`status`,`request_id`,`terminal_id`,`push_type`,`config_type`,`device_vendor`,`device_model`,`log_time`,`trigger_reason`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?) ["pending", 25507, 64, "full", "application", "MoreFun", "SR800 A20", ~U[2026-09-02 13:35:45Z], "missing_version", ~N[2026-09-02 13:35:45], ~N[2026-09-02 13:35:45]] ↳ TmsCore.TerminalManagement.AutoPushService.push_regular_config/5, at: lib/tms_core/terminal_management/auto_push_service.ex:427 [2026-09-02 13:35:45.327] [INFO ] AutoPushService: Created push log for application [2026-09-02 13:35:45.327] [INFO ] SR600 MQTT Command: %{"command" => "file_download", "merchant_config" => "true", "request_id" => 25507, "retry_count" => "3"} [2026-09-02 13:35:45.327] [INFO ] AutoPushService: Sending application push to 28260702280001 on topic: /ota/pFppbioOCKlo5c8E/28260702280001/update [2026-09-02 13:35:45.327] [INFO ] AutoPushService: application push sent successfully to 28260702280001 [2026-09-02 13:35:45.327] [INFO ] AutoPushService: Auto-push completed for 28260702280001 [2026-09-02 13:35:45.329] [DEBUG] QUERY OK source="tms_terminals" db=1.4ms idle=6.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["28260702280001"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:140 [2026-09-02 13:35:45.332] [INFO ] Terminal updated: 28260702280001 [2026-09-02 13:35:45.465] [DEBUG] QUERY OK source="tms_terminals" db=132.6ms idle=5.4ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["connected", ~N[2026-09-02 13:35:45], 64] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:164 [2026-09-02 13:35:45.466] [DEBUG] QUERY OK source="parameter_templates" db=0.5ms idle=136.0ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`version`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) ORDER BY p0.`updated_at` DESC LIMIT 1 ["MoreFun", "SR800 A20"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_parameter_version/2, at: lib/tms_core/terminal_management/version_compliance_checker.ex:105 [2026-09-02 13:35:45.467] [DEBUG] QUERY OK source="config_file_versions" db=0.4ms idle=1.2ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["emv_config", "MoreFun", "SR800 A20"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-09-02 13:35:45.468] [DEBUG] QUERY OK source="config_file_versions" db=1.0ms idle=1.0ms SELECT c0.`id`, c0.`config_type`, c0.`vendor`, c0.`model`, c0.`version`, c0.`file_path`, c0.`checksum`, c0.`is_active`, c0.`release_notes`, c0.`creator_id`, c0.`inserted_at`, c0.`updated_at` FROM `config_file_versions` AS c0 WHERE ((((c0.`config_type` = ?) AND (c0.`vendor` = ?)) AND (c0.`model` = ?)) AND (c0.`is_active` = TRUE)) LIMIT 1 ["application", "MoreFun", "SR800 A20"] ↳ TmsCore.TerminalManagement.VersionComplianceChecker.get_target_file_version/3, at: lib/tms_core/terminal_management/version_compliance_checker.ex:120 [2026-09-02 13:35:45.468] [INFO ] VersionComplianceChecker: 28260702280001 — outdated configs: [{:application, "3.8.7.1-SNAPSHOT-SR800", "3.8.5"}] [2026-09-02 13:35:45.522] [DEBUG] QUERY OK source="parameter_push_logs" db=52.4ms idle=2.3ms SELECT TRUE FROM `parameter_push_logs` AS p0 WHERE ((((p0.`terminal_id` = ?) AND (p0.`config_type` = ?)) AND (p0.`inserted_at` >= ?)) AND p0.`status` IN ('pending','sent')) LIMIT 1 [64, "application", ~N[2026-09-02 13:05:45]] ↳ anonymous fn/4 in TmsCore.TerminalManagement.VersionComplianceChecker.check_and_remediate/4, at: lib/tms_core/terminal_management/version_compliance_checker.ex:49 [2026-09-02 13:35:45.522] [INFO ] VersionComplianceChecker: Skipping application re-push for 28260702280001 (push already in-flight or within cooldown) [2026-09-02 13:35:45.525] [DEBUG] QUERY OK source="tms_terminals" db=2.5ms idle=54.1ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["28260702280001"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:1184 [2026-09-02 13:35:45.581] [DEBUG] QUERY OK source="tms_terminals" db=55.5ms idle=4.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 13:35:45], 64] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:174 [2026-09-02 13:35:45.583] [DEBUG] QUERY OK source="app_upgrade_device_statuses" db=0.8ms idle=1.1ms SELECT a0.`id`, a0.`config_id`, a0.`device_id`, a0.`device_sn`, a0.`vendor`, a0.`model`, a0.`app_version`, a0.`data_version`, a0.`system_version`, a0.`update_result`, a0.`status`, a0.`remark`, a0.`finish_time`, a0.`pushed_time`, a0.`retry_count`, a0.`inserted_at`, a0.`updated_at` FROM `app_upgrade_device_statuses` AS a0 WHERE ((a0.`device_sn` = ?) AND a0.`status` IN ('pending','pushed')) ["28260702280001"] ↳ TmsCore.TerminalManagement.AppUpgradeService.maybe_repush_for_device/1, at: lib/tms_core/terminal_management/app_upgrade_service.ex:148 [2026-09-02 13:35:45.643] [DEBUG] QUERY OK db=58.8ms queue=0.4ms idle=0.3ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [64, "organization_id", "2026-09-02T21:35:26Z", ~N[2026-09-02 13:35:45], ~N[2026-09-02 13:35:45]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:179 [2026-09-02 13:35:45.643] [INFO ] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 106575, oid: "organization_id", upload_time: "2026-09-02T21:35:26Z", terminal_id: 64, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:35:45], updated_at: ~N[2026-09-02 13:35:45]} [2026-09-02 13:35:45.643] [INFO ] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2026-09-02T21:35:26Z", "value" => "online"} [2026-09-02 13:35:45.748] [DEBUG] QUERY OK db=104.6ms idle=54.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2026-09-02T21:35:26Z", "online", "status", 106575, ~N[2026-09-02 13:35:45], ~N[2026-09-02 13:35:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:35:45.749] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093343, itemkey: "status", value: "online", timestamp: "2026-09-02T21:35:26Z", message: "Terminal status update", status_log_id: 106575, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:35:45], updated_at: ~N[2026-09-02 13:35:45]}} [2026-09-02 13:35:45.749] [INFO ] Setting terminal 28260702280001 status to 'online' from status itemkey [2026-09-02 13:35:45.749] [INFO ] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2026-09-02T21:35:26Z", "value" => "100"} [2026-09-02 13:35:45.818] [DEBUG] QUERY OK db=68.6ms idle=106.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2026-09-02T21:35:26Z", "100", "battery", 106575, ~N[2026-09-02 13:35:45], ~N[2026-09-02 13:35:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:35:45.818] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093347, itemkey: "battery", value: "100", timestamp: "2026-09-02T21:35:26Z", message: "Battery level", status_log_id: 106575, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:35:45], updated_at: ~N[2026-09-02 13:35:45]}} [2026-09-02 13:35:45.818] [INFO ] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2026-09-02T21:35:26Z", "value" => "online"} [2026-09-02 13:35:45.873] [DEBUG] QUERY OK db=54.4ms idle=70.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2026-09-02T21:35:26Z", "online", "network", 106575, ~N[2026-09-02 13:35:45], ~N[2026-09-02 13:35:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:35:45.874] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093351, itemkey: "network", value: "online", timestamp: "2026-09-02T21:35:26Z", message: "Network connectivity", status_log_id: 106575, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:35:45], updated_at: ~N[2026-09-02 13:35:45]}} [2026-09-02 13:35:45.874] [INFO ] Setting terminal 28260702280001 status to 'online' from network itemkey [2026-09-02 13:35:45.874] [INFO ] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2026-09-02T21:35:26Z", "value" => "0"} [2026-09-02 13:35:45.958] [DEBUG] QUERY OK db=82.8ms idle=56.5ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2026-09-02T21:35:26Z", "0", "cpu", 106575, ~N[2026-09-02 13:35:45], ~N[2026-09-02 13:35:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:35:45.958] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093355, itemkey: "cpu", value: "0", timestamp: "2026-09-02T21:35:26Z", message: "CPU usage percentage", status_log_id: 106575, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:35:45], updated_at: ~N[2026-09-02 13:35:45]}} [2026-09-02 13:35:45.959] [INFO ] Saving status item: %{"itemkey" => "parameter_config", "message" => "Current parameters version", "timestamp" => "2026-09-02T21:35:26Z", "value" => "1.0.0"} [2026-09-02 13:35:46.031] [DEBUG] QUERY OK db=72.0ms queue=0.1ms idle=85.9ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current parameters version", "2026-09-02T21:35:26Z", "1.0.0", "parameter_config", 106575, ~N[2026-09-02 13:35:45], ~N[2026-09-02 13:35:45]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:35:46.032] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093359, itemkey: "parameter_config", value: "1.0.0", timestamp: "2026-09-02T21:35:26Z", message: "Current parameters version", status_log_id: 106575, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:35:45], updated_at: ~N[2026-09-02 13:35:45]}} [2026-09-02 13:35:46.032] [INFO ] Saving status item: %{"itemkey" => "emv_config", "message" => "Current EMV config version", "timestamp" => "2026-09-02T21:35:26Z", "value" => "1.0.1"} [2026-09-02 13:35:46.086] [DEBUG] QUERY OK db=52.6ms idle=75.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current EMV config version", "2026-09-02T21:35:26Z", "1.0.1", "emv_config", 106575, ~N[2026-09-02 13:35:46], ~N[2026-09-02 13:35:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:35:46.086] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093363, itemkey: "emv_config", value: "1.0.1", timestamp: "2026-09-02T21:35:26Z", message: "Current EMV config version", status_log_id: 106575, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:35:46], updated_at: ~N[2026-09-02 13:35:46]}} [2026-09-02 13:35:46.086] [INFO ] Saving status item: %{"itemkey" => "keys_config", "message" => "Current keys config version", "timestamp" => "2026-09-02T21:35:26Z", "value" => ""} [2026-09-02 13:35:46.145] [DEBUG] QUERY OK db=58.3ms idle=55.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?) ["Current keys config version", "2026-09-02T21:35:26Z", "keys_config", 106575, ~N[2026-09-02 13:35:46], ~N[2026-09-02 13:35:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:35:46.145] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093367, itemkey: "keys_config", value: nil, timestamp: "2026-09-02T21:35:26Z", message: "Current keys config version", status_log_id: 106575, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:35:46], updated_at: ~N[2026-09-02 13:35:46]}} [2026-09-02 13:35:46.146] [INFO ] Saving status item: %{"itemkey" => "application", "message" => "Current application version", "timestamp" => "2026-09-02T21:35:26Z", "value" => "3.8.7.1-SNAPSHOT-SR800"} [2026-09-02 13:35:46.188] [INFO ] Performing scheduled filter cache refresh... [2026-09-02 13:35:46.189] [DEBUG] QUERY OK source="tms_terminals" db=0.8ms idle=43.3ms SELECT t0.`area`, t0.`vendor`, t0.`model` FROM `tms_terminals` AS t0 WHERE ((NOT (t0.`area` IS NULL) OR NOT (t0.`vendor` IS NULL)) OR NOT (t0.`model` IS NULL)) [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_terminal_filter_data/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:153 [2026-09-02 13:35:46.191] [DEBUG] QUERY OK source="filter_usage" db=1.0ms idle=0.2ms SELECT f0.`filter_type`, f0.`filter_value`, coalesce(sum(f0.`usage_count`), 0) FROM `filter_usage` AS f0 GROUP BY f0.`filter_type`, f0.`filter_value` [] ↳ TmsCore.TerminalManagement.FilterCacheService.get_usage_statistics/0, at: lib/tms_core/terminal_management/filter_cache_service.ex:190 [2026-09-02 13:35:46.191] [INFO ] Filter cache rebuilt: 0 areas, 5 vendors, 8 models [2026-09-02 13:35:46.216] [DEBUG] QUERY OK db=69.7ms queue=0.1ms idle=60.7ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Current application version", "2026-09-02T21:35:26Z", "3.8.7.1-SNAPSHOT-SR800", "application", 106575, ~N[2026-09-02 13:35:46], ~N[2026-09-02 13:35:46]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:189 [2026-09-02 13:35:46.217] [INFO ] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 1093371, itemkey: "application", value: "3.8.7.1-SNAPSHOT-SR800", timestamp: "2026-09-02T21:35:26Z", message: "Current application version", status_log_id: 106575, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-09-02 13:35:46], updated_at: ~N[2026-09-02 13:35:46]}} [2026-09-02 13:35:46.217] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"14242","status":"failed","timestamp":1788384927327,"type":"tms_response"} [2026-09-02 13:35:46.218] [INFO ] Processing file download response for device 28260702280001, request_id: 14242 [2026-09-02 13:35:46.218] [DEBUG] QUERY OK source="file_download_logs" db=0.5ms idle=27.1ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["14242"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:35:46.218] [INFO ] No file download log for request_id 14242; response not attached to a push [2026-09-02 13:35:46.219] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:35:46.219067Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "14242", "status" => "failed", "timestamp" => 1788384927327, "type" => "tms_response"}, request_id: "14242", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:35:46.220] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"5860","status":"failed","timestamp":1788384927440,"type":"tms_response"} [2026-09-02 13:35:46.221] [INFO ] Processing file download response for device 28260702280001, request_id: 5860 [2026-09-02 13:35:46.222] [DEBUG] QUERY OK source="file_download_logs" db=1.1ms idle=4.6ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["5860"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:35:46.222] [INFO ] No file download log for request_id 5860; response not attached to a push [2026-09-02 13:35:46.223] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:35:46.222691Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "5860", "status" => "failed", "timestamp" => 1788384927440, "type" => "tms_response"}, request_id: "5860", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:35:46.223] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"6212","status":"failed","timestamp":1788384927554,"type":"tms_response"} [2026-09-02 13:35:46.223] [INFO ] Processing file download response for device 28260702280001, request_id: 6212 [2026-09-02 13:35:46.226] [DEBUG] QUERY OK source="file_download_logs" db=2.0ms idle=5.1ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["6212"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:35:46.226] [INFO ] No file download log for request_id 6212; response not attached to a push [2026-09-02 13:35:46.229] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:35:46.228952Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "6212", "status" => "failed", "timestamp" => 1788384927554, "type" => "tms_response"}, request_id: "6212", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:35:46.229] [WARN ] Unexpected async result [2026-09-02 13:35:46.229] [WARN ] Unexpected async result [2026-09-02 13:35:46.229] [WARN ] Unexpected async result [2026-09-02 13:35:46.469] [INFO ] Running offline device check... [2026-09-02 13:35:46.469] [INFO ] Starting offline device check... [2026-09-02 13:35:46.471] [DEBUG] QUERY OK source="tms_terminals" db=1.1ms idle=243.8ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 [] ↳ TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1234 [2026-09-02 13:35:46.476] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=151.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [1] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:35:46.512] [DEBUG] QUERY OK source="tms_terminals" db=35.6ms queue=0.1ms idle=5.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 13:35:46], 1] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1283 [2026-09-02 13:35:46.512] [INFO ] Terminal 61250415798001 back online [2026-09-02 13:35:46.514] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=0.7ms idle=36.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [2] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:35:46.515] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=2.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [3] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:35:46.517] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms idle=1.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [4] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:35:46.522] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.5ms idle=4.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [5] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:35:46.524] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=6.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [6] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:35:46.529] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.3ms queue=0.1ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [7] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:35:46.531] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms queue=0.1ms idle=5.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [8] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:35:46.532] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [9] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:35:46.536] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.0ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [10] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:35:46.537] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=3.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [11] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:35:46.541] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms queue=0.1ms idle=3.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [12] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:35:46.544] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=6.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [13] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:35:46.548] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.1ms idle=4.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [14] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:35:46.550] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"169989","status":"failed","timestamp":1788384927674,"type":"tms_response"} [2026-09-02 13:35:46.550] [INFO ] Processing file download response for device 28260702280001, request_id: 169989 [2026-09-02 13:35:46.551] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=2.2ms queue=0.1ms idle=4.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [15] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:35:46.554] [DEBUG] QUERY OK source="file_download_logs" db=1.0ms queue=3.2ms idle=2.1ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["169989"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:35:46.554] [INFO ] No file download log for request_id 169989; response not attached to a push [2026-09-02 13:35:46.555] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:35:46.554918Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "169989", "status" => "failed", "timestamp" => 1788384927674, "type" => "tms_response"}, request_id: "169989", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:35:46.555] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms queue=2.8ms idle=0.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [16] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:35:46.562] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"14306","status":"failed","timestamp":1788384927784,"type":"tms_response"} [2026-09-02 13:35:46.562] [INFO ] Processing file download response for device 28260702280001, request_id: 14306 [2026-09-02 13:35:46.566] [DEBUG] QUERY OK source="file_download_logs" db=2.9ms idle=8.5ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["14306"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:35:46.566] [INFO ] No file download log for request_id 14306; response not attached to a push [2026-09-02 13:35:46.567] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:35:46.567102Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "14306", "status" => "failed", "timestamp" => 1788384927784, "type" => "tms_response"}, request_id: "14306", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:35:46.566] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=3.3ms queue=0.4ms idle=7.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [18] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:35:46.571] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"12162","status":"failed","timestamp":1788384927896,"type":"tms_response"} [2026-09-02 13:35:46.571] [INFO ] Processing file download response for device 28260702280001, request_id: 12162 [2026-09-02 13:35:46.571] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=0.1ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [19] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:35:46.574] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.5ms idle=4.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [20] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:35:46.574] [DEBUG] QUERY OK source="file_download_logs" db=2.8ms idle=5.1ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["12162"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:35:46.574] [INFO ] No file download log for request_id 12162; response not attached to a push [2026-09-02 13:35:46.574] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:35:46.574921Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "12162", "status" => "failed", "timestamp" => 1788384927896, "type" => "tms_response"}, request_id: "12162", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:35:46.576] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms queue=1.0ms idle=0.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [22] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:35:46.580] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=4.2ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [23] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:35:46.581] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=4.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [26] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:35:46.580] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"213794","status":"failed","timestamp":1788384928008,"type":"tms_response"} [2026-09-02 13:35:46.582] [INFO ] Processing file download response for device 28260702280001, request_id: 213794 [2026-09-02 13:35:46.582] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [29] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:35:46.585] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.4ms queue=1.1ms idle=0.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:35:46.587] [DEBUG] QUERY OK source="file_download_logs" db=4.1ms queue=0.2ms idle=0.9ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["213794"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:35:46.587] [INFO ] No file download log for request_id 213794; response not attached to a push [2026-09-02 13:35:46.587] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:35:46.587479Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "213794", "status" => "failed", "timestamp" => 1788384928008, "type" => "tms_response"}, request_id: "213794", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:35:46.617] [DEBUG] QUERY OK source="tms_terminals" db=31.8ms idle=0.2ms UPDATE `tms_terminals` SET `status` = ?, `updated_at` = ? WHERE `id` = ? ["online", ~N[2026-09-02 13:35:46], 33] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1283 [2026-09-02 13:35:46.617] [INFO ] Terminal 98251226730001 back online [2026-09-02 13:35:46.619] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.7ms queue=0.5ms idle=30.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [35] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:35:46.623] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=3.7ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [36] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:35:46.625] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms queue=0.1ms idle=4.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [37] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:35:46.625] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.9ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [39] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:35:46.626] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.4ms idle=1.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [42] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:35:46.629] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.9ms idle=1.2ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [43] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:35:46.631] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=3.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [44] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:35:46.632] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=2.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [45] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:35:46.634] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.4ms idle=2.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [46] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:35:46.634] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.1ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [47] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:35:46.636] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=0.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [48] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:35:46.637] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.3ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [49] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:35:46.639] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=1.8ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [51] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:35:46.640] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [53] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:35:46.642] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=2.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [55] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:35:46.643] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.8ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [60] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:35:46.644] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [61] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:35:46.645] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.1ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [62] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:35:46.646] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [63] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:35:46.647] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [64] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:35:46.648] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [65] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:35:46.650] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.7ms idle=1.3ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [67] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:35:46.651] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.0ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [69] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:35:46.652] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.3ms queue=0.1ms idle=1.5ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [71] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:35:46.653] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.0ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [74] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:35:46.655] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=1.4ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [78] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:35:46.656] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.6ms idle=2.1ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [80] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:35:46.658] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=1.2ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [81] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:35:46.659] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.5ms queue=0.2ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [82] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:35:46.660] [DEBUG] QUERY OK source="tms_terminal_status_logs" db=0.9ms idle=1.6ms SELECT t0.`id`, t0.`oid`, t0.`upload_time`, t0.`terminal_id`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminal_status_logs` AS t0 WHERE (t0.`terminal_id` = ?) ORDER BY t0.`inserted_at` DESC LIMIT 1 [83] ↳ anonymous fn/3 in TmsCore.TerminalManagement.check_offline_devices/0, at: lib/tms_core/terminal_management.ex:1249 [2026-09-02 13:35:46.661] [INFO ] Offline device check completed. Found 51 offline devices, updated 2 statuses. [2026-09-02 13:35:46.661] [INFO ] Offline device check completed successfully [2026-09-02 13:35:46.966] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"6276","status":"failed","timestamp":1788384928121,"type":"tms_response"} [2026-09-02 13:35:46.966] [INFO ] Processing file download response for device 28260702280001, request_id: 6276 [2026-09-02 13:35:46.974] [DEBUG] QUERY OK source="file_download_logs" db=5.8ms idle=308.2ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["6276"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:35:46.974] [INFO ] No file download log for request_id 6276; response not attached to a push [2026-09-02 13:35:46.974] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:35:46.974497Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "6276", "status" => "failed", "timestamp" => 1788384928121, "type" => "tms_response"}, request_id: "6276", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:35:46.974] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"25507","status":"failed","timestamp":1788384928233,"type":"tms_response"} [2026-09-02 13:35:46.974] [INFO ] Processing file download response for device 28260702280001, request_id: 25507 [2026-09-02 13:35:46.982] [DEBUG] QUERY OK source="file_download_logs" db=7.0ms queue=0.1ms idle=314.1ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["25507"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:35:46.982] [INFO ] No file download log for request_id 25507; response not attached to a push [2026-09-02 13:35:46.982] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:35:46.982495Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "25507", "status" => "failed", "timestamp" => 1788384928233, "type" => "tms_response"}, request_id: "25507", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:35:46.982] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"3653","status":"failed","timestamp":1788384928347,"type":"tms_response"} [2026-09-02 13:35:46.982] [INFO ] Processing file download response for device 28260702280001, request_id: 3653 [2026-09-02 13:35:46.987] [DEBUG] QUERY OK source="file_download_logs" db=4.3ms idle=9.5ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["3653"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:35:46.987] [INFO ] No file download log for request_id 3653; response not attached to a push [2026-09-02 13:35:46.988] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:35:46.988223Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "3653", "status" => "failed", "timestamp" => 1788384928347, "type" => "tms_response"}, request_id: "3653", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:35:47.366] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"170085","status":"failed","timestamp":1788384928460,"type":"tms_response"} [2026-09-02 13:35:47.366] [INFO ] Processing file download response for device 28260702280001, request_id: 170085 [2026-09-02 13:35:47.369] [DEBUG] QUERY OK source="file_download_logs" db=0.3ms idle=381.7ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["170085"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:35:47.369] [INFO ] No file download log for request_id 170085; response not attached to a push [2026-09-02 13:35:47.369] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:35:47.369589Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "170085", "status" => "failed", "timestamp" => 1788384928460, "type" => "tms_response"}, request_id: "170085", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"} [2026-09-02 13:35:47.376] [INFO ] Received device response from 28260702280001: {"error_code":"ERR_BAD_REQUEST","message":"Missing downloadUrl","requestId":"11619","status":"failed","timestamp":1788384928572,"type":"tms_response"} [2026-09-02 13:35:47.377] [INFO ] Processing file download response for device 28260702280001, request_id: 11619 [2026-09-02 13:35:47.380] [DEBUG] QUERY OK source="file_download_logs" db=1.6ms queue=0.3ms idle=48.4ms SELECT f0.`id`, f0.`device_serial`, f0.`request_id`, f0.`command`, f0.`file_name`, f0.`file_category`, f0.`download_url`, f0.`file_size`, f0.`status`, f0.`error_code`, f0.`error_message`, f0.`sent_at`, f0.`responded_at`, f0.`command_payload`, f0.`response_payload`, f0.`file_download_job_id`, f0.`inserted_at`, f0.`updated_at` FROM `file_download_logs` AS f0 WHERE (f0.`request_id` = ?) ["11619"] ↳ TmsCore.TerminalManagement.record_file_download_response/2, at: lib/tms_core/terminal_management.ex:742 [2026-09-02 13:35:47.380] [INFO ] No file download log for request_id 11619; response not attached to a push [2026-09-02 13:35:47.380] [INFO ] File download response log: %{command: "file_download_response", status: "failed", timestamp: ~U[2026-09-02 13:35:47.380315Z], response: %{"error_code" => "ERR_BAD_REQUEST", "message" => "Missing downloadUrl", "requestId" => "11619", "status" => "failed", "timestamp" => 1788384928572, "type" => "tms_response"}, request_id: "11619", error_message: "ERR_BAD_REQUEST: Missing downloadUrl", device_serial: "28260702280001"}